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
+ """ACE tool-plan feedback with native ToolSandbox Agent tools and scoring.
2
+
3
+ This is noninteractive fitting feedback, not the native closed-loop heldout
4
+ agent. Caller-defined fit groups are not an official benchmark training split.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import copy
10
+ import inspect
11
+ import json
12
+ from collections.abc import Mapping, Sequence
13
+ from pathlib import Path
14
+
15
+ from agentinputlab.api import _state
16
+ from agentinputlab.contracts import ValidationError
17
+ from agentinputlab.contracts.serialization import canonical_json, content_hash, to_jsonable
18
+
19
+ from .ace import ACEExample
20
+ from .ace_native_plan import (
21
+ NativePlanFeedback,
22
+ _save,
23
+ _sha,
24
+ native_process_scope,
25
+ source_file_pins,
26
+ verify_native_checkout,
27
+ )
28
+
29
+ SCHEMA = "agentinputlab.ace.ToolSandbox.native_feedback_input.v1"
30
+ PLAN_INSTRUCTION = (
31
+ "Solve the supplied task as one noninteractive tool plan. Preserve all visible task "
32
+ "rules and function schemas. Put exactly one JSON object in your final_answer string: "
33
+ '{"actions":[{"name":"visible_function_name","arguments":{}}],"response":"message to user"}. '
34
+ "Use only the advertised Agent-role functions with their required arguments. Actions execute "
35
+ "in order without another generation or access to their results while planning. The "
36
+ "end_conversation tool belongs to the simulated user and must never be emitted by the agent. "
37
+ "Do not output Python, code fences, unknown functions or extra fields.\n"
38
+ )
39
+
40
+
41
+ def _provider():
42
+ from workers.official_arenas.providers.toolsandbox import ToolSandboxProvider
43
+
44
+ return ToolSandboxProvider()
45
+
46
+
47
+ def render_toolsandbox_agent_visible(state, schemas):
48
+ """Retain task fields; substitute only the native Agent-role tool catalog."""
49
+ value = to_jsonable(state)
50
+ names = [tool.get("function", tool)["name"] for tool in schemas]
51
+ if not names or len(names) != len(set(names)) or "end_conversation" in names:
52
+ raise ValidationError("ToolSandbox needs native Agent-role functions, not user tools")
53
+ visible = {
54
+ key: copy.deepcopy(value[key]) for key in ("query", "instruction", "messages", "context")
55
+ }
56
+ visible["tool_names"] = names
57
+ for block in visible["context"]:
58
+ if block["block_id"] == "official_tool_catalog":
59
+ catalog = json.loads(block["text"])
60
+ catalog["available_tools"] = names
61
+ catalog["tool_schemas"] = copy.deepcopy(schemas)
62
+ block["text"] = canonical_json(catalog)
63
+ return visible
64
+
65
+
66
+ def _native_inputs(checkout, configuration, rows, provider):
67
+ from tool_sandbox.common.execution_context import (
68
+ ExecutionContext,
69
+ get_current_context,
70
+ set_current_context,
71
+ )
72
+ from tool_sandbox.common.tool_conversion import convert_to_openai_tools
73
+ from tool_sandbox.roles.openai_api_agent import OpenAIAPIAgent
74
+
75
+ files = [
76
+ checkout / "tool_sandbox" / name
77
+ for name in (
78
+ "common/execution_context.py",
79
+ "common/evaluation.py",
80
+ "common/scenario.py",
81
+ "common/tool_conversion.py",
82
+ "common/message_conversion.py",
83
+ "roles/openai_api_agent.py",
84
+ "roles/execution_environment.py",
85
+ "scenarios/__init__.py",
86
+ "scenarios/single_tool_call_scenarios.py",
87
+ "scenarios/multiple_tool_call_scenarios.py",
88
+ "scenarios/multiple_user_turn_scenarios.py",
89
+ "scenarios/insufficient_information_scenarios.py",
90
+ )
91
+ ]
92
+ files.append(Path(inspect.getfile(OpenAIAPIAgent.get_available_tools.__func__)))
93
+ names = [r["case_id"] for r in rows]
94
+ schemas = {}
95
+ previous = get_current_context()
96
+ try:
97
+ scenarios = provider._scenarios(dict(configuration, scenario_names=names, limit=len(names)))
98
+ if set(scenarios) != set(names):
99
+ raise ValidationError("ToolSandbox fitting scenario is absent from the native runtime")
100
+ for row in rows:
101
+ key = row["case_id"]
102
+ protected = row["protected_checkpoint"]["protected"]
103
+ state = _state(row["state"])
104
+ context = protected["starting_context"]
105
+ if (
106
+ key not in configuration["scenario_names"]
107
+ or protected["scenario_name"] != key
108
+ or state.task_id != key
109
+ or context["interactive_console"] is not None
110
+ or content_hash(context) != protected["starting_context_hash"]
111
+ or protected["locked_dependency_hashes"]
112
+ != configuration["locked_dependency_hashes"]
113
+ ):
114
+ raise ValidationError("ToolSandbox frozen context, task or dependencies differ")
115
+ set_current_context(ExecutionContext.from_dict(copy.deepcopy(context)))
116
+ tools = OpenAIAPIAgent.get_available_tools()
117
+ if not tools or not set(tools) <= set(state.tool_names) or "end_conversation" in tools:
118
+ raise ValidationError("ToolSandbox native Agent-role tool catalog differs")
119
+ schemas[key] = to_jsonable(convert_to_openai_tools(tools))
120
+ render_toolsandbox_agent_visible(state, schemas[key])
121
+ files.extend(
122
+ Path(inspect.getfile(inspect.unwrap(function))) for function in tools.values()
123
+ )
124
+ finally:
125
+ set_current_context(previous)
126
+ return schemas, source_file_pins(checkout, files)
127
+
128
+
129
+ def build_ace_toolsandbox_feedback_input(
130
+ *,
131
+ checkout,
132
+ captures: Sequence[Mapping],
133
+ native_configuration: Mapping,
134
+ train_ids: Sequence[str],
135
+ validation_ids: Sequence[str],
136
+ heldout_ids: Sequence[str],
137
+ partition_label: str,
138
+ target_model: Mapping,
139
+ environment_model: Mapping,
140
+ output_path,
141
+ ):
142
+ """Freeze existing captures with explicit caller-declared fitting groups."""
143
+ provider = _provider()
144
+ root = verify_native_checkout(checkout, revision=provider.source_revision)
145
+ config = provider._validate_config(to_jsonable(native_configuration))
146
+ ids = [*train_ids, *validation_ids]
147
+ if (
148
+ not train_ids
149
+ or not validation_ids
150
+ or len(ids) != len(set(ids))
151
+ or set(ids) & set(heldout_ids)
152
+ or not isinstance(partition_label, str)
153
+ or not partition_label.strip()
154
+ or any(not isinstance(k, str) or not k for k in ids)
155
+ ):
156
+ raise ValidationError(
157
+ "ToolSandbox needs explicit disjoint fitting groups and a partition label"
158
+ )
159
+ selected = {r["checkpoint_id"]: r for r in captures if r["checkpoint_id"] in ids}
160
+ if len(selected) != len(ids) or len([r for r in captures if r["checkpoint_id"] in ids]) != len(
161
+ ids
162
+ ):
163
+ raise ValidationError("ToolSandbox capture IDs are missing or duplicated")
164
+ rows = []
165
+ for role, group in (("train", train_ids), ("validation", validation_ids)):
166
+ for key in group:
167
+ capture = to_jsonable(selected[key])
168
+ state = _state(capture["visible_state"])
169
+ rows.append(
170
+ dict(
171
+ case_id=key,
172
+ role=role,
173
+ state=to_jsonable(state),
174
+ state_hash=state.state_hash,
175
+ protected_checkpoint=capture,
176
+ caller_declared_fit_partition_NOT_official_split=True,
177
+ )
178
+ )
179
+ with native_process_scope(root, package="tool_sandbox"):
180
+ schemas, pins = _native_inputs(root, config, rows, provider)
181
+ if (
182
+ not isinstance(target_model, Mapping)
183
+ or not isinstance(environment_model, Mapping)
184
+ or target_model.get("model_id") != config["agent_model"]
185
+ or environment_model.get("model_id") != config["user_model"]
186
+ ):
187
+ raise ValidationError("ToolSandbox model fingerprints differ from the native configuration")
188
+ value = dict(
189
+ schema=SCHEMA,
190
+ benchmark=provider.benchmark_id,
191
+ native_source_revision=provider.source_revision,
192
+ source_files=pins,
193
+ native_configuration=config,
194
+ fitting_rows=rows,
195
+ heldout_ids=list(heldout_ids),
196
+ source_official_split=None,
197
+ partition_source=partition_label,
198
+ target_model=to_jsonable(target_model),
199
+ environment_model=to_jsonable(environment_model),
200
+ Agent_role_schemas=schemas,
201
+ builder_model_calls=0,
202
+ ToolTalk_not_used=True,
203
+ )
204
+ path = Path(output_path).expanduser().absolute()
205
+ if path.resolve().is_relative_to(root) or path.exists() or path.is_symlink():
206
+ raise ValidationError("ToolSandbox input must be a new file outside the clean checkout")
207
+ _save(path, value)
208
+ return dict(path=str(path), sha256=_sha(path))
209
+
210
+
211
+ class ACEToolSandboxFeedback(NativePlanFeedback):
212
+ processor_id = "agentinputlab.ace.ToolSandbox.native_Agent_role_plan_feedback.v1"
213
+ metric = "official_similarity"
214
+
215
+ def __init__(self, *, checkout, source_input, output_root, mode="offline"):
216
+ self._initialize(
217
+ checkout=checkout, source_input=source_input, output_root=output_root, mode=mode
218
+ )
219
+ self.provider = _provider()
220
+ if (
221
+ self.source.get("schema") != SCHEMA
222
+ or self.source.get("benchmark") != self.provider.benchmark_id
223
+ ):
224
+ raise ValidationError("ToolSandbox ACE feedback schema or benchmark differs")
225
+ self.checkout = verify_native_checkout(checkout, revision=self.provider.source_revision)
226
+ self._verify_source()
227
+ self.configuration = self.provider._validate_config(self.source["native_configuration"])
228
+ if (
229
+ self.source["native_source_revision"] != self.provider.source_revision
230
+ or self.source["source_official_split"] is not None
231
+ or not isinstance(self.source.get("partition_source"), str)
232
+ or not self.source["partition_source"].strip()
233
+ ):
234
+ raise ValidationError(
235
+ "ToolSandbox fitting groups are caller-defined, not an official train split"
236
+ )
237
+ with native_process_scope(self.checkout, package="tool_sandbox"):
238
+ self.schemas, pins = _native_inputs(
239
+ self.checkout, self.configuration, list(self.rows.values()), self.provider
240
+ )
241
+ if pins != self.source["source_files"] or self.schemas != self.source["Agent_role_schemas"]:
242
+ raise ValidationError("ToolSandbox native source or Agent-role schemas changed")
243
+ if (
244
+ self.source["target_model"]["model_id"] != self.configuration["agent_model"]
245
+ or self.source["environment_model"]["model_id"] != self.configuration["user_model"]
246
+ ):
247
+ raise ValidationError("ToolSandbox deployment model identity differs")
248
+ self.tool_names = {
249
+ k: {t.get("function", t)["name"] for t in v} for k, v in self.schemas.items()
250
+ }
251
+ self._create_output()
252
+
253
+ def fingerprint(self):
254
+ self._verify_source()
255
+ return dict(
256
+ processor_id=self.processor_id,
257
+ mode=self.mode,
258
+ source_input=self.source_input,
259
+ source_files=self.source["source_files"],
260
+ source_revision=self.provider.source_revision,
261
+ scorer_id=self.provider.scorer_id,
262
+ scorer_revision=self.provider.scorer_revision,
263
+ target_model=self.source["target_model"],
264
+ environment_model=self.source["environment_model"],
265
+ provider_source_sha256=_sha(inspect.getfile(type(self.provider))),
266
+ task_adapter_source_sha256=_sha(__file__),
267
+ feedback_metric=self.metric,
268
+ source_official_split=None,
269
+ partition_source=self.source["partition_source"],
270
+ groups={
271
+ role: [
272
+ dict(
273
+ case_id=k,
274
+ state_hash=r["state_hash"],
275
+ protected_starting_context_hash=r["protected_checkpoint"]["protected"][
276
+ "starting_context_hash"
277
+ ],
278
+ )
279
+ for k, r in self.rows.items()
280
+ if r["role"] == role
281
+ ]
282
+ for role in ("train", "validation")
283
+ },
284
+ native_Agent_role_tools={k: sorted(v) for k, v in self.tool_names.items()},
285
+ visible_role_schemas_sha256={k: content_hash(v) for k, v in self.schemas.items()},
286
+ role_tool_renderer="native_Agent_role_tool_plan_v2",
287
+ user_simulator_tools_NOT_advertised_to_plan_generator=True,
288
+ noninteractive_text_plan_NOT_native_closed_loop_agent=True,
289
+ heldout_feedback_NOT_used=True,
290
+ transductive_NOT_independent_heldout=self.mode == "online",
291
+ native_user_simulator_calls=0,
292
+ native_judge_model_calls=0,
293
+ automatic_retry=False,
294
+ )
295
+
296
+ def _example(self, key, split):
297
+ state = self.states[key]
298
+ visible = render_toolsandbox_agent_visible(state, self.schemas[key])
299
+ return ACEExample(
300
+ example_id=key,
301
+ input=dict(question=PLAN_INSTRUCTION + canonical_json(visible)),
302
+ expected_output=key,
303
+ split=split,
304
+ metadata=dict(
305
+ source_state_hash=state.state_hash,
306
+ evaluator_target_is_opaque_case_id=True,
307
+ task_processor=self.processor_id,
308
+ native_Agent_role_tool_catalog=True,
309
+ ),
310
+ )
311
+
312
+ def _native_score(self, key, plan, folder):
313
+ with native_process_scope(self.checkout, package="tool_sandbox"):
314
+ from openai.types.chat import ChatCompletion
315
+ from tool_sandbox.common.execution_context import (
316
+ ExecutionContext,
317
+ RoleType,
318
+ get_current_context,
319
+ set_current_context,
320
+ )
321
+ from tool_sandbox.common.message_conversion import Message
322
+ from tool_sandbox.roles.execution_environment import ExecutionEnvironment
323
+ from tool_sandbox.roles.openai_api_agent import OpenAIAPIAgent
324
+
325
+ model = self.source["target_model"]["model_id"]
326
+
327
+ class FrozenPlanAgent(OpenAIAPIAgent):
328
+ model_name = model
329
+
330
+ def __init__(self):
331
+ self.next_action = 0
332
+
333
+ def respond(self, ending_index=None):
334
+ if self.next_action < len(plan["actions"]):
335
+ return super().respond(ending_index=ending_index)
336
+ self.add_messages(
337
+ [
338
+ Message(
339
+ sender=RoleType.AGENT,
340
+ recipient=RoleType.USER,
341
+ content=plan["response"],
342
+ conversation_active=False,
343
+ )
344
+ ]
345
+ )
346
+
347
+ def model_inference(self, openai_messages, openai_tools):
348
+ action = plan["actions"][self.next_action]
349
+ self.next_action += 1
350
+ return ChatCompletion.model_validate(
351
+ dict(
352
+ id="frozen-plan-" + str(self.next_action),
353
+ created=0,
354
+ object="chat.completion",
355
+ model=self.model_name,
356
+ choices=[
357
+ dict(
358
+ index=0,
359
+ finish_reason="tool_calls",
360
+ message=dict(
361
+ role="assistant",
362
+ content=None,
363
+ tool_calls=[
364
+ dict(
365
+ id="frozen_plan_" + str(self.next_action),
366
+ type="function",
367
+ function=dict(
368
+ name=action["name"],
369
+ arguments=canonical_json(action["arguments"]),
370
+ ),
371
+ )
372
+ ],
373
+ ),
374
+ )
375
+ ],
376
+ )
377
+ )
378
+
379
+ class NoSimulatedUser:
380
+ def respond(self, *args, **kwargs):
381
+ raise ValidationError(
382
+ "Noninteractive ACE tool-plan feedback cannot invoke a user simulator"
383
+ )
384
+
385
+ protected = self.rows[key]["protected_checkpoint"]["protected"]
386
+ previous = get_current_context()
387
+ try:
388
+ scenario = self.provider._scenarios(
389
+ dict(self.configuration, scenario_names=[key], limit=1)
390
+ )[key]
391
+ scenario.starting_context = ExecutionContext.from_dict(
392
+ copy.deepcopy(protected["starting_context"])
393
+ )
394
+ result = scenario.play_and_evaluate(
395
+ roles={
396
+ RoleType.AGENT: FrozenPlanAgent(),
397
+ RoleType.USER: NoSimulatedUser(),
398
+ RoleType.EXECUTION_ENVIRONMENT: ExecutionEnvironment(),
399
+ },
400
+ output_directory=folder,
401
+ scenario_name=key,
402
+ )
403
+ ending = result.ending_context.to_dict(serialize_console=False)
404
+ evaluation = result.evaluation_result
405
+ finally:
406
+ set_current_context(previous)
407
+ value = dict(
408
+ status="native_ToolSandbox_tool_plan_scored",
409
+ case_id=key,
410
+ source_state_hash=self.states[key].state_hash,
411
+ protected_starting_context_hash=protected["starting_context_hash"],
412
+ plan=plan,
413
+ native_metrics=dict(
414
+ official_similarity=float(evaluation.similarity),
415
+ milestone_similarity=float(evaluation.milestone_similarity),
416
+ minefield_similarity=float(evaluation.minefield_similarity),
417
+ turn_count=float(evaluation.turn_count),
418
+ ),
419
+ native_ending_context=ending,
420
+ evaluated_agent_model_calls=0,
421
+ native_user_simulator_calls=0,
422
+ new_environment_model_calls=0,
423
+ ordered_action_count=len(plan["actions"]),
424
+ native_closed_loop_primary_parity_NOT_claimed=True,
425
+ )
426
+ _save(folder / "native-score.json", value)
427
+ return value
428
+
429
+
430
+ def create_toolsandbox_feedback(**configuration):
431
+ """Trusted startup factory accepting the constructor's data-only fields."""
432
+ return ACEToolSandboxFeedback(**configuration)
@@ -0,0 +1,22 @@
1
+ """Public source-locked ACON guideline candidate producer.
2
+
3
+ Native analysis/update are bridged by workers.acon; generated templates remain
4
+ opaque until separately reviewed and validated for deployment.
5
+ """
6
+
7
+ from workers.acon.fitted import ACONGuidelineArtifact, validate_fitted_template
8
+ from workers.acon.guideline import (
9
+ ACONGuidelineControls,
10
+ ACONGuidelinePipeline,
11
+ validate_guideline_checkout,
12
+ validate_training_bundle,
13
+ )
14
+
15
+ __all__ = [
16
+ "ACONGuidelineArtifact",
17
+ "ACONGuidelineControls",
18
+ "ACONGuidelinePipeline",
19
+ "validate_fitted_template",
20
+ "validate_guideline_checkout",
21
+ "validate_training_bundle",
22
+ ]