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,85 @@
1
+ """Query reformulation algorithms."""
2
+
3
+ from .infocqr import (
4
+ INFOCQR_POSTPROCESS_SHA256,
5
+ INFOCQR_PROMPT_SOURCE_SHA256,
6
+ INFOCQR_PROTOCOL_VERSION,
7
+ InfoCQRCache,
8
+ InfoCQREditReplay,
9
+ InfoCQRExternalControls,
10
+ InfoCQRFewShotReplay,
11
+ InfoCQRLiveTeacherExternal,
12
+ InfoCQRMode,
13
+ InfoCQRMountedCacheReplay,
14
+ InfoCQRRecord,
15
+ InfoCQRZeroShotReplay,
16
+ conversation_view_hash,
17
+ )
18
+ from .query2doc import (
19
+ OfficialQuery2DocRow,
20
+ Query2DocCache,
21
+ Query2DocOfficialCached,
22
+ QueryGymLiveBridge,
23
+ QueryGymMode,
24
+ QueryGymRawResult,
25
+ QueryGymRequest,
26
+ QueryGymRuntime,
27
+ compose_sparse_expansion,
28
+ select_demonstration_ids,
29
+ )
30
+ from .reformer import (
31
+ REFORMER_PROMPT_ARTIFACT_SHA256,
32
+ REFORMER_UPSTREAM_COMMIT,
33
+ ReFormeRControlledConcat,
34
+ ReFormeRControlledROnly,
35
+ ReFormeRControls,
36
+ ReFormeRExternal,
37
+ ReFormeRPaperConcat,
38
+ ReFormeRRepoNative,
39
+ )
40
+ from .rrr import (
41
+ RRR_UPSTREAM_COMMIT,
42
+ RRRCommonSupport,
43
+ RRRCommonSupportConfig,
44
+ RRRPromptControls,
45
+ RRRPromptExternal,
46
+ )
47
+
48
+ __all__ = [
49
+ "INFOCQR_POSTPROCESS_SHA256",
50
+ "INFOCQR_PROMPT_SOURCE_SHA256",
51
+ "INFOCQR_PROTOCOL_VERSION",
52
+ "REFORMER_PROMPT_ARTIFACT_SHA256",
53
+ "REFORMER_UPSTREAM_COMMIT",
54
+ "RRR_UPSTREAM_COMMIT",
55
+ "InfoCQRCache",
56
+ "InfoCQREditReplay",
57
+ "InfoCQRExternalControls",
58
+ "InfoCQRFewShotReplay",
59
+ "InfoCQRLiveTeacherExternal",
60
+ "InfoCQRMode",
61
+ "InfoCQRMountedCacheReplay",
62
+ "InfoCQRRecord",
63
+ "InfoCQRZeroShotReplay",
64
+ "OfficialQuery2DocRow",
65
+ "Query2DocCache",
66
+ "Query2DocOfficialCached",
67
+ "QueryGymLiveBridge",
68
+ "QueryGymMode",
69
+ "QueryGymRawResult",
70
+ "QueryGymRequest",
71
+ "QueryGymRuntime",
72
+ "RRRCommonSupport",
73
+ "RRRCommonSupportConfig",
74
+ "RRRPromptControls",
75
+ "RRRPromptExternal",
76
+ "ReFormeRControlledConcat",
77
+ "ReFormeRControlledROnly",
78
+ "ReFormeRControls",
79
+ "ReFormeRExternal",
80
+ "ReFormeRPaperConcat",
81
+ "ReFormeRRepoNative",
82
+ "compose_sparse_expansion",
83
+ "conversation_view_hash",
84
+ "select_demonstration_ids",
85
+ ]
@@ -0,0 +1,40 @@
1
+ """Checksum-locked InfoCQR artifact replay profiles."""
2
+
3
+ from .cache_replay import (
4
+ InfoCQRCache,
5
+ InfoCQREditReplay,
6
+ InfoCQRFewShotReplay,
7
+ InfoCQRMode,
8
+ InfoCQRRecord,
9
+ InfoCQRZeroShotReplay,
10
+ conversation_view_hash,
11
+ )
12
+ from .external import (
13
+ INFOCQR_POSTPROCESS_SHA256,
14
+ INFOCQR_PROMPT_SOURCE_SHA256,
15
+ INFOCQR_PROTOCOL_VERSION,
16
+ InfoCQRCommonSupportZeroShot,
17
+ InfoCQRExternalControls,
18
+ InfoCQRLiveTeacherExternal,
19
+ InfoCQRMountedCacheReplay,
20
+ )
21
+ from .student import InfoCQRStudentExternal, InfoCQRStudentRequest
22
+
23
+ __all__ = [
24
+ "INFOCQR_POSTPROCESS_SHA256",
25
+ "INFOCQR_PROMPT_SOURCE_SHA256",
26
+ "INFOCQR_PROTOCOL_VERSION",
27
+ "InfoCQRCache",
28
+ "InfoCQRCommonSupportZeroShot",
29
+ "InfoCQREditReplay",
30
+ "InfoCQRExternalControls",
31
+ "InfoCQRFewShotReplay",
32
+ "InfoCQRLiveTeacherExternal",
33
+ "InfoCQRMode",
34
+ "InfoCQRMountedCacheReplay",
35
+ "InfoCQRRecord",
36
+ "InfoCQRStudentExternal",
37
+ "InfoCQRStudentRequest",
38
+ "InfoCQRZeroShotReplay",
39
+ "conversation_view_hash",
40
+ ]
@@ -0,0 +1,362 @@
1
+ """Checksum-bound replay of externally supplied InfoCQR rewrites.
2
+
3
+ No upstream source or cache is redistributed. A caller supplies a checksum-
4
+ verified artifact and the adapter validates task, split, conversation view,
5
+ profile, post-processing identity, and leakage policy before applying it.
6
+ Byte verification does not establish authorship or the generating model;
7
+ retain those identities and historical costs in the source receipt.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import hashlib
13
+ import json
14
+ from collections.abc import Mapping, Sequence
15
+ from dataclasses import dataclass, field
16
+ from enum import Enum
17
+ from pathlib import Path
18
+ from types import MappingProxyType
19
+ from typing import Any
20
+
21
+ from agentinputlab.contracts import (
22
+ AlgorithmOutputError,
23
+ ArtifactError,
24
+ ExecutionTrace,
25
+ FrozenAgentState,
26
+ InputPatch,
27
+ InterventionContext,
28
+ PatchOp,
29
+ PatchOperation,
30
+ SemanticFamily,
31
+ TraceEvent,
32
+ TracePhase,
33
+ ValidationError,
34
+ )
35
+ from agentinputlab.contracts.serialization import content_hash, freeze_mapping
36
+
37
+ INFOCQR_UPSTREAM_COMMIT = "2953c461aa0c6817b1b7656dbd5168050227b31d"
38
+ _GOLD_KEYS = frozenset({"answer", "gold", "qrels", "reference", "truth_rewrite"})
39
+
40
+
41
+ class InfoCQRMode(str, Enum):
42
+ RW_ZSL = "rw_zsl"
43
+ RW_FSL = "rw_fsl"
44
+ EDIT = "edit"
45
+
46
+
47
+ @dataclass(frozen=True, slots=True)
48
+ class InfoCQRRecord:
49
+ record_id: str
50
+ split: str
51
+ mode: InfoCQRMode
52
+ source_query: str
53
+ conversation_hash: str
54
+ rewrite: str
55
+ raw_candidate: str = ""
56
+ postprocess_id: str = "upstream_post_processing"
57
+ fallback_reason: str = ""
58
+ first_turn_truth_rewrite: bool = False
59
+ metadata: Mapping[str, Any] = field(default_factory=dict)
60
+
61
+ def __post_init__(self) -> None:
62
+ if not self.record_id.strip() or not self.split.strip():
63
+ raise ArtifactError("InfoCQR records require record_id and split")
64
+ if not isinstance(self.mode, InfoCQRMode):
65
+ try:
66
+ object.__setattr__(self, "mode", InfoCQRMode(str(self.mode)))
67
+ except ValueError as exc:
68
+ raise ArtifactError("InfoCQR record has an unsupported mode") from exc
69
+ if not self.source_query.strip() or not self.rewrite.strip():
70
+ raise ArtifactError("InfoCQR source_query and rewrite must not be empty")
71
+ if len(self.conversation_hash) != 64:
72
+ raise ArtifactError("InfoCQR conversation_hash must be a SHA-256 hex digest")
73
+ try:
74
+ int(self.conversation_hash, 16)
75
+ except ValueError as exc:
76
+ raise ArtifactError("InfoCQR conversation_hash must be hexadecimal") from exc
77
+ if not self.postprocess_id.strip():
78
+ raise ArtifactError("InfoCQR postprocess_id must not be empty")
79
+ if not isinstance(self.first_turn_truth_rewrite, bool):
80
+ raise ArtifactError("InfoCQR first_turn_truth_rewrite must be boolean")
81
+ lowered = {str(key).lower() for key in self.metadata}
82
+ if lowered & _GOLD_KEYS:
83
+ raise ArtifactError("InfoCQR solver-visible metadata contains a gold field")
84
+ object.__setattr__(self, "metadata", freeze_mapping(self.metadata))
85
+
86
+ @classmethod
87
+ def from_mapping(cls, value: Mapping[str, Any]) -> InfoCQRRecord:
88
+ metadata = value.get("metadata", {})
89
+ if not isinstance(metadata, Mapping):
90
+ raise ArtifactError("InfoCQR record metadata must be a mapping")
91
+ try:
92
+ return cls(
93
+ record_id=str(value["record_id"]),
94
+ split=str(value["split"]),
95
+ mode=InfoCQRMode(str(value["mode"])),
96
+ source_query=str(value["source_query"]),
97
+ conversation_hash=str(value["conversation_hash"]),
98
+ rewrite=str(value["rewrite"]),
99
+ raw_candidate=str(value.get("raw_candidate", "")),
100
+ postprocess_id=str(value.get("postprocess_id", "upstream_post_processing")),
101
+ fallback_reason=str(value.get("fallback_reason", "")),
102
+ first_turn_truth_rewrite=value.get("first_turn_truth_rewrite", False),
103
+ metadata=dict(metadata),
104
+ )
105
+ except (KeyError, ValueError) as exc:
106
+ raise ArtifactError("InfoCQR record is missing a required field") from exc
107
+
108
+
109
+ class InfoCQRCache:
110
+ """Immutable keyed view of one externally supplied cache artifact."""
111
+
112
+ def __init__(
113
+ self,
114
+ records: Sequence[InfoCQRRecord],
115
+ *,
116
+ artifact_id: str,
117
+ artifact_sha256: str,
118
+ dataset_revision: str,
119
+ ) -> None:
120
+ if not artifact_id.strip() or not dataset_revision.strip():
121
+ raise ArtifactError("InfoCQR cache requires artifact and dataset identities")
122
+ if len(artifact_sha256) != 64:
123
+ raise ArtifactError("InfoCQR artifact_sha256 must be a SHA-256 digest")
124
+ try:
125
+ int(artifact_sha256, 16)
126
+ except ValueError as exc:
127
+ raise ArtifactError("InfoCQR artifact_sha256 must be hexadecimal") from exc
128
+ indexed: dict[tuple[str, str, str], InfoCQRRecord] = {}
129
+ for record in records:
130
+ if not isinstance(record, InfoCQRRecord):
131
+ raise ArtifactError("InfoCQR cache entries must be InfoCQRRecord instances")
132
+ key = (record.mode.value, record.split, record.record_id)
133
+ if key in indexed:
134
+ raise ArtifactError(f"duplicate InfoCQR cache key: {key}")
135
+ indexed[key] = record
136
+ if not indexed:
137
+ raise ArtifactError("InfoCQR cache must not be empty")
138
+ self._records = MappingProxyType(dict(indexed))
139
+ self.artifact_id = artifact_id
140
+ self.artifact_sha256 = artifact_sha256.lower()
141
+ self.dataset_revision = dataset_revision
142
+
143
+ @classmethod
144
+ def from_jsonl(
145
+ cls,
146
+ path: str | Path,
147
+ *,
148
+ expected_sha256: str,
149
+ artifact_id: str,
150
+ dataset_revision: str,
151
+ ) -> InfoCQRCache:
152
+ raw = Path(path).read_bytes()
153
+ actual = hashlib.sha256(raw).hexdigest()
154
+ if actual != expected_sha256.lower():
155
+ raise ArtifactError("InfoCQR cache checksum mismatch")
156
+ records: list[InfoCQRRecord] = []
157
+ for line_number, line in enumerate(raw.decode("utf-8").splitlines(), start=1):
158
+ if not line.strip():
159
+ continue
160
+ try:
161
+ value = json.loads(line)
162
+ except json.JSONDecodeError as exc:
163
+ raise ArtifactError(f"invalid InfoCQR JSONL line {line_number}") from exc
164
+ if not isinstance(value, Mapping):
165
+ raise ArtifactError(f"InfoCQR JSONL line {line_number} must be an object")
166
+ records.append(InfoCQRRecord.from_mapping(value))
167
+ return cls(
168
+ records,
169
+ artifact_id=artifact_id,
170
+ artifact_sha256=actual,
171
+ dataset_revision=dataset_revision,
172
+ )
173
+
174
+ def get(self, mode: InfoCQRMode, split: str, record_id: str) -> InfoCQRRecord:
175
+ try:
176
+ return self._records[(mode.value, split, record_id)]
177
+ except KeyError as exc:
178
+ raise ArtifactError(
179
+ f"InfoCQR cache has no {mode.value}/{split}/{record_id} record"
180
+ ) from exc
181
+
182
+
183
+ def conversation_view_hash(state: FrozenAgentState) -> str:
184
+ """Hash only the conversation fields consumed by the InfoCQR serializer."""
185
+
186
+ return content_hash(
187
+ {
188
+ "messages": state.messages,
189
+ "current_query": state.query,
190
+ "new_context": state.metadata.get("new_context", ""),
191
+ }
192
+ )
193
+
194
+
195
+ @dataclass(slots=True)
196
+ class _InfoCQRReplay:
197
+ cache: InfoCQRCache
198
+ split: str
199
+ mode: InfoCQRMode
200
+ release_id: str
201
+ allow_first_turn_truth_rewrite: bool = False
202
+ expected_postprocess_id: str = "upstream_post_processing"
203
+ method_id: str = "infocqr"
204
+ family: SemanticFamily = SemanticFamily.REFORMULATE
205
+
206
+ def __post_init__(self) -> None:
207
+ if not isinstance(self.cache, InfoCQRCache):
208
+ raise ValidationError("InfoCQR replay requires an InfoCQRCache")
209
+ if not self.split.strip() or not self.expected_postprocess_id.strip():
210
+ raise ValidationError("InfoCQR split and postprocess identity must not be empty")
211
+
212
+ def propose(self, state: FrozenAgentState, context: InterventionContext) -> InputPatch:
213
+ del context
214
+ record_id = state.task_id or str(state.metadata.get("record_id", ""))
215
+ if not record_id:
216
+ raise ArtifactError("InfoCQR replay requires task_id or metadata.record_id")
217
+ record = self.cache.get(self.mode, self.split, record_id)
218
+ if record.source_query != state.query:
219
+ raise ArtifactError("InfoCQR cached source query mismatch")
220
+ observed_conversation_hash = conversation_view_hash(state)
221
+ if record.conversation_hash != observed_conversation_hash:
222
+ raise ArtifactError("InfoCQR cached conversation view mismatch")
223
+ if record.postprocess_id != self.expected_postprocess_id:
224
+ raise ArtifactError("InfoCQR post-processing identity mismatch")
225
+ if record.first_turn_truth_rewrite and not self.allow_first_turn_truth_rewrite:
226
+ raise ArtifactError(
227
+ "InfoCQR first-turn Truth_rewrite is gold-derived and disabled by policy"
228
+ )
229
+ if not record.rewrite.strip():
230
+ raise AlgorithmOutputError("InfoCQR cache produced an empty final rewrite")
231
+ trace = ExecutionTrace(
232
+ method_id=self.method_id,
233
+ release_id=self.release_id,
234
+ events=(
235
+ TraceEvent(
236
+ TracePhase.PREPARE,
237
+ "cache_identity",
238
+ {
239
+ "artifact_id": self.cache.artifact_id,
240
+ "artifact_sha256": self.cache.artifact_sha256,
241
+ "dataset_revision": self.cache.dataset_revision,
242
+ "mode": self.mode.value,
243
+ "split": self.split,
244
+ "conversation_hash": observed_conversation_hash,
245
+ },
246
+ ),
247
+ TraceEvent(
248
+ TracePhase.PROPOSE,
249
+ "cached_candidate",
250
+ {
251
+ "raw_candidate": record.raw_candidate,
252
+ "postprocess_id": record.postprocess_id,
253
+ "fallback_reason": record.fallback_reason,
254
+ },
255
+ ),
256
+ TraceEvent(
257
+ TracePhase.FINALIZE,
258
+ "final_rewrite",
259
+ {
260
+ "rewrite": record.rewrite,
261
+ "first_turn_truth_rewrite": record.first_turn_truth_rewrite,
262
+ },
263
+ ),
264
+ ),
265
+ counters={"historical_model_calls": 0, "replay_records": 1},
266
+ warnings=(
267
+ ("gold_derived_first_turn_rewrite_explicitly_allowed",)
268
+ if record.first_turn_truth_rewrite
269
+ else ()
270
+ ),
271
+ )
272
+ return InputPatch(
273
+ method_id=self.method_id,
274
+ release_id=self.release_id,
275
+ source_state_hash=state.state_hash,
276
+ operations=(
277
+ PatchOperation(
278
+ PatchOp.REPLACE_QUERY,
279
+ record.rewrite,
280
+ target="query",
281
+ rationale="checksum-locked InfoCQR cache replay",
282
+ ),
283
+ ),
284
+ trace=trace,
285
+ implementation_identity=(
286
+ f"artifact_replay:smartyfh/InfoCQR@{INFOCQR_UPSTREAM_COMMIT}:"
287
+ f"{self.cache.artifact_sha256}"
288
+ ),
289
+ profile_kind="controlled_adapter",
290
+ metadata={
291
+ "implementation_origin": "compatibility_replay",
292
+ "artifact_id": self.cache.artifact_id,
293
+ "artifact_sha256": self.cache.artifact_sha256,
294
+ "dataset_revision": self.cache.dataset_revision,
295
+ "historical_generation_not_rebilled": True,
296
+ "gold_derived_first_turn": record.first_turn_truth_rewrite,
297
+ "record_metadata": dict(record.metadata),
298
+ },
299
+ )
300
+
301
+
302
+ class InfoCQRZeroShotReplay(_InfoCQRReplay):
303
+ def __init__(
304
+ self,
305
+ cache: InfoCQRCache,
306
+ *,
307
+ split: str,
308
+ allow_first_turn_truth_rewrite: bool = False,
309
+ ) -> None:
310
+ super().__init__(
311
+ cache=cache,
312
+ split=split,
313
+ mode=InfoCQRMode.RW_ZSL,
314
+ release_id="rewrite.infocqr.cached_rw_zsl",
315
+ allow_first_turn_truth_rewrite=allow_first_turn_truth_rewrite,
316
+ )
317
+
318
+
319
+ class InfoCQRFewShotReplay(_InfoCQRReplay):
320
+ def __init__(
321
+ self,
322
+ cache: InfoCQRCache,
323
+ *,
324
+ split: str,
325
+ allow_first_turn_truth_rewrite: bool = False,
326
+ ) -> None:
327
+ super().__init__(
328
+ cache=cache,
329
+ split=split,
330
+ mode=InfoCQRMode.RW_FSL,
331
+ release_id="rewrite.infocqr.cached_rw_fsl",
332
+ allow_first_turn_truth_rewrite=allow_first_turn_truth_rewrite,
333
+ )
334
+
335
+
336
+ class InfoCQREditReplay(_InfoCQRReplay):
337
+ def __init__(
338
+ self,
339
+ cache: InfoCQRCache,
340
+ *,
341
+ split: str,
342
+ allow_first_turn_truth_rewrite: bool = False,
343
+ ) -> None:
344
+ super().__init__(
345
+ cache=cache,
346
+ split=split,
347
+ mode=InfoCQRMode.EDIT,
348
+ release_id="rewrite.infocqr.cached_edit",
349
+ allow_first_turn_truth_rewrite=allow_first_turn_truth_rewrite,
350
+ )
351
+
352
+
353
+ __all__ = [
354
+ "INFOCQR_UPSTREAM_COMMIT",
355
+ "InfoCQRCache",
356
+ "InfoCQREditReplay",
357
+ "InfoCQRFewShotReplay",
358
+ "InfoCQRMode",
359
+ "InfoCQRRecord",
360
+ "InfoCQRZeroShotReplay",
361
+ "conversation_view_hash",
362
+ ]