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,432 @@
1
+ """Strict, claim-safe catalogs for method execution readiness.
2
+
3
+ These catalogs separate three facts that must not be conflated:
4
+
5
+ * a method exists in the runtime registry;
6
+ * a real benchmark/parity adapter has been implemented and reviewed;
7
+ * paper-result parity has a method-specific, frozen acceptance rule.
8
+
9
+ The default repository catalogs are intentionally allowed to say ``blocked``.
10
+ They are operator gates, not optimistic implementation inventories.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import hashlib
16
+ import json
17
+ import math
18
+ from collections.abc import Mapping, Sequence
19
+ from dataclasses import dataclass
20
+ from pathlib import Path
21
+ from types import MappingProxyType
22
+ from typing import Any
23
+
24
+ from agentinputlab.contracts.errors import ArtifactError, ValidationError
25
+ from agentinputlab.contracts.serialization import content_hash
26
+
27
+ ACCEPTANCE_PROTOCOL = "agentinputlab.parity-acceptance-catalog.v1"
28
+ ADAPTER_READINESS_PROTOCOL = "agentinputlab.adapter-readiness-matrix.v1"
29
+
30
+ _ACCEPTANCE_STATUSES = frozenset({"blocked", "specified"})
31
+ _ADAPTER_STATUSES = frozenset({"blocked", "implemented"})
32
+ _INTEGRATION_KINDS = frozenset(
33
+ {
34
+ "dual_parity_adapter",
35
+ "method_process_adapter",
36
+ "atomic_external_bridge",
37
+ }
38
+ )
39
+ _COMPARISONS = frozenset(
40
+ {
41
+ "absolute_delta",
42
+ "relative_delta",
43
+ "non_inferiority",
44
+ "exact_match",
45
+ }
46
+ )
47
+ _AGGREGATIONS = frozenset({"mean", "median", "micro", "macro", "exact_rate"})
48
+
49
+
50
+ @dataclass(frozen=True, slots=True)
51
+ class ParityAcceptanceSpec:
52
+ """One method's frozen parity-analysis gate."""
53
+
54
+ method_id: str
55
+ status: str
56
+ blockers: tuple[str, ...] = ()
57
+ fixture_id: str | None = None
58
+ metric_name: str | None = None
59
+ aggregation: str | None = None
60
+ comparison: str | None = None
61
+ absolute_tolerance: float | None = None
62
+ relative_tolerance: float | None = None
63
+ minimum_units: int | None = None
64
+ reference_source: str | None = None
65
+
66
+ @property
67
+ def acceptance_hash(self) -> str:
68
+ return content_hash(self)
69
+
70
+
71
+ @dataclass(frozen=True, slots=True)
72
+ class AdapterGate:
73
+ """Readiness of one concrete integration surface."""
74
+
75
+ status: str
76
+ integration_kind: str
77
+ blockers: tuple[str, ...]
78
+
79
+ @property
80
+ def gate_hash(self) -> str:
81
+ return content_hash(self)
82
+
83
+
84
+ @dataclass(frozen=True, slots=True)
85
+ class MethodAdapterReadiness:
86
+ """Parity and discovery readiness for one catalogued method."""
87
+
88
+ method_id: str
89
+ family: str
90
+ profile_kind: str
91
+ parity: AdapterGate
92
+ discovery: AdapterGate
93
+
94
+ @property
95
+ def readiness_hash(self) -> str:
96
+ return content_hash(self)
97
+
98
+
99
+ @dataclass(frozen=True, slots=True)
100
+ class ReadinessCatalog:
101
+ """An exact-set catalog plus its byte and semantic identities."""
102
+
103
+ path: Path
104
+ file_sha256: str
105
+ catalog_hash: str
106
+ entries: Mapping[str, Any]
107
+
108
+
109
+ def load_parity_acceptance_catalog(
110
+ path: str | Path,
111
+ *,
112
+ expected_method_ids: Sequence[str] | None = None,
113
+ ) -> ReadinessCatalog:
114
+ """Load an exact, strict parity acceptance catalog."""
115
+
116
+ source, raw, file_sha256 = _load_json(path, label="parity acceptance catalog")
117
+ data = _strict_mapping(
118
+ raw,
119
+ {"schema_version", "protocol", "method_count", "methods"},
120
+ label="parity acceptance catalog",
121
+ )
122
+ if data["schema_version"] != 1 or data["protocol"] != ACCEPTANCE_PROTOCOL:
123
+ raise ValidationError("unsupported parity acceptance catalog")
124
+ methods = _method_array(data, label="parity acceptance catalog")
125
+ entries: dict[str, ParityAcceptanceSpec] = {}
126
+ for index, item in enumerate(methods):
127
+ label = f"parity acceptance methods[{index}]"
128
+ base = _mapping(item, label=label)
129
+ status = _choice(base.get("status"), _ACCEPTANCE_STATUSES, f"{label}.status")
130
+ if status == "blocked":
131
+ values = _strict_mapping(
132
+ base,
133
+ {"method_id", "status", "blockers"},
134
+ label=label,
135
+ )
136
+ spec = ParityAcceptanceSpec(
137
+ method_id=_text(values["method_id"], f"{label}.method_id"),
138
+ status=status,
139
+ blockers=_blockers(values["blockers"], f"{label}.blockers"),
140
+ )
141
+ else:
142
+ values = _strict_mapping(
143
+ base,
144
+ {
145
+ "method_id",
146
+ "status",
147
+ "blockers",
148
+ "fixture_id",
149
+ "metric_name",
150
+ "aggregation",
151
+ "comparison",
152
+ "absolute_tolerance",
153
+ "relative_tolerance",
154
+ "minimum_units",
155
+ "reference_source",
156
+ },
157
+ label=label,
158
+ )
159
+ blockers = _blockers(
160
+ values["blockers"],
161
+ f"{label}.blockers",
162
+ allow_empty=True,
163
+ )
164
+ if blockers:
165
+ raise ValidationError(f"{label}.blockers must be empty when specified")
166
+ comparison = _choice(
167
+ values["comparison"],
168
+ _COMPARISONS,
169
+ f"{label}.comparison",
170
+ )
171
+ absolute = _optional_nonnegative_number(
172
+ values["absolute_tolerance"],
173
+ f"{label}.absolute_tolerance",
174
+ )
175
+ relative = _optional_nonnegative_number(
176
+ values["relative_tolerance"],
177
+ f"{label}.relative_tolerance",
178
+ )
179
+ if comparison == "exact_match":
180
+ if absolute not in {None, 0.0} or relative not in {None, 0.0}:
181
+ raise ValidationError(f"{label}: exact_match cannot have a positive tolerance")
182
+ elif absolute is None and relative is None:
183
+ raise ValidationError(
184
+ f"{label}: a non-exact comparison requires at least one tolerance"
185
+ )
186
+ spec = ParityAcceptanceSpec(
187
+ method_id=_text(values["method_id"], f"{label}.method_id"),
188
+ status=status,
189
+ blockers=(),
190
+ fixture_id=_text(values["fixture_id"], f"{label}.fixture_id"),
191
+ metric_name=_text(values["metric_name"], f"{label}.metric_name"),
192
+ aggregation=_choice(
193
+ values["aggregation"],
194
+ _AGGREGATIONS,
195
+ f"{label}.aggregation",
196
+ ),
197
+ comparison=comparison,
198
+ absolute_tolerance=absolute,
199
+ relative_tolerance=relative,
200
+ minimum_units=_positive_integer(
201
+ values["minimum_units"],
202
+ f"{label}.minimum_units",
203
+ ),
204
+ reference_source=_text(
205
+ values["reference_source"],
206
+ f"{label}.reference_source",
207
+ ),
208
+ )
209
+ if spec.method_id in entries:
210
+ raise ValidationError("parity acceptance catalog contains duplicate methods")
211
+ entries[spec.method_id] = spec
212
+ _require_expected_method_set(entries, expected_method_ids, label="parity acceptance catalog")
213
+ return ReadinessCatalog(
214
+ path=source,
215
+ file_sha256=file_sha256,
216
+ catalog_hash=content_hash(raw),
217
+ entries=MappingProxyType(entries),
218
+ )
219
+
220
+
221
+ def load_adapter_readiness_matrix(
222
+ path: str | Path,
223
+ *,
224
+ expected_methods: Mapping[str, Mapping[str, str]] | None = None,
225
+ ) -> ReadinessCatalog:
226
+ """Load the exact adapter/bridge readiness matrix."""
227
+
228
+ source, raw, file_sha256 = _load_json(path, label="adapter readiness matrix")
229
+ data = _strict_mapping(
230
+ raw,
231
+ {"schema_version", "protocol", "method_count", "methods"},
232
+ label="adapter readiness matrix",
233
+ )
234
+ if data["schema_version"] != 1 or data["protocol"] != ADAPTER_READINESS_PROTOCOL:
235
+ raise ValidationError("unsupported adapter readiness matrix")
236
+ methods = _method_array(data, label="adapter readiness matrix")
237
+ entries: dict[str, MethodAdapterReadiness] = {}
238
+ for index, item in enumerate(methods):
239
+ label = f"adapter readiness methods[{index}]"
240
+ values = _strict_mapping(
241
+ item,
242
+ {"method_id", "family", "profile_kind", "parity", "discovery"},
243
+ label=label,
244
+ )
245
+ method_id = _text(values["method_id"], f"{label}.method_id")
246
+ family = _text(values["family"], f"{label}.family")
247
+ profile_kind = _text(values["profile_kind"], f"{label}.profile_kind")
248
+ readiness = MethodAdapterReadiness(
249
+ method_id=method_id,
250
+ family=family,
251
+ profile_kind=profile_kind,
252
+ parity=_adapter_gate(
253
+ values["parity"],
254
+ label=f"{label}.parity",
255
+ expected_kind="dual_parity_adapter",
256
+ ),
257
+ discovery=_adapter_gate(
258
+ values["discovery"],
259
+ label=f"{label}.discovery",
260
+ expected_kind=(
261
+ "atomic_external_bridge"
262
+ if family in {"clarify", "composite"}
263
+ else "method_process_adapter"
264
+ ),
265
+ ),
266
+ )
267
+ if method_id in entries:
268
+ raise ValidationError("adapter readiness matrix contains duplicate methods")
269
+ if expected_methods is not None:
270
+ expected = expected_methods.get(method_id)
271
+ if expected is None:
272
+ raise ValidationError(
273
+ f"adapter readiness method {method_id!r} is outside the method catalog"
274
+ )
275
+ if family != expected["family"] or profile_kind != expected["profile_kind"]:
276
+ raise ValidationError(
277
+ f"adapter readiness method {method_id!r} differs from the method catalog"
278
+ )
279
+ entries[method_id] = readiness
280
+ expected_ids = tuple(expected_methods) if expected_methods is not None else None
281
+ _require_expected_method_set(entries, expected_ids, label="adapter readiness matrix")
282
+ return ReadinessCatalog(
283
+ path=source,
284
+ file_sha256=file_sha256,
285
+ catalog_hash=content_hash(raw),
286
+ entries=MappingProxyType(entries),
287
+ )
288
+
289
+
290
+ def _adapter_gate(
291
+ value: Any,
292
+ *,
293
+ label: str,
294
+ expected_kind: str,
295
+ ) -> AdapterGate:
296
+ data = _strict_mapping(
297
+ value,
298
+ {"status", "integration_kind", "blockers"},
299
+ label=label,
300
+ )
301
+ status = _choice(data["status"], _ADAPTER_STATUSES, f"{label}.status")
302
+ kind = _choice(
303
+ data["integration_kind"],
304
+ _INTEGRATION_KINDS,
305
+ f"{label}.integration_kind",
306
+ )
307
+ if kind != expected_kind:
308
+ raise ValidationError(f"{label}.integration_kind must be {expected_kind!r}")
309
+ blockers = _blockers(
310
+ data["blockers"],
311
+ f"{label}.blockers",
312
+ allow_empty=status == "implemented",
313
+ )
314
+ if status == "implemented" and blockers:
315
+ raise ValidationError(f"{label}.blockers must be empty when implemented")
316
+ return AdapterGate(status=status, integration_kind=kind, blockers=blockers)
317
+
318
+
319
+ def _load_json(path: str | Path, *, label: str) -> tuple[Path, Any, str]:
320
+ unresolved = Path(path).expanduser()
321
+ if unresolved.is_symlink():
322
+ raise ArtifactError(f"{label} must not be a symlink")
323
+ source = unresolved.resolve()
324
+ if not source.is_file():
325
+ raise ArtifactError(f"{label} is unavailable")
326
+ try:
327
+ payload = source.read_bytes()
328
+ raw = json.loads(payload.decode("utf-8"))
329
+ except (OSError, UnicodeError, json.JSONDecodeError) as exc:
330
+ raise ArtifactError(f"{label} is not valid UTF-8 JSON") from exc
331
+ return source, raw, hashlib.sha256(payload).hexdigest()
332
+
333
+
334
+ def _method_array(data: Mapping[str, Any], *, label: str) -> tuple[Any, ...]:
335
+ count = data["method_count"]
336
+ methods = data["methods"]
337
+ if (
338
+ isinstance(count, bool)
339
+ or not isinstance(count, int)
340
+ or count < 1
341
+ or isinstance(methods, (str, bytes))
342
+ or not isinstance(methods, Sequence)
343
+ or len(methods) != count
344
+ ):
345
+ raise ValidationError(f"{label} method_count/methods are inconsistent")
346
+ return tuple(methods)
347
+
348
+
349
+ def _require_expected_method_set(
350
+ entries: Mapping[str, Any],
351
+ expected_method_ids: Sequence[str] | None,
352
+ *,
353
+ label: str,
354
+ ) -> None:
355
+ if expected_method_ids is None:
356
+ return
357
+ expected = set(expected_method_ids)
358
+ if set(entries) != expected:
359
+ missing = sorted(expected - set(entries))
360
+ extra = sorted(set(entries) - expected)
361
+ raise ValidationError(f"{label} method set differs; missing={missing}, extra={extra}")
362
+
363
+
364
+ def _strict_mapping(value: Any, fields: set[str], *, label: str) -> dict[str, Any]:
365
+ data = _mapping(value, label=label)
366
+ if set(data) != fields:
367
+ raise ValidationError(f"{label} fields are invalid")
368
+ return data
369
+
370
+
371
+ def _mapping(value: Any, *, label: str) -> dict[str, Any]:
372
+ if not isinstance(value, Mapping):
373
+ raise ValidationError(f"{label} must be an object")
374
+ return dict(value)
375
+
376
+
377
+ def _text(value: Any, label: str) -> str:
378
+ if not isinstance(value, str) or not value.strip() or value != value.strip():
379
+ raise ValidationError(f"{label} must be a trimmed non-empty string")
380
+ return value
381
+
382
+
383
+ def _choice(value: Any, choices: frozenset[str], label: str) -> str:
384
+ text = _text(value, label)
385
+ if text not in choices:
386
+ raise ValidationError(f"{label} must be one of {sorted(choices)}")
387
+ return text
388
+
389
+
390
+ def _blockers(
391
+ value: Any,
392
+ label: str,
393
+ *,
394
+ allow_empty: bool = False,
395
+ ) -> tuple[str, ...]:
396
+ if isinstance(value, (str, bytes)) or not isinstance(value, Sequence):
397
+ raise ValidationError(f"{label} must be a string array")
398
+ blockers = tuple(_text(item, f"{label} item") for item in value)
399
+ if (not blockers and not allow_empty) or len(blockers) != len(set(blockers)):
400
+ raise ValidationError(f"{label} must contain unique blocker strings")
401
+ return blockers
402
+
403
+
404
+ def _optional_nonnegative_number(value: Any, label: str) -> float | None:
405
+ if value is None:
406
+ return None
407
+ if (
408
+ isinstance(value, bool)
409
+ or not isinstance(value, (int, float))
410
+ or not math.isfinite(float(value))
411
+ or float(value) < 0
412
+ ):
413
+ raise ValidationError(f"{label} must be null or a finite non-negative number")
414
+ return float(value)
415
+
416
+
417
+ def _positive_integer(value: Any, label: str) -> int:
418
+ if isinstance(value, bool) or not isinstance(value, int) or value < 1:
419
+ raise ValidationError(f"{label} must be a positive integer")
420
+ return value
421
+
422
+
423
+ __all__ = [
424
+ "ACCEPTANCE_PROTOCOL",
425
+ "ADAPTER_READINESS_PROTOCOL",
426
+ "AdapterGate",
427
+ "MethodAdapterReadiness",
428
+ "ParityAcceptanceSpec",
429
+ "ReadinessCatalog",
430
+ "load_adapter_readiness_matrix",
431
+ "load_parity_acceptance_catalog",
432
+ ]