agentinputlab 0.1.0a1__py3-none-any.whl

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 (469) hide show
  1. agentinputlab/__init__.py +28 -0
  2. agentinputlab/algorithms/__init__.py +6 -0
  3. agentinputlab/algorithms/acquire/__init__.py +145 -0
  4. agentinputlab/algorithms/acquire/adaptive_rag/__init__.py +43 -0
  5. agentinputlab/algorithms/acquire/adaptive_rag/replay.py +367 -0
  6. agentinputlab/algorithms/acquire/adaptive_rag/runtime.py +1202 -0
  7. agentinputlab/algorithms/acquire/adaptive_rag_common_support.py +542 -0
  8. agentinputlab/algorithms/acquire/hyde.py +296 -0
  9. agentinputlab/algorithms/acquire/hyde_controlled.py +200 -0
  10. agentinputlab/algorithms/acquire/hyde_external.py +148 -0
  11. agentinputlab/algorithms/acquire/ircot.py +28 -0
  12. agentinputlab/algorithms/acquire/ircot_common_support.py +478 -0
  13. agentinputlab/algorithms/acquire/ircot_native.py +355 -0
  14. agentinputlab/algorithms/acquire/ircot_replay.py +327 -0
  15. agentinputlab/algorithms/acquire/qrag/__init__.py +79 -0
  16. agentinputlab/algorithms/acquire/qrag/bridge.py +828 -0
  17. agentinputlab/algorithms/acquire/qrag/common_support.py +891 -0
  18. agentinputlab/algorithms/acquire/qrag/native_axis.py +71 -0
  19. agentinputlab/algorithms/acquire/qrag/reader_adapter.py +139 -0
  20. agentinputlab/algorithms/acquire/r2ag/__init__.py +57 -0
  21. agentinputlab/algorithms/acquire/r2ag/bridge.py +1312 -0
  22. agentinputlab/algorithms/acquire/r2ag/common_support.py +1029 -0
  23. agentinputlab/algorithms/acquire/r2ag/socket_runtime.py +255 -0
  24. agentinputlab/algorithms/clarify/__init__.py +61 -0
  25. agentinputlab/algorithms/clarify/_structured.py +64 -0
  26. agentinputlab/algorithms/clarify/active_task_disambiguation.py +371 -0
  27. agentinputlab/algorithms/clarify/ask_or_assume/__init__.py +17 -0
  28. agentinputlab/algorithms/clarify/ask_or_assume/monitor.py +410 -0
  29. agentinputlab/algorithms/clarify/future_turns.py +379 -0
  30. agentinputlab/algorithms/clarify/udcs.py +255 -0
  31. agentinputlab/algorithms/clarify/udcs_deterministic.py +196 -0
  32. agentinputlab/algorithms/curate/__init__.py +65 -0
  33. agentinputlab/algorithms/curate/acon/__init__.py +27 -0
  34. agentinputlab/algorithms/curate/acon/common.py +284 -0
  35. agentinputlab/algorithms/curate/acon/common_support.py +136 -0
  36. agentinputlab/algorithms/curate/acon/history_bridge.py +309 -0
  37. agentinputlab/algorithms/curate/acon/observation_bridge.py +290 -0
  38. agentinputlab/algorithms/curate/llmlingua/__init__.py +30 -0
  39. agentinputlab/algorithms/curate/llmlingua/adapters.py +537 -0
  40. agentinputlab/algorithms/curate/llmlingua/budget.py +48 -0
  41. agentinputlab/algorithms/curate/llmlingua/controlled.py +175 -0
  42. agentinputlab/algorithms/curate/llmlingua/multilingual.py +105 -0
  43. agentinputlab/algorithms/curate/llmlingua/span_map.py +167 -0
  44. agentinputlab/algorithms/curate/recomp/__init__.py +47 -0
  45. agentinputlab/algorithms/curate/recomp/external.py +1129 -0
  46. agentinputlab/algorithms/curate/recomp/selective.py +304 -0
  47. agentinputlab/algorithms/decompose/__init__.py +107 -0
  48. agentinputlab/algorithms/decompose/decomp/__init__.py +53 -0
  49. agentinputlab/algorithms/decompose/decomp/common_support.py +478 -0
  50. agentinputlab/algorithms/decompose/decomp/planner_component.py +199 -0
  51. agentinputlab/algorithms/decompose/decomp/worker_bridge.py +416 -0
  52. agentinputlab/algorithms/decompose/llm_compiler/__init__.py +35 -0
  53. agentinputlab/algorithms/decompose/llm_compiler/bridge.py +520 -0
  54. agentinputlab/algorithms/decompose/llm_compiler/common_support.py +504 -0
  55. agentinputlab/algorithms/decompose/plan_and_budget/__init__.py +43 -0
  56. agentinputlab/algorithms/decompose/plan_and_budget/cached_soft_budget.py +362 -0
  57. agentinputlab/algorithms/decompose/plan_and_budget/decomposer_component.py +107 -0
  58. agentinputlab/algorithms/decompose/plan_and_budget/full.py +205 -0
  59. agentinputlab/algorithms/decompose/plan_and_budget/hard_cap.py +246 -0
  60. agentinputlab/algorithms/decompose/plan_and_budget/regenerated_soft_budget.py +448 -0
  61. agentinputlab/algorithms/decompose/plan_and_solve/__init__.py +33 -0
  62. agentinputlab/algorithms/decompose/plan_and_solve/plan_component.py +192 -0
  63. agentinputlab/algorithms/decompose/plan_and_solve/ps_prompt.py +127 -0
  64. agentinputlab/algorithms/decompose/self_ask/__init__.py +27 -0
  65. agentinputlab/algorithms/decompose/self_ask/loop.py +362 -0
  66. agentinputlab/algorithms/decompose/self_ask/planner_component.py +117 -0
  67. agentinputlab/algorithms/reformulate/__init__.py +85 -0
  68. agentinputlab/algorithms/reformulate/infocqr/__init__.py +40 -0
  69. agentinputlab/algorithms/reformulate/infocqr/cache_replay.py +362 -0
  70. agentinputlab/algorithms/reformulate/infocqr/external.py +675 -0
  71. agentinputlab/algorithms/reformulate/infocqr/student.py +189 -0
  72. agentinputlab/algorithms/reformulate/query2doc/__init__.py +42 -0
  73. agentinputlab/algorithms/reformulate/query2doc/controlled_live.py +190 -0
  74. agentinputlab/algorithms/reformulate/query2doc/models.py +95 -0
  75. agentinputlab/algorithms/reformulate/query2doc/official_cached.py +335 -0
  76. agentinputlab/algorithms/reformulate/query2doc/querygym_bridge.py +223 -0
  77. agentinputlab/algorithms/reformulate/query2doc/querygym_runtime.py +326 -0
  78. agentinputlab/algorithms/reformulate/reformer/__init__.py +23 -0
  79. agentinputlab/algorithms/reformulate/reformer/external.py +417 -0
  80. agentinputlab/algorithms/reformulate/rrr.py +696 -0
  81. agentinputlab/annotation/__init__.py +5 -0
  82. agentinputlab/annotation/independent.py +428 -0
  83. agentinputlab/annotation/server.py +233 -0
  84. agentinputlab/annotation/static/app.js +121 -0
  85. agentinputlab/annotation/static/index.html +60 -0
  86. agentinputlab/annotation/static/review.css +2 -0
  87. agentinputlab/annotation/static/review.html +10 -0
  88. agentinputlab/annotation/static/review.js +11 -0
  89. agentinputlab/annotation/static/styles.css +55 -0
  90. agentinputlab/annotation/store.py +444 -0
  91. agentinputlab/api.py +368 -0
  92. agentinputlab/artifacts/__init__.py +15 -0
  93. agentinputlab/artifacts/json_file.py +104 -0
  94. agentinputlab/artifacts/manifest.py +98 -0
  95. agentinputlab/artifacts/store.py +157 -0
  96. agentinputlab/backends/__init__.py +98 -0
  97. agentinputlab/backends/embedding/__init__.py +25 -0
  98. agentinputlab/backends/embedding/base.py +145 -0
  99. agentinputlab/backends/embedding/callable.py +75 -0
  100. agentinputlab/backends/embedding/replay.py +129 -0
  101. agentinputlab/backends/llm/__init__.py +31 -0
  102. agentinputlab/backends/llm/base.py +149 -0
  103. agentinputlab/backends/llm/callable.py +108 -0
  104. agentinputlab/backends/llm/decomp_completion.py +88 -0
  105. agentinputlab/backends/llm/final_content_stop.py +72 -0
  106. agentinputlab/backends/llm/gpt_oss_final_channel.py +84 -0
  107. agentinputlab/backends/llm/openai_compatible.py +332 -0
  108. agentinputlab/backends/llm/transformers.py +171 -0
  109. agentinputlab/backends/retrieval/__init__.py +35 -0
  110. agentinputlab/backends/retrieval/base.py +50 -0
  111. agentinputlab/backends/retrieval/dense.py +777 -0
  112. agentinputlab/backends/retrieval/memory.py +119 -0
  113. agentinputlab/backends/retrieval/sqlite_fts.py +155 -0
  114. agentinputlab/backends/user/__init__.py +15 -0
  115. agentinputlab/backends/user/base.py +66 -0
  116. agentinputlab/backends/user/callable.py +54 -0
  117. agentinputlab/backends/user/replay.py +89 -0
  118. agentinputlab/backends/vector.py +38 -0
  119. agentinputlab/benchmarks/__init__.py +246 -0
  120. agentinputlab/benchmarks/acquisition.py +106 -0
  121. agentinputlab/benchmarks/ale.py +540 -0
  122. agentinputlab/benchmarks/appworld_ul.py +669 -0
  123. agentinputlab/benchmarks/assets.py +226 -0
  124. agentinputlab/benchmarks/base.py +68 -0
  125. agentinputlab/benchmarks/beir_archive.py +235 -0
  126. agentinputlab/benchmarks/beir_sample.py +269 -0
  127. agentinputlab/benchmarks/bfcl_native.py +245 -0
  128. agentinputlab/benchmarks/bfcl_v3.py +607 -0
  129. agentinputlab/benchmarks/cache.py +218 -0
  130. agentinputlab/benchmarks/clariq.py +203 -0
  131. agentinputlab/benchmarks/data/registry.json +321 -0
  132. agentinputlab/benchmarks/data/smoke_assets.json +511 -0
  133. agentinputlab/benchmarks/data/statebench_v0_8_1_task_ids.json +475 -0
  134. agentinputlab/benchmarks/data/toolsandbox_165848b_scenario_names.json +1 -0
  135. agentinputlab/benchmarks/execution.py +1111 -0
  136. agentinputlab/benchmarks/interactive.py +257 -0
  137. agentinputlab/benchmarks/ir_query.py +204 -0
  138. agentinputlab/benchmarks/longbench.py +203 -0
  139. agentinputlab/benchmarks/paired_replay.py +479 -0
  140. agentinputlab/benchmarks/preprocess.py +2313 -0
  141. agentinputlab/benchmarks/production.py +236 -0
  142. agentinputlab/benchmarks/qa.py +963 -0
  143. agentinputlab/benchmarks/registry.py +110 -0
  144. agentinputlab/benchmarks/retrieval.py +459 -0
  145. agentinputlab/benchmarks/runtime.py +509 -0
  146. agentinputlab/benchmarks/statebench.py +938 -0
  147. agentinputlab/benchmarks/tau3.py +725 -0
  148. agentinputlab/benchmarks/toolsandbox.py +626 -0
  149. agentinputlab/benchmarks/trec_dl_sample.py +263 -0
  150. agentinputlab/campaign.py +654 -0
  151. agentinputlab/campaign_runner.py +953 -0
  152. agentinputlab/cli/__init__.py +6 -0
  153. agentinputlab/cli/main.py +933 -0
  154. agentinputlab/connectors/__init__.py +46 -0
  155. agentinputlab/connectors/knowledge/__init__.py +4 -0
  156. agentinputlab/connectors/tools/__init__.py +30 -0
  157. agentinputlab/connectors/tools/base.py +57 -0
  158. agentinputlab/connectors/tools/mcp.py +222 -0
  159. agentinputlab/connectors/tools/memory.py +41 -0
  160. agentinputlab/connectors/tools/openapi.py +695 -0
  161. agentinputlab/connectors/tools/schema.py +102 -0
  162. agentinputlab/contracts/__init__.py +91 -0
  163. agentinputlab/contracts/availability.py +24 -0
  164. agentinputlab/contracts/dependency.py +58 -0
  165. agentinputlab/contracts/enums.py +82 -0
  166. agentinputlab/contracts/errors.py +63 -0
  167. agentinputlab/contracts/evidence.py +43 -0
  168. agentinputlab/contracts/intent.py +110 -0
  169. agentinputlab/contracts/lifecycle.py +164 -0
  170. agentinputlab/contracts/patch.py +167 -0
  171. agentinputlab/contracts/serialization.py +93 -0
  172. agentinputlab/contracts/state.py +127 -0
  173. agentinputlab/contracts/trace.py +59 -0
  174. agentinputlab/contracts/worker.py +42 -0
  175. agentinputlab/core/__init__.py +7 -0
  176. agentinputlab/data/__init__.py +32 -0
  177. agentinputlab/data/checksums.py +9 -0
  178. agentinputlab/data/downloader.py +235 -0
  179. agentinputlab/data/http.py +171 -0
  180. agentinputlab/data/index.py +21 -0
  181. agentinputlab/data/overlap.py +28 -0
  182. agentinputlab/data/preprocess.py +32 -0
  183. agentinputlab/data/storage.py +57 -0
  184. agentinputlab/data/trec_sample.py +427 -0
  185. agentinputlab/evaluation/__init__.py +5 -0
  186. agentinputlab/evaluation/outcomes.py +32 -0
  187. agentinputlab/experiments/__init__.py +278 -0
  188. agentinputlab/experiments/analysis.py +981 -0
  189. agentinputlab/experiments/artifacts.py +687 -0
  190. agentinputlab/experiments/automatic_measurement.py +678 -0
  191. agentinputlab/experiments/auxiliary_matrix.py +203 -0
  192. agentinputlab/experiments/bindings.py +430 -0
  193. agentinputlab/experiments/blueprints.py +147 -0
  194. agentinputlab/experiments/builders/__init__.py +45 -0
  195. agentinputlab/experiments/builders/executable_external_payload.py +423 -0
  196. agentinputlab/experiments/builders/external_process_arena.py +1018 -0
  197. agentinputlab/experiments/builders/registry_intervention.py +463 -0
  198. agentinputlab/experiments/cli.py +158 -0
  199. agentinputlab/experiments/controls.py +340 -0
  200. agentinputlab/experiments/driver_guard.py +205 -0
  201. agentinputlab/experiments/drivers/__init__.py +89 -0
  202. agentinputlab/experiments/drivers/external_arena.py +2908 -0
  203. agentinputlab/experiments/drivers/method_process.py +662 -0
  204. agentinputlab/experiments/drivers/parity_process.py +1484 -0
  205. agentinputlab/experiments/drivers/static_production.py +1574 -0
  206. agentinputlab/experiments/executor.py +448 -0
  207. agentinputlab/experiments/loader.py +605 -0
  208. agentinputlab/experiments/measurement.py +675 -0
  209. agentinputlab/experiments/paper_analysis.py +1818 -0
  210. agentinputlab/experiments/parity_identity.py +605 -0
  211. agentinputlab/experiments/plan.py +277 -0
  212. agentinputlab/experiments/production_builders.py +3739 -0
  213. agentinputlab/experiments/readiness.py +432 -0
  214. agentinputlab/experiments/schema.py +514 -0
  215. agentinputlab/experiments/secrets.py +177 -0
  216. agentinputlab/experiments/stateful_analysis.py +1738 -0
  217. agentinputlab/experiments/transfer_analysis.py +1316 -0
  218. agentinputlab/experiments/unseen_analysis.py +1025 -0
  219. agentinputlab/integrations/__init__.py +1 -0
  220. agentinputlab/integrations/action_space/__init__.py +1 -0
  221. agentinputlab/integrations/external_workers/__init__.py +76 -0
  222. agentinputlab/integrations/external_workers/ace.py +431 -0
  223. agentinputlab/integrations/external_workers/base.py +181 -0
  224. agentinputlab/integrations/external_workers/decomp_live.py +249 -0
  225. agentinputlab/integrations/external_workers/decomp_planner.py +30 -0
  226. agentinputlab/integrations/external_workers/infocqr_student.py +280 -0
  227. agentinputlab/integrations/external_workers/ircot.py +576 -0
  228. agentinputlab/integrations/external_workers/llmcompiler_live.py +360 -0
  229. agentinputlab/integrations/external_workers/longllmlingua.py +162 -0
  230. agentinputlab/integrations/external_workers/method.py +314 -0
  231. agentinputlab/integrations/external_workers/process.py +678 -0
  232. agentinputlab/integrations/external_workers/supervisor.py +1071 -0
  233. agentinputlab/integrations/full_architecture/__init__.py +1 -0
  234. agentinputlab/integrations/full_architecture/hyde.py +212 -0
  235. agentinputlab/integrations/full_architecture/plan_and_budget.py +188 -0
  236. agentinputlab/integrations/live_history.py +222 -0
  237. agentinputlab/integrations/prompt_optimization/__init__.py +1 -0
  238. agentinputlab/integrations/training/__init__.py +1 -0
  239. agentinputlab/metrics/__init__.py +50 -0
  240. agentinputlab/metrics/catalog.py +313 -0
  241. agentinputlab/metrics/harm.py +95 -0
  242. agentinputlab/metrics/paired.py +40 -0
  243. agentinputlab/metrics/qa.py +76 -0
  244. agentinputlab/metrics/text.py +33 -0
  245. agentinputlab/metrics/third_party.py +161 -0
  246. agentinputlab/models/__init__.py +4 -0
  247. agentinputlab/observability/__init__.py +56 -0
  248. agentinputlab/observability/budget.py +316 -0
  249. agentinputlab/observability/instrumentation.py +754 -0
  250. agentinputlab/observability/models.py +403 -0
  251. agentinputlab/observability/monitor.py +380 -0
  252. agentinputlab/optimizers/__init__.py +1 -0
  253. agentinputlab/optimizers/clarify/__init__.py +12 -0
  254. agentinputlab/optimizers/context/__init__.py +22 -0
  255. agentinputlab/optimizers/decompose/__init__.py +64 -0
  256. agentinputlab/optimizers/evidence/__init__.py +22 -0
  257. agentinputlab/optimizers/rewrite/__init__.py +30 -0
  258. agentinputlab/parity/__init__.py +5 -0
  259. agentinputlab/parity/base.py +206 -0
  260. agentinputlab/production_campaign.py +763 -0
  261. agentinputlab/py.typed +1 -0
  262. agentinputlab/recipes/__init__.py +333 -0
  263. agentinputlab/recipes/ace.py +418 -0
  264. agentinputlab/recipes/ace_bfcl.py +273 -0
  265. agentinputlab/recipes/ace_common_support.py +169 -0
  266. agentinputlab/recipes/ace_native_plan.py +322 -0
  267. agentinputlab/recipes/ace_online.py +711 -0
  268. agentinputlab/recipes/ace_retrieval.py +330 -0
  269. agentinputlab/recipes/ace_statebench.py +382 -0
  270. agentinputlab/recipes/ace_tau.py +463 -0
  271. agentinputlab/recipes/ace_toolsandbox.py +432 -0
  272. agentinputlab/recipes/acon_guideline.py +22 -0
  273. agentinputlab/recipes/adaptive_rag.py +822 -0
  274. agentinputlab/recipes/llmlingua2_inference.py +146 -0
  275. agentinputlab/recipes/llmlingua2_training.py +796 -0
  276. agentinputlab/recipes/mce.py +1486 -0
  277. agentinputlab/recipes/mce_final.py +335 -0
  278. agentinputlab/recipes/mce_text_fit.py +499 -0
  279. agentinputlab/recipes/mce_text_only.py +298 -0
  280. agentinputlab/recipes/qrag.py +729 -0
  281. agentinputlab/recipes/qrag_inference.py +364 -0
  282. agentinputlab/recipes/r2ag_features.py +236 -0
  283. agentinputlab/recipes/r2ag_inference.py +503 -0
  284. agentinputlab/recipes/r2ag_training.py +948 -0
  285. agentinputlab/recipes/recomp_abstractive.py +592 -0
  286. agentinputlab/recipes/recomp_extractive.py +525 -0
  287. agentinputlab/recipes/reformer.py +17 -0
  288. agentinputlab/recipes/rqrag.py +1516 -0
  289. agentinputlab/recipes/rqrag_common_support.py +193 -0
  290. agentinputlab/recipes/rqrag_completion.py +147 -0
  291. agentinputlab/recipes/skillopt.py +462 -0
  292. agentinputlab/recipes/skillopt_common_support.py +154 -0
  293. agentinputlab/recipes/skillopt_environment.py +165 -0
  294. agentinputlab/recipes/skillopt_environment_cli.py +5 -0
  295. agentinputlab/recipes/skillopt_retrieval.py +188 -0
  296. agentinputlab/recipes/smartsearch.py +897 -0
  297. agentinputlab/recipes/smartsearch_curriculum.py +283 -0
  298. agentinputlab/recipes/smartsearch_grpo_contracts.py +58 -0
  299. agentinputlab/recipes/smartsearch_grpo_data.py +314 -0
  300. agentinputlab/recipes/smartsearch_grpo_meter.py +324 -0
  301. agentinputlab/recipes/smartsearch_grpo_prefix.py +144 -0
  302. agentinputlab/recipes/smartsearch_grpo_rollout.py +119 -0
  303. agentinputlab/recipes/smartsearch_grpo_tools.py +364 -0
  304. agentinputlab/recipes/smartsearch_grpo_training.py +305 -0
  305. agentinputlab/recipes/smartsearch_grpo_transport.py +248 -0
  306. agentinputlab/recipes/smartsearch_grpo_worker.py +364 -0
  307. agentinputlab/recipes/smartsearch_inference.py +524 -0
  308. agentinputlab/recipes/smartsearch_native_data.py +172 -0
  309. agentinputlab/recipes/smartsearch_policy.py +616 -0
  310. agentinputlab/recipes/smartsearch_policy_worker.py +9 -0
  311. agentinputlab/recipes/smartsearch_sampling.py +232 -0
  312. agentinputlab/recipes/smartsearch_teacher.py +203 -0
  313. agentinputlab/recipes/smartsearch_training.py +265 -0
  314. agentinputlab/registry/__init__.py +46 -0
  315. agentinputlab/registry/beta.py +727 -0
  316. agentinputlab/registry/data/algorithms.json +1959 -0
  317. agentinputlab/registry/data/auxiliary_method_profiles.json +34 -0
  318. agentinputlab/registry/loader.py +100 -0
  319. agentinputlab/registry/result_manifest.py +184 -0
  320. agentinputlab/registry/runtime.py +195 -0
  321. agentinputlab/registry/schema.py +449 -0
  322. agentinputlab/runner/__init__.py +30 -0
  323. agentinputlab/runner/balance.py +248 -0
  324. agentinputlab/runner/cache.py +135 -0
  325. agentinputlab/runner/composite.py +130 -0
  326. agentinputlab/runner/engine.py +285 -0
  327. agentinputlab/runner/runtime_guard.py +268 -0
  328. agentinputlab/runner/worker.py +80 -0
  329. agentinputlab/runtime_bootstrap.py +288 -0
  330. agentinputlab/selectors/__init__.py +196 -0
  331. agentinputlab/selectors/advanced.py +1514 -0
  332. agentinputlab/selectors/artifacts.py +1087 -0
  333. agentinputlab/selectors/base.py +112 -0
  334. agentinputlab/selectors/campaigns.py +1893 -0
  335. agentinputlab/selectors/catalog.py +86 -0
  336. agentinputlab/selectors/discovery.py +1860 -0
  337. agentinputlab/selectors/evaluation.py +1348 -0
  338. agentinputlab/selectors/features.py +383 -0
  339. agentinputlab/selectors/learned.py +502 -0
  340. agentinputlab/selectors/no_op.py +28 -0
  341. agentinputlab/selectors/outcome_table.py +475 -0
  342. agentinputlab/selectors/producer.py +853 -0
  343. agentinputlab/selectors/rules.py +109 -0
  344. agentinputlab/selectors/runtime.py +420 -0
  345. agentinputlab/studies/__init__.py +16 -0
  346. agentinputlab/studies/design.py +165 -0
  347. agentinputlab/studies/paired.py +322 -0
  348. agentinputlab/studio/__init__.py +6 -0
  349. agentinputlab/studio/campaigns.py +819 -0
  350. agentinputlab/studio/engine.py +1408 -0
  351. agentinputlab/studio/model_backends.py +425 -0
  352. agentinputlab/studio/prepared.py +410 -0
  353. agentinputlab/studio/server.py +613 -0
  354. agentinputlab/studio/static/app.js +397 -0
  355. agentinputlab/studio/static/campaigns.html +175 -0
  356. agentinputlab/studio/static/campaigns.js +426 -0
  357. agentinputlab/studio/static/index.html +192 -0
  358. agentinputlab/studio/static/result.html +103 -0
  359. agentinputlab/studio/static/result.js +273 -0
  360. agentinputlab/studio/static/styles.css +467 -0
  361. agentinputlab-0.1.0a1.data/data/share/agentinputlab/CITATION.cff +22 -0
  362. agentinputlab-0.1.0a1.dist-info/METADATA +392 -0
  363. agentinputlab-0.1.0a1.dist-info/RECORD +469 -0
  364. agentinputlab-0.1.0a1.dist-info/WHEEL +5 -0
  365. agentinputlab-0.1.0a1.dist-info/entry_points.txt +6 -0
  366. agentinputlab-0.1.0a1.dist-info/licenses/LICENSE +21 -0
  367. agentinputlab-0.1.0a1.dist-info/licenses/NOTICE +31 -0
  368. agentinputlab-0.1.0a1.dist-info/licenses/THIRD_PARTY_NOTICES.md +94 -0
  369. agentinputlab-0.1.0a1.dist-info/top_level.txt +2 -0
  370. workers/README.md +94 -0
  371. workers/ace/README.md +261 -0
  372. workers/ace/__init__.py +1 -0
  373. workers/ace/compatibility_manifest.json +39 -0
  374. workers/ace/driver.py +1682 -0
  375. workers/acon/README.md +215 -0
  376. workers/acon/__init__.py +5 -0
  377. workers/acon/compatibility_manifest.json +93 -0
  378. workers/acon/driver.py +1859 -0
  379. workers/acon/fitted.py +395 -0
  380. workers/acon/guideline.py +470 -0
  381. workers/acon/guideline_source_manifest.json +20 -0
  382. workers/adaptive_rag/README.md +96 -0
  383. workers/adaptive_rag/__init__.py +15 -0
  384. workers/adaptive_rag/compatibility_manifest.json +61 -0
  385. workers/adaptive_rag/driver.py +1470 -0
  386. workers/adaptive_rag/fixture_runtime.py +163 -0
  387. workers/adaptive_rag/runtime.py +252 -0
  388. workers/ask_or_assume/README.md +124 -0
  389. workers/ask_or_assume/__init__.py +1 -0
  390. workers/ask_or_assume/compatibility_manifest.json +36 -0
  391. workers/ask_or_assume/driver.py +1227 -0
  392. workers/decomp/README.md +133 -0
  393. workers/decomp/UPSTREAM_LICENSE.Apache-2.0.txt +201 -0
  394. workers/decomp/__init__.py +5 -0
  395. workers/decomp/compatibility_manifest.json +205 -0
  396. workers/decomp/driver.py +1015 -0
  397. workers/decomp/live.py +137 -0
  398. workers/decomp/runtime.py +231 -0
  399. workers/infocqr/README.md +106 -0
  400. workers/infocqr/__init__.py +1 -0
  401. workers/infocqr/compatibility_manifest.json +84 -0
  402. workers/infocqr/driver.py +1766 -0
  403. workers/ircot/README.md +167 -0
  404. workers/ircot/__init__.py +7 -0
  405. workers/ircot/compatibility_manifest.json +121 -0
  406. workers/ircot/controlled.py +457 -0
  407. workers/ircot/driver.py +1373 -0
  408. workers/ircot/fixture_bindings.json +39 -0
  409. workers/ircot/fixture_config.json +48 -0
  410. workers/ircot/fixture_prompt.txt +2 -0
  411. workers/ircot/native_qa.py +398 -0
  412. workers/ircot/qa_compatibility_manifest.json +57 -0
  413. workers/ircot/runtime.py +97 -0
  414. workers/llmcompiler/README.md +160 -0
  415. workers/llmcompiler/__init__.py +1 -0
  416. workers/llmcompiler/compatibility_manifest.json +45 -0
  417. workers/llmcompiler/driver.py +1514 -0
  418. workers/llmcompiler/export_prompts.py +74 -0
  419. workers/llmcompiler/live.py +174 -0
  420. workers/llmcompiler/patch_manifest.json +147 -0
  421. workers/mce/README.md +198 -0
  422. workers/mce/__init__.py +29 -0
  423. workers/mce/compatibility_manifest.json +115 -0
  424. workers/mce/driver.py +2585 -0
  425. workers/mce/final_eval.py +173 -0
  426. workers/official_arenas/README.md +25 -0
  427. workers/official_arenas/__init__.py +1 -0
  428. workers/official_arenas/capture_records.py +110 -0
  429. workers/official_arenas/driver.py +619 -0
  430. workers/official_arenas/protocol.py +334 -0
  431. workers/official_arenas/providers/__init__.py +1 -0
  432. workers/official_arenas/providers/_live_history.py +228 -0
  433. workers/official_arenas/providers/_message_compat.py +77 -0
  434. workers/official_arenas/providers/appworld_ul.py +196 -0
  435. workers/official_arenas/providers/fixture.py +112 -0
  436. workers/official_arenas/providers/statebench.py +960 -0
  437. workers/official_arenas/providers/tau3.py +1672 -0
  438. workers/official_arenas/providers/tau_retail.py +586 -0
  439. workers/official_arenas/providers/toolsandbox.py +1321 -0
  440. workers/official_arenas/providers/tooltalk.py +699 -0
  441. workers/official_arenas/retail_capture.py +188 -0
  442. workers/official_arenas/retail_driver.py +275 -0
  443. workers/qrag/README.md +172 -0
  444. workers/qrag/__init__.py +1 -0
  445. workers/qrag/compatibility_manifest.json +64 -0
  446. workers/qrag/driver.py +673 -0
  447. workers/r2ag/README.md +154 -0
  448. workers/r2ag/__init__.py +5 -0
  449. workers/r2ag/compatibility_manifest.json +55 -0
  450. workers/r2ag/driver.py +1287 -0
  451. workers/r2ag/feature_schema.json +8 -0
  452. workers/r2ag/runtime.py +589 -0
  453. workers/recomp/README.md +120 -0
  454. workers/recomp/__init__.py +1 -0
  455. workers/recomp/compatibility_manifest.json +43 -0
  456. workers/recomp/driver.py +1653 -0
  457. workers/reformer/README.md +125 -0
  458. workers/reformer/__init__.py +1 -0
  459. workers/reformer/compatibility_manifest.json +68 -0
  460. workers/reformer/driver.py +1459 -0
  461. workers/reformer/induction.py +457 -0
  462. workers/rrr/README.md +126 -0
  463. workers/rrr/__init__.py +1 -0
  464. workers/rrr/compatibility_manifest.json +57 -0
  465. workers/rrr/driver.py +1133 -0
  466. workers/smartsearch/README.md +331 -0
  467. workers/smartsearch/__init__.py +1 -0
  468. workers/smartsearch/compatibility_manifest.json +41 -0
  469. workers/smartsearch/driver.py +1643 -0
@@ -0,0 +1,371 @@
1
+ """Expected-information-gain clarification from Active Task Disambiguation."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import hashlib
6
+ import math
7
+ from collections import Counter
8
+ from collections.abc import Mapping
9
+ from dataclasses import dataclass
10
+ from typing import Any
11
+
12
+ from agentinputlab.backends.llm import GenerationRequest, LLMBackend, ModelCapability
13
+ from agentinputlab.backends.llm.base import require_capabilities
14
+ from agentinputlab.contracts import (
15
+ AlgorithmOutputError,
16
+ BudgetExceededError,
17
+ ExecutionTrace,
18
+ ExternalDependencyError,
19
+ FrozenAgentState,
20
+ InputPatch,
21
+ InterventionContext,
22
+ PatchOp,
23
+ PatchOperation,
24
+ SemanticFamily,
25
+ TraceEvent,
26
+ TracePhase,
27
+ ValidationError,
28
+ )
29
+
30
+ from ._structured import parse_json_object, string_list, visible_problem
31
+ from .future_turns import _usage_counters
32
+
33
+ ACTIVE_TASK_DISAMBIGUATION_UPSTREAM_COMMIT = "4c8ecb4d4ffdbffcc611366743fc1e2461037772"
34
+ ACTIVE_TASK_DISAMBIGUATION_RELEASE = "clarify.active_task_disambiguation.eig_uniform"
35
+ ACTIVE_TASK_DISAMBIGUATION_PROTOCOL = "agentinputlab.active-task-disambiguation.v1"
36
+ ACTIVE_TASK_RESPONSE_ADAPTER = "unambiguous-text-records.v1"
37
+
38
+
39
+ @dataclass(frozen=True, slots=True)
40
+ class ActiveDisambiguationControls:
41
+ total_hypotheses: int = 8
42
+ total_questions: int = 4
43
+ max_tokens: int = 768
44
+ temperature: float = 0.7
45
+
46
+ def __post_init__(self) -> None:
47
+ if not 2 <= self.total_hypotheses <= 20:
48
+ raise ValidationError("active disambiguation hypotheses must be in [2, 20]")
49
+ if not 1 <= self.total_questions <= 8:
50
+ raise ValidationError("active disambiguation questions must be in [1, 8]")
51
+ if self.max_tokens < 128:
52
+ raise ValidationError("active disambiguation max_tokens must be at least 128")
53
+ if self.temperature < 0:
54
+ raise ValidationError("active disambiguation temperature must be non-negative")
55
+
56
+
57
+ @dataclass(slots=True)
58
+ class ActiveTaskDisambiguation:
59
+ """Sample hypotheses and select the question with maximum empirical EIG."""
60
+
61
+ backend: LLMBackend | None = None
62
+ controls: ActiveDisambiguationControls = ActiveDisambiguationControls()
63
+ method_id: str = "active_task_disambiguation"
64
+ release_id: str = ACTIVE_TASK_DISAMBIGUATION_RELEASE
65
+ family: SemanticFamily = SemanticFamily.CLARIFY
66
+
67
+ def __post_init__(self) -> None:
68
+ if not isinstance(self.controls, ActiveDisambiguationControls):
69
+ raise ValidationError(
70
+ "active disambiguation controls must be ActiveDisambiguationControls"
71
+ )
72
+
73
+ def propose(self, state: FrozenAgentState, context: InterventionContext) -> InputPatch:
74
+ backend = self.backend or context.backend
75
+ if backend is None:
76
+ raise ExternalDependencyError("active task disambiguation requires an LLM backend")
77
+ require_capabilities(
78
+ backend,
79
+ {ModelCapability.CHAT, ModelCapability.JSON_OBJECT, ModelCapability.SEED},
80
+ )
81
+ per_call_output_cap = _fair_per_call_output_cap(
82
+ state,
83
+ requested=self.controls.max_tokens,
84
+ )
85
+ calls: list[dict[str, Any]] = []
86
+ normalizations: list[dict[str, Any]] = []
87
+ hypotheses_payload = self._call(
88
+ backend,
89
+ system=(
90
+ "Sample diverse and representative solutions or user-intent hypotheses that "
91
+ "remain compatible with the visible problem statement. Return JSON only."
92
+ ),
93
+ prompt=(
94
+ f"{visible_problem(state)}\n\n"
95
+ f'Return {{"hypotheses":[...]}} with exactly '
96
+ f"{self.controls.total_hypotheses} concise hypotheses."
97
+ ),
98
+ seed=context.seed,
99
+ phase="sample_hypotheses",
100
+ calls=calls,
101
+ max_tokens=per_call_output_cap,
102
+ )
103
+ hypotheses = _atd_string_list(
104
+ hypotheses_payload.get("hypotheses"),
105
+ label="active-disambiguation hypotheses",
106
+ minimum=2,
107
+ maximum=self.controls.total_hypotheses,
108
+ text_fields=("text", "description"),
109
+ normalizations=normalizations,
110
+ )
111
+ question_payload = self._call(
112
+ backend,
113
+ system=(
114
+ "Generate questions whose possible answers distinguish the compatible "
115
+ "hypotheses. Return JSON only."
116
+ ),
117
+ prompt=(
118
+ f"{visible_problem(state)}\n\nHypotheses:\n{_numbered(hypotheses)}\n\n"
119
+ f'Return {{"questions":[...]}} with exactly '
120
+ f"{self.controls.total_questions} concise questions."
121
+ ),
122
+ seed=context.seed + 1,
123
+ phase="sample_questions",
124
+ calls=calls,
125
+ max_tokens=per_call_output_cap,
126
+ )
127
+ questions = _atd_string_list(
128
+ question_payload.get("questions"),
129
+ label="active-disambiguation questions",
130
+ minimum=1,
131
+ maximum=self.controls.total_questions,
132
+ text_fields=("text",),
133
+ normalizations=normalizations,
134
+ )
135
+ entropies: list[float] = []
136
+ partitions: list[tuple[str, ...]] = []
137
+ for index, question in enumerate(questions):
138
+ payload = self._call(
139
+ backend,
140
+ system=(
141
+ "Predict the categorical user answer to one candidate clarifying question "
142
+ "under every supplied hypothesis. Use the same short category string for "
143
+ "semantically equivalent answers. Return JSON only."
144
+ ),
145
+ prompt=(
146
+ f"Hypotheses:\n{_numbered(hypotheses)}\n\nQuestion: {question}\n\n"
147
+ 'Return {"answers":[{"hypothesis_id":0,'
148
+ '"answer_category":"..."},...]}; cover every hypothesis once. '
149
+ "Use answer categories of at most six words."
150
+ ),
151
+ seed=context.seed + 2 + index,
152
+ phase="partition_hypotheses",
153
+ calls=calls,
154
+ max_tokens=per_call_output_cap,
155
+ )
156
+ categories = _parse_partition(payload, expected=len(hypotheses))
157
+ partitions.append(categories)
158
+ entropies.append(empirical_entropy(categories))
159
+ selected_index = max(range(len(questions)), key=entropies.__getitem__)
160
+ selected_question = questions[selected_index]
161
+ trace = ExecutionTrace(
162
+ method_id=self.method_id,
163
+ release_id=self.release_id,
164
+ events=(
165
+ TraceEvent(
166
+ TracePhase.PREPARE,
167
+ "sampled_compatible_hypotheses",
168
+ {"count": len(hypotheses)},
169
+ ),
170
+ TraceEvent(
171
+ TracePhase.PROPOSE,
172
+ "estimated_question_information_gain",
173
+ {
174
+ "question_count": len(questions),
175
+ "entropies": entropies,
176
+ "selected_index": selected_index,
177
+ "selected_question": selected_question,
178
+ },
179
+ ),
180
+ ),
181
+ counters=_usage_counters(calls),
182
+ warnings=(
183
+ "controlled_general_task_adapter_of_released_code_generation_runtime",
184
+ "hypothesis_answers_are_model_simulations_not_hidden_user_labels",
185
+ ),
186
+ )
187
+ return InputPatch(
188
+ method_id=self.method_id,
189
+ release_id=self.release_id,
190
+ source_state_hash=state.state_hash,
191
+ operations=(
192
+ PatchOperation(
193
+ PatchOp.REQUEST_CLARIFICATION,
194
+ selected_question,
195
+ target="user",
196
+ rationale="Maximum uniform empirical information gain over sampled hypotheses.",
197
+ ),
198
+ ),
199
+ trace=trace,
200
+ implementation_identity=(
201
+ f"eig_uniform_solution_partition@{ACTIVE_TASK_DISAMBIGUATION_UPSTREAM_COMMIT}"
202
+ ),
203
+ profile_kind="controlled_adapter",
204
+ metadata={
205
+ "protocol": ACTIVE_TASK_DISAMBIGUATION_PROTOCOL,
206
+ "upstream_commit": ACTIVE_TASK_DISAMBIGUATION_UPSTREAM_COMMIT,
207
+ "hypothesis_count": len(hypotheses),
208
+ "question_count": len(questions),
209
+ "entropies": entropies,
210
+ "selected_question_index": selected_index,
211
+ "logprob_weighting": False,
212
+ "paper_result_parity_claimed": False,
213
+ "effective_max_tokens_per_call": per_call_output_cap,
214
+ "response_adapter_revision": ACTIVE_TASK_RESPONSE_ADAPTER,
215
+ "response_normalizations": normalizations,
216
+ "backend_fingerprint": dict(backend.fingerprint()),
217
+ },
218
+ )
219
+
220
+ def _call(
221
+ self,
222
+ backend: LLMBackend,
223
+ *,
224
+ system: str,
225
+ prompt: str,
226
+ seed: int,
227
+ phase: str,
228
+ calls: list[dict[str, Any]],
229
+ max_tokens: int,
230
+ ) -> Any:
231
+ request = GenerationRequest(
232
+ prompt=prompt,
233
+ system=system,
234
+ temperature=self.controls.temperature,
235
+ max_tokens=max_tokens,
236
+ seed=seed,
237
+ response_format={"type": "json_object"},
238
+ metadata={
239
+ "method_id": self.method_id,
240
+ "release_id": self.release_id,
241
+ "phase": phase,
242
+ },
243
+ )
244
+ response = backend.generate(request)
245
+ calls.append(
246
+ {
247
+ "request_hash": request.request_hash,
248
+ "input_tokens": response.usage.input_tokens,
249
+ "output_tokens": response.usage.output_tokens,
250
+ "cost_usd": response.usage.cost_usd,
251
+ "phase": phase,
252
+ "finish_reason": response.finish_reason,
253
+ "response_sha256": (
254
+ hashlib.sha256(response.text.encode("utf-8")).hexdigest()
255
+ if isinstance(response.text, str) else None
256
+ ),
257
+ }
258
+ )
259
+ try:
260
+ return parse_json_object(response.text, label=f"active disambiguation {phase}")
261
+ except AlgorithmOutputError as exc:
262
+ # A paid empty/truncated response remains a failure, never a retry or
263
+ # a license to use reasoning_content as the final answer.
264
+ reason = response.finish_reason
265
+ safe_reason = (
266
+ reason
267
+ if isinstance(reason, str) and reason in {"stop", "length", "content_filter"}
268
+ else "other"
269
+ )
270
+ raise AlgorithmOutputError(
271
+ f"{exc} [finish_reason={safe_reason}; "
272
+ f"output_tokens={response.usage.output_tokens}; max_tokens={max_tokens}]"
273
+ ) from exc
274
+
275
+
276
+ def _atd_string_list(
277
+ value: Any,
278
+ *,
279
+ label: str,
280
+ minimum: int,
281
+ maximum: int,
282
+ text_fields: tuple[str, ...],
283
+ normalizations: list[dict[str, Any]],
284
+ ) -> tuple[str, ...]:
285
+ """Unwrap only unambiguous text records; do not repair generated content.
286
+
287
+ Saved O20 responses use {text: ...} questions and {id, description}
288
+ hypotheses. IDs are display metadata: subsequent partition prompts use
289
+ freshly enumerated positions, exactly as for the original string array.
290
+ Unknown fields, conflicting text fields and duplicate IDs are rejected.
291
+ """
292
+ if not isinstance(value, list):
293
+ return string_list(value, label=label, minimum=minimum, maximum=maximum)
294
+ unwrapped = []
295
+ identifiers: set[str | int] = set()
296
+ normalized_count = 0
297
+ for item in value:
298
+ if isinstance(item, Mapping):
299
+ present = [key for key in text_fields if key in item]
300
+ if len(present) != 1 or set(item) - {present[0], "id"}:
301
+ raise AlgorithmOutputError(f"{label} text records must be unambiguous")
302
+ if "id" in item:
303
+ identifier = item["id"]
304
+ if (
305
+ isinstance(identifier, bool)
306
+ or not isinstance(identifier, (str, int))
307
+ or (isinstance(identifier, str) and not identifier.strip())
308
+ or identifier in identifiers
309
+ ):
310
+ raise AlgorithmOutputError(f"{label} text-record IDs must be unique scalars")
311
+ identifiers.add(identifier)
312
+ item = item[present[0]]
313
+ normalized_count += 1
314
+ unwrapped.append(item)
315
+ result = string_list(unwrapped, label=label, minimum=minimum, maximum=maximum)
316
+ if normalized_count:
317
+ normalizations.append({"label": label, "text_records_unwrapped": normalized_count})
318
+ return result
319
+
320
+
321
+ def _fair_per_call_output_cap(state: FrozenAgentState, *, requested: int) -> int:
322
+ """Keep every optimizer call inside the visible shared control envelope.
323
+
324
+ The official visible state carries cumulative output and call ceilings but
325
+ not the paper runner's separate per-call field. Reserving an equal share
326
+ for every permitted model call reconstructs the standard 4096 / 8 = 512
327
+ cap and prevents this multi-call method from consuming the arena's budget
328
+ before official execution begins.
329
+ """
330
+
331
+ budget = state.budget
332
+ if budget.max_model_calls < 1 or budget.max_output_tokens < 1:
333
+ raise BudgetExceededError("active disambiguation has no visible model-output budget")
334
+ return min(requested, max(1, budget.max_output_tokens // budget.max_model_calls))
335
+
336
+
337
+ def _parse_partition(payload: Any, *, expected: int) -> tuple[str, ...]:
338
+ raw = payload.get("answers")
339
+ if not isinstance(raw, list):
340
+ raise AlgorithmOutputError("active-disambiguation answers must be a JSON array")
341
+ indexed: dict[int, str] = {}
342
+ for item in raw:
343
+ if not isinstance(item, dict):
344
+ raise AlgorithmOutputError("active-disambiguation answers must be objects")
345
+ identifier = item.get("hypothesis_id")
346
+ category = item.get("answer_category")
347
+ if isinstance(identifier, bool) or not isinstance(identifier, int):
348
+ raise AlgorithmOutputError("active-disambiguation hypothesis_id must be integer")
349
+ if identifier in indexed or not 0 <= identifier < expected:
350
+ raise AlgorithmOutputError(
351
+ "active-disambiguation hypothesis_id is invalid or duplicated"
352
+ )
353
+ if not isinstance(category, str) or not category.strip():
354
+ raise AlgorithmOutputError("active-disambiguation answer_category must be text")
355
+ indexed[identifier] = category.strip().casefold()
356
+ if set(indexed) != set(range(expected)):
357
+ raise AlgorithmOutputError(
358
+ "active-disambiguation answer partition must cover every hypothesis"
359
+ )
360
+ return tuple(indexed[index] for index in range(expected))
361
+
362
+
363
+ def empirical_entropy(categories: tuple[str, ...]) -> float:
364
+ if not categories:
365
+ raise ValidationError("entropy requires at least one answer category")
366
+ total = len(categories)
367
+ return -sum((count / total) * math.log(count / total) for count in Counter(categories).values())
368
+
369
+
370
+ def _numbered(items: tuple[str, ...]) -> str:
371
+ return "\n".join(f"{index}. {item}" for index, item in enumerate(items))
@@ -0,0 +1,17 @@
1
+ """Ask-or-Assume intent-monitor component."""
2
+
3
+ from .monitor import (
4
+ ASK_OR_ASSUME_INTENT_PROMPT_SHA256,
5
+ ASK_OR_ASSUME_UPSTREAM_COMMIT,
6
+ AskOrAssumeControls,
7
+ AskOrAssumeDecision,
8
+ AskOrAssumeIntentMonitor,
9
+ )
10
+
11
+ __all__ = [
12
+ "ASK_OR_ASSUME_INTENT_PROMPT_SHA256",
13
+ "ASK_OR_ASSUME_UPSTREAM_COMMIT",
14
+ "AskOrAssumeControls",
15
+ "AskOrAssumeDecision",
16
+ "AskOrAssumeIntentMonitor",
17
+ ]