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,331 @@
1
+ # SmartSearch frozen-inference worker
2
+
3
+ This worker is a thin, pinned execution boundary for the released
4
+ `vvv111222/SmartSearch-3B` checkpoint. It runs the byte-verified upstream
5
+ `ReCall.run` loop and official answer parsers. It does **not** implement, load,
6
+ or expose SmartSearch SFT, DPO, GRPO, process-reward, ground-truth, or
7
+ test-time query-refinement paths.
8
+
9
+ This release is deliberately reported as `controlled_adapter`, not
10
+ `official_native`. Upstream did not publish immutable identities for its
11
+ Wikipedia corpus, retriever checkpoint, and index, so paper-level retrieval
12
+ parity cannot currently be established. Every locally selected retriever,
13
+ corpus, and index is nevertheless content-bound so experiments remain
14
+ repeatable and collisions become visible.
15
+
16
+ ## Curriculum data preparation (separate from frozen inference)
17
+
18
+ Install `agentinputlab[smartsearch-prepare]` to use
19
+ `SmartSearchCurriculumPreparation`. This API loads the pinned native
20
+ `detect_redundancy`, `transfer_sft`, `transfer_dpo`, and `transfer_regenerate`
21
+ converters from a clean SmartSearch checkout. Source bytes are checked against
22
+ the pinned Git objects and compiled directly, without accepting a cached
23
+ `.pyc` or writing into the checkout. It does not import the full training stack,
24
+ start a service, generate rewards, or perform an optimizer update.
25
+
26
+ ```python
27
+ from agentinputlab.recipes import (
28
+ SmartSearchCurriculumPreparation, SmartSearchTrainingCase,
29
+ )
30
+
31
+ prepared = SmartSearchCurriculumPreparation().prepare(
32
+ checkout="/path/to/pinned/SmartSearch", output_root="/path/to/new/curriculum",
33
+ train=train_cases, validation=validation_cases, test=test_cases,
34
+ initial_scored_rollouts=recorded_initial_rollouts,
35
+ regenerated_scored_rollouts=recorded_regenerated_rollouts,
36
+ rollout_provenance=recorded_producer_provenance,
37
+ )
38
+ ```
39
+
40
+ Cases are typed `SmartSearchTrainingCase(case_id, question, split,
41
+ source_reference=...)`. IDs and normalized-question hashes must be disjoint
42
+ across training, validation and test collections. Every recorded rollout must
43
+ belong to a training question and retain its measured outcome F1 and native
44
+ process-score strings. References, rewards and prepared targets remain
45
+ training-only; this API never sends them to frozen inference.
46
+
47
+ Outputs include the unchanged native redundancy-annotated records, SFT rows,
48
+ DPO pairs, regeneration prefixes, hashes and producer provenance. An empty
49
+ native selection remains empty. It is not a fitted policy or evidence that
50
+ SFT, DPO, or GRPO succeeded. The full `training.smartsearch.sft_dpo_grpo`
51
+ entrypoint is not yet implemented; the preparation API must not be used to
52
+ advertise that profile as complete. The frozen-inference manifest and its
53
+ forbidden training paths are unchanged.
54
+
55
+ `SmartSearchProcessTeacher` separately calls the original training-only
56
+ `SearchEvaluation.evaluate_search` and `Rewrite.rewrite_search` code. A supplied
57
+ completion provider replaces only the HTTP generation method. Native prompts,
58
+ fourth-`<think>` selection, process-score parser, redundancy rules and refinement
59
+ stop behavior remain unchanged. The helper receives **2048 tokens per call and
60
+ temperature 0.6**, with a separately recorded seed adapter. These are training
61
+ helper calls, not 512-token test calls. The default admission budget is
62
+ 4096 output tokens / eight calls; a call that cannot admit the original 2048
63
+ cap fails before dispatch rather than shrinking the native cap.
64
+
65
+ The provider returns `SmartSearchTeacherCompletion(text, input_tokens,
66
+ output_tokens, model_fingerprint_sha256)`. Requests, responses, measured costs
67
+ and failures are saved per call under a fresh output root. An exception stops
68
+ the stage without the upstream HTTP empty-string fallback or an automatic
69
+ retry. Usage that could not be measured remains an unknown-usage reservation,
70
+ not an actual zero. Only declared training questions may carry gold answers or
71
+ process rewards; validation and test questions are rejected before dispatch.
72
+ The resulting scored records feed curriculum preparation. They are not a
73
+ fitted policy, and no optimizer stage is claimed by either API.
74
+
75
+ ### Native SFT and LoRA-DPO policy stages
76
+
77
+ `SmartSearchNativePolicyTraining.fit(stage="sft" | "dpo", ...)` consumes a
78
+ hash-bound curriculum artifact and a caller-mounted, code-free safetensors
79
+ policy snapshot. It invokes the pinned LLaMA-Factory trainer through a fresh
80
+ `torchrun` process group; the native trainer owns collation, loss, optimizer,
81
+ scheduler, three-epoch schedule, original batch sizes, cutoff and ZeRO-3 config.
82
+ Set `SmartSearchPolicyFitControls(gpu_processes=1..4)` and select physical GPUs
83
+ through the operator's `CUDA_VISIBLE_DEVICES`. The library does not discover,
84
+ reserve or signal other users' GPU workloads. Native training dependencies must
85
+ be installed in that dedicated runtime; the lightweight package does not
86
+ silently replace or upgrade the caller's PyTorch/Transformers stack.
87
+
88
+ Native configuration changes are explicit: local input/output/cache paths,
89
+ seed, disabled remote-code/telemetry/publishing and create-only outputs. No
90
+ lower learning rate, shorter epoch count, replacement objective or quantization
91
+ conversion is applied. Empty native selections, fixture-only rollouts, overlap,
92
+ unbound model/data/source bytes and quantized full-fit/merge bases are rejected.
93
+ These pinned configs use the Qwen template; applying them to another model
94
+ family requires a separately defined variant, not a hidden template switch.
95
+
96
+ Each rank retains a native log and source-bound terminal receipt. Native global
97
+ optimizer steps are checked for agreement, not summed across ranks. Observed
98
+ primary-policy forwards and token positions are recorded separately from
99
+ unmeasured reference-model work. A missing receipt is unknown usage, not zero;
100
+ failure does not automatically retry. The caller's optimizer-step ceiling
101
+ rejects a larger native schedule rather than silently truncating it.
102
+
103
+ `SmartSearchPolicyStageArtifact.load(...)` checks the resulting file closure.
104
+ `materialize_snapshot(...)` explicitly copies final SFT model/tokenizer files
105
+ into a new inference snapshot without importing pickle/optimizer state.
106
+ `SmartSearchNativePolicyTraining.merge(...)` calls the original CPU LoRA merge
107
+ against the exact SFT base used by the DPO artifact; a LoRA adapter alone is
108
+ not a complete policy. Source checkpoints, logs and original model assets stay
109
+ unchanged. A fitted or merged artifact is a candidate for heldout evaluation,
110
+ not evidence that the full SFT/DPO/GRPO curriculum or compatibility matrix passed.
111
+ GRPO and end-to-end policy sampling remain separate implementation gates.
112
+
113
+ ## What remains upstream code
114
+
115
+ The driver verifies and source-loads these exact MIT-licensed files from
116
+ `RUC-NLPIR/SmartSearch@5e9e7ec0d6af34f45fad145d4bff442529e7e6ff`:
117
+
118
+ - `src/re_call/inference/re_call.py`: `ReCall`, prompt construction, ten-turn
119
+ loop, `<search>` validation/extraction, response/result concatenation;
120
+ - `src/flashrag/pipeline/active_pipeline.py`:
121
+ `extract_last_assistant_response` (AST-extracted without importing the heavy
122
+ FlashRAG/Transformers module);
123
+ - `src/verl/utils/reward_score/re_call.py`: `last_boxed_only_string` and
124
+ `remove_boxed` (AST-extracted without importing VERL).
125
+
126
+ The worker calls `ReCall.run.__wrapped__`. This disables only the upstream
127
+ five-attempt *whole-trajectory* retry, which could silently replay paid calls.
128
+ The disclosed loop contract remains 10 rounds, `top_n=5`, temperature 0,
129
+ 8192 maximum new tokens, and `</search>`/`</answer>` stops. One non-nested
130
+ search tag per turn is enforced to give retrieval a finite budget bound.
131
+
132
+ ## Security boundary
133
+
134
+ Do not start `scripts/serving/sandbox.py`. It executes request-provided Python
135
+ with same-process `exec`, has no effective timeout, and listens without
136
+ authentication. This worker never imports it and rejects
137
+ `AGENTINPUTLAB_SMARTSEARCH_SANDBOX_URL` if set. The upstream
138
+ `execute_tool_calls` method is overridden with one fixed operation:
139
+
140
+ ```text
141
+ wikipedia_search(query=<model-produced text>, top_n=5)
142
+ ```
143
+
144
+ No request may provide an endpoint, command, import, callable, credential,
145
+ environment, or arbitrary tool call. Retrieved documents containing protocol
146
+ tags are rejected before they can escape `<result>`. Source is loaded from
147
+ verified bytes with bytecode writing disabled; the checkout is never added to
148
+ `sys.path`. The pinned upstream file's `import requests` is satisfied by a
149
+ driver-local, fail-closed placeholder while the module loads, then replaced
150
+ only with the controlled model transport immediately before execution. The
151
+ loader neither depends on the third-party `requests` package nor mutates the
152
+ process-global `sys.modules` table.
153
+
154
+ ## Required identities
155
+
156
+ The host supplies a `SmartSearchArtifactIdentity`, and the worker requires an
157
+ identical, operator-owned runtime manifest. It binds:
158
+
159
+ - Hugging Face repository and revision
160
+ `vvv111222/SmartSearch-3B@82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8`;
161
+ - a local model snapshot file-manifest hash and tokenizer revision;
162
+ - served model alias and model-deployment fingerprint;
163
+ - retriever implementation/revision and deployment fingerprint;
164
+ - corpus, index, and retrieval-config SHA-256 identities;
165
+ - compatibility manifest, official tool schema, loop contract, and parser
166
+ contract;
167
+ - model transport (`sglang_generate` or `openai_completions`).
168
+
169
+ Generate a model snapshot manifest after downloading the pinned revision. It
170
+ must be JSON and include at least:
171
+
172
+ ```json
173
+ {
174
+ "repository": "vvv111222/SmartSearch-3B",
175
+ "revision": "82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8",
176
+ "tokenizer_revision": "82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8",
177
+ "snapshot_tree_sha256": "<canonical hash of the files object below>",
178
+ "files": {
179
+ "model-00001-of-00002.safetensors": {
180
+ "sha256": "<locally verified sha256>",
181
+ "bytes": 123
182
+ }
183
+ }
184
+ }
185
+ ```
186
+
187
+ Hash the exact JSON bytes as `model_snapshot_manifest_sha256`; the worker also
188
+ hashes the canonical `files` object as `model_snapshot_tree_sha256`. Every
189
+ generation and tokenizer-admission response must echo the exact repository,
190
+ revision, tokenizer, snapshot-tree digest, served alias, and admission
191
+ fingerprint. A mutable alias alone is rejected, so the identity can safely
192
+ participate in run/cache keys. The worker does not load 6.8 GB of weights.
193
+
194
+ ## Runtime manifest and environment
195
+
196
+ Set:
197
+
198
+ ```text
199
+ AGENTINPUTLAB_SMARTSEARCH_CHECKOUT=/absolute/pinned/checkout
200
+ AGENTINPUTLAB_SMARTSEARCH_RUNTIME_MANIFEST=/absolute/runtime-manifest.json
201
+ ```
202
+
203
+ A real Git checkout must have the pinned clean HEAD and no untracked files.
204
+ Git runs with a minimal environment, global/system config disabled, repository
205
+ fsmonitor disabled, and the resolved top-level checked. An extracted source
206
+ audit snapshot instead requires both:
207
+
208
+ ```text
209
+ AGENTINPUTLAB_SMARTSEARCH_SOURCE_ARCHIVE=/absolute/smartsearch.tar.gz
210
+ AGENTINPUTLAB_SMARTSEARCH_SNAPSHOT_COMMIT=5e9e7ec0d6af34f45fad145d4bff442529e7e6ff
211
+ ```
212
+
213
+ The archive must match the hash in `compatibility_manifest.json`; a folder
214
+ name alone is never accepted as commit evidence.
215
+
216
+ The runtime manifest contains the exact `artifacts` object, the model snapshot
217
+ manifest path, and operator-controlled service configuration. Endpoints never
218
+ come from benchmark samples or method requests. Example service fields:
219
+
220
+ ```json
221
+ {
222
+ "artifacts": {"...": "the exact SmartSearchArtifactIdentity mapping"},
223
+ "model_snapshot_manifest_path": "/models/SmartSearch-3B.manifest.json",
224
+ "model_transport": "openai_completions",
225
+ "model_base_url": "http://127.0.0.1:8000",
226
+ "tokenizer_base_url": "http://127.0.0.1:8000",
227
+ "served_model_name": "smartsearch-3b-pinned",
228
+ "model_snapshot_tree_sha256": "<canonical snapshot files hash>",
229
+ "context_admission_fingerprint_sha256": "<pinned admission fingerprint>",
230
+ "model_timeout_seconds": 120,
231
+ "retriever_base_url": "http://127.0.0.1:9000",
232
+ "retriever_timeout_seconds": 30,
233
+ "retriever_revision": "<implementation@revision>",
234
+ "corpus_sha256": "<sha256>",
235
+ "index_sha256": "<sha256>",
236
+ "retrieval_config_sha256": "<sha256>"
237
+ }
238
+ ```
239
+
240
+ API keys, if needed, are read only from
241
+ `AGENTINPUTLAB_SMARTSEARCH_MODEL_API_KEY` and
242
+ `AGENTINPUTLAB_SMARTSEARCH_RETRIEVER_API_KEY`; keys are refused over plain
243
+ HTTP. Redirects are always refused.
244
+
245
+ ### Model serving
246
+
247
+ `sglang_generate` forwards the original raw Qwen prompt and original SGLang
248
+ sampling object to `/generate`. The controlled endpoint must return the full
249
+ immutable identity envelope plus `meta_info.prompt_tokens` and
250
+ `meta_info.completion_tokens`.
251
+
252
+ `openai_completions` sends the same raw prompt to `/v1/completions`, which is
253
+ supported by vLLM's OpenAI-compatible server. Chat Completions is intentionally
254
+ unsupported because applying another chat template changes model treatment.
255
+ The immutable identity envelope and token usage are mandatory. This requires a
256
+ small operator wrapper; a bare endpoint that returns only a mutable alias fails
257
+ closed. When a context-token ceiling is active, the wrapper's `/tokenize`
258
+ endpoint must return an exact preflight count and the same identity. Generation
259
+ is rejected before its side effect when the prompt does not fit, and provider
260
+ usage must equal the admitted count. Without this endpoint, a budgeted run
261
+ fails closed. Admission is a network preflight, not a model call.
262
+
263
+ The retriever endpoint is a small identity-attested wrapper over FlashRAG's
264
+ `/search`: it accepts fixed `query`, `top_n=5`, `return_score=false` and returns
265
+ `{"identity": ..., "documents": [{"id": ..., "contents": ...}]}`. This
266
+ envelope preserves document lineage that the upstream loop normally discards.
267
+
268
+ For an operator-owned local vLLM service, `openai_completions_local_snapshot`
269
+ uses `local_model_root` and verifies both the `/v1/models` root and every file in
270
+ the pinned snapshot manifest. Its `/tokenize` endpoint supplies exact admission
271
+ counts. Weight checks are streamed rather than loading multi-gigabyte shards
272
+ into one Python byte string. Completion `stop_reason` metadata preserves the
273
+ upstream stop contract: ReCall receives exactly one closing stop marker, while
274
+ EOS or token-limit termination never invents one.
275
+
276
+ When using the audited runner, inject the configured worker through the context:
277
+
278
+ ```python
279
+ method = SmartSearchCommonSupportQueries(artifacts=artifacts)
280
+ record = InterventionRunner().run(
281
+ method, state, InterventionContext(external_runtime=worker, seed=17)
282
+ )
283
+ ```
284
+
285
+ Do not hide the worker on `method.client` when calling `InterventionRunner`.
286
+ The frozen helper still ignores the audit seed; downstream target seeding is a
287
+ separate setting. Its fixed 8192-token call cap also requires an explicitly
288
+ adequate execution budget rather than a 512/4096-token compatibility label.
289
+
290
+ ## Budget behavior
291
+
292
+ The host reserves one model call before starting the worker. Inside the
293
+ monolithic official loop, the worker checks the remaining model and retrieval
294
+ caps immediately before every corresponding side effect. It also requires
295
+ 8192 output tokens to remain before each official model call, admits context
296
+ tokens before generation, and reconciles provider usage afterwards. A
297
+ provider/retriever attempt
298
+ that fails is still reported as consumed; checkout, identity, or schema failure
299
+ before any side effect reports `consumed=false`.
300
+
301
+ SmartSearch's upstream code ignores seed. The seed is retained in the audit
302
+ request but the runtime attestation always records `seed_applied=false`.
303
+
304
+ ## Running and testing
305
+
306
+ Use the ordinary bounded `JsonLineSubprocessWorker` with
307
+ `python workers/smartsearch/driver.py`; package credentials and endpoint
308
+ configuration only in that worker's environment.
309
+
310
+ Compatibility, runtime, snapshot, request, and HTTP JSON is parsed strictly:
311
+ duplicate keys and non-finite `NaN`/`Infinity` values are rejected. Before any
312
+ model/retriever call, the runtime tool schema's canonical hash and frozen
313
+ loop/parser hashes must exactly match the artifact identity.
314
+
315
+ The deterministic test calls the real source-loaded `ReCall.run.__wrapped__`
316
+ from a fake pinned checkout and verifies two-turn search, the official parser,
317
+ prompt/result trajectory, lineage, identities, budgets, and security gates:
318
+
319
+ ```bash
320
+ PYTHONPATH=src:. python -m pytest -q \
321
+ tests/workers/test_smartsearch_worker_driver.py
322
+ ```
323
+
324
+ The real-checkout symbol smoke is opt-in and does not download weights:
325
+
326
+ ```text
327
+ AGENTINPUTLAB_SMARTSEARCH_REAL_CHECKOUT=/path/to/checkout
328
+ AGENTINPUTLAB_SMARTSEARCH_REAL_RUNTIME_MANIFEST=/path/to/runtime.json
329
+ ```
330
+
331
+ No native-parity claim is made by either test.
@@ -0,0 +1 @@
1
+ """Pinned SmartSearch worker package."""
@@ -0,0 +1,41 @@
1
+ {
2
+ "schema_version": "agentinputlab.smartsearch.compatibility.v1",
3
+ "upstream": {
4
+ "repository": "https://github.com/RUC-NLPIR/SmartSearch",
5
+ "commit": "5e9e7ec0d6af34f45fad145d4bff442529e7e6ff",
6
+ "archive_sha256": "c7eac6245e7481c50536a9d2e82adfdb86a47d9988004c9e967839dbd737fd33",
7
+ "license_spdx": "MIT",
8
+ "license_sha256": "aded117a2f6fe248e9abb2ab223070e2251f22c3c143318de523ddf1b3168ba9"
9
+ },
10
+ "source_files": {
11
+ "src/re_call/inference/re_call.py": "7d3c680cfa0186397c2970d1073d75ab2e587330ce107fdf632827b7857572ec",
12
+ "src/flashrag/pipeline/active_pipeline.py": "20394e3418b6e30b43057ca96b97a423b4e4d37a3a04901e0a0a0dbc3af221fa",
13
+ "src/verl/utils/reward_score/re_call.py": "2697ffa7479a0c9c4e6baf843164b7055b80350c627e01413584ecf4f76476bc"
14
+ },
15
+ "released_model": {
16
+ "repository": "vvv111222/SmartSearch-3B",
17
+ "revision": "82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8",
18
+ "architecture": "Qwen2ForCausalLM",
19
+ "parameters": 3397103616,
20
+ "license_spdx": "MIT"
21
+ },
22
+ "contracts": {
23
+ "profile_id": "smartsearch.controlled_frozen.v1",
24
+ "tool_schema_sha256": "a1349ee4630e42cff2a0631252bdf931d3621f2f1a5bb005430e1c0494508731",
25
+ "loop_contract_sha256": "8c64cda35d8b08f31c7dd8fba2efbb4e7adf3d57dc3a59a8a8e1c41e64d5e5b2",
26
+ "parser_contract_sha256": "b2104370b1b39a1a34b809c25fd369a5e97426a70bf55300de5f5dec8bf3af6a",
27
+ "max_rounds": 10,
28
+ "top_n": 5,
29
+ "max_new_tokens": 8192,
30
+ "temperature": 0.0,
31
+ "stop": ["</search>", "</answer>"],
32
+ "outer_retry_attempts": 1,
33
+ "search_tags_per_turn": 1
34
+ },
35
+ "forbidden_runtime_paths": [
36
+ "scripts/serving/sandbox.py",
37
+ "src/verl/workers/rollout",
38
+ "src/verl/trainer",
39
+ "src/llamafactory"
40
+ ]
41
+ }