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.
- agentinputlab/__init__.py +28 -0
- agentinputlab/algorithms/__init__.py +6 -0
- agentinputlab/algorithms/acquire/__init__.py +145 -0
- agentinputlab/algorithms/acquire/adaptive_rag/__init__.py +43 -0
- agentinputlab/algorithms/acquire/adaptive_rag/replay.py +367 -0
- agentinputlab/algorithms/acquire/adaptive_rag/runtime.py +1202 -0
- agentinputlab/algorithms/acquire/adaptive_rag_common_support.py +542 -0
- agentinputlab/algorithms/acquire/hyde.py +296 -0
- agentinputlab/algorithms/acquire/hyde_controlled.py +200 -0
- agentinputlab/algorithms/acquire/hyde_external.py +148 -0
- agentinputlab/algorithms/acquire/ircot.py +28 -0
- agentinputlab/algorithms/acquire/ircot_common_support.py +478 -0
- agentinputlab/algorithms/acquire/ircot_native.py +355 -0
- agentinputlab/algorithms/acquire/ircot_replay.py +327 -0
- agentinputlab/algorithms/acquire/qrag/__init__.py +79 -0
- agentinputlab/algorithms/acquire/qrag/bridge.py +828 -0
- agentinputlab/algorithms/acquire/qrag/common_support.py +891 -0
- agentinputlab/algorithms/acquire/qrag/native_axis.py +71 -0
- agentinputlab/algorithms/acquire/qrag/reader_adapter.py +139 -0
- agentinputlab/algorithms/acquire/r2ag/__init__.py +57 -0
- agentinputlab/algorithms/acquire/r2ag/bridge.py +1312 -0
- agentinputlab/algorithms/acquire/r2ag/common_support.py +1029 -0
- agentinputlab/algorithms/acquire/r2ag/socket_runtime.py +255 -0
- agentinputlab/algorithms/clarify/__init__.py +61 -0
- agentinputlab/algorithms/clarify/_structured.py +64 -0
- agentinputlab/algorithms/clarify/active_task_disambiguation.py +371 -0
- agentinputlab/algorithms/clarify/ask_or_assume/__init__.py +17 -0
- agentinputlab/algorithms/clarify/ask_or_assume/monitor.py +410 -0
- agentinputlab/algorithms/clarify/future_turns.py +379 -0
- agentinputlab/algorithms/clarify/udcs.py +255 -0
- agentinputlab/algorithms/clarify/udcs_deterministic.py +196 -0
- agentinputlab/algorithms/curate/__init__.py +65 -0
- agentinputlab/algorithms/curate/acon/__init__.py +27 -0
- agentinputlab/algorithms/curate/acon/common.py +284 -0
- agentinputlab/algorithms/curate/acon/common_support.py +136 -0
- agentinputlab/algorithms/curate/acon/history_bridge.py +309 -0
- agentinputlab/algorithms/curate/acon/observation_bridge.py +290 -0
- agentinputlab/algorithms/curate/llmlingua/__init__.py +30 -0
- agentinputlab/algorithms/curate/llmlingua/adapters.py +537 -0
- agentinputlab/algorithms/curate/llmlingua/budget.py +48 -0
- agentinputlab/algorithms/curate/llmlingua/controlled.py +175 -0
- agentinputlab/algorithms/curate/llmlingua/multilingual.py +105 -0
- agentinputlab/algorithms/curate/llmlingua/span_map.py +167 -0
- agentinputlab/algorithms/curate/recomp/__init__.py +47 -0
- agentinputlab/algorithms/curate/recomp/external.py +1129 -0
- agentinputlab/algorithms/curate/recomp/selective.py +304 -0
- agentinputlab/algorithms/decompose/__init__.py +107 -0
- agentinputlab/algorithms/decompose/decomp/__init__.py +53 -0
- agentinputlab/algorithms/decompose/decomp/common_support.py +478 -0
- agentinputlab/algorithms/decompose/decomp/planner_component.py +199 -0
- agentinputlab/algorithms/decompose/decomp/worker_bridge.py +416 -0
- agentinputlab/algorithms/decompose/llm_compiler/__init__.py +35 -0
- agentinputlab/algorithms/decompose/llm_compiler/bridge.py +520 -0
- agentinputlab/algorithms/decompose/llm_compiler/common_support.py +504 -0
- agentinputlab/algorithms/decompose/plan_and_budget/__init__.py +43 -0
- agentinputlab/algorithms/decompose/plan_and_budget/cached_soft_budget.py +362 -0
- agentinputlab/algorithms/decompose/plan_and_budget/decomposer_component.py +107 -0
- agentinputlab/algorithms/decompose/plan_and_budget/full.py +205 -0
- agentinputlab/algorithms/decompose/plan_and_budget/hard_cap.py +246 -0
- agentinputlab/algorithms/decompose/plan_and_budget/regenerated_soft_budget.py +448 -0
- agentinputlab/algorithms/decompose/plan_and_solve/__init__.py +33 -0
- agentinputlab/algorithms/decompose/plan_and_solve/plan_component.py +192 -0
- agentinputlab/algorithms/decompose/plan_and_solve/ps_prompt.py +127 -0
- agentinputlab/algorithms/decompose/self_ask/__init__.py +27 -0
- agentinputlab/algorithms/decompose/self_ask/loop.py +362 -0
- agentinputlab/algorithms/decompose/self_ask/planner_component.py +117 -0
- agentinputlab/algorithms/reformulate/__init__.py +85 -0
- agentinputlab/algorithms/reformulate/infocqr/__init__.py +40 -0
- agentinputlab/algorithms/reformulate/infocqr/cache_replay.py +362 -0
- agentinputlab/algorithms/reformulate/infocqr/external.py +675 -0
- agentinputlab/algorithms/reformulate/infocqr/student.py +189 -0
- agentinputlab/algorithms/reformulate/query2doc/__init__.py +42 -0
- agentinputlab/algorithms/reformulate/query2doc/controlled_live.py +190 -0
- agentinputlab/algorithms/reformulate/query2doc/models.py +95 -0
- agentinputlab/algorithms/reformulate/query2doc/official_cached.py +335 -0
- agentinputlab/algorithms/reformulate/query2doc/querygym_bridge.py +223 -0
- agentinputlab/algorithms/reformulate/query2doc/querygym_runtime.py +326 -0
- agentinputlab/algorithms/reformulate/reformer/__init__.py +23 -0
- agentinputlab/algorithms/reformulate/reformer/external.py +417 -0
- agentinputlab/algorithms/reformulate/rrr.py +696 -0
- agentinputlab/annotation/__init__.py +5 -0
- agentinputlab/annotation/independent.py +428 -0
- agentinputlab/annotation/server.py +233 -0
- agentinputlab/annotation/static/app.js +121 -0
- agentinputlab/annotation/static/index.html +60 -0
- agentinputlab/annotation/static/review.css +2 -0
- agentinputlab/annotation/static/review.html +10 -0
- agentinputlab/annotation/static/review.js +11 -0
- agentinputlab/annotation/static/styles.css +55 -0
- agentinputlab/annotation/store.py +444 -0
- agentinputlab/api.py +368 -0
- agentinputlab/artifacts/__init__.py +15 -0
- agentinputlab/artifacts/json_file.py +104 -0
- agentinputlab/artifacts/manifest.py +98 -0
- agentinputlab/artifacts/store.py +157 -0
- agentinputlab/backends/__init__.py +98 -0
- agentinputlab/backends/embedding/__init__.py +25 -0
- agentinputlab/backends/embedding/base.py +145 -0
- agentinputlab/backends/embedding/callable.py +75 -0
- agentinputlab/backends/embedding/replay.py +129 -0
- agentinputlab/backends/llm/__init__.py +31 -0
- agentinputlab/backends/llm/base.py +149 -0
- agentinputlab/backends/llm/callable.py +108 -0
- agentinputlab/backends/llm/decomp_completion.py +88 -0
- agentinputlab/backends/llm/final_content_stop.py +72 -0
- agentinputlab/backends/llm/gpt_oss_final_channel.py +84 -0
- agentinputlab/backends/llm/openai_compatible.py +332 -0
- agentinputlab/backends/llm/transformers.py +171 -0
- agentinputlab/backends/retrieval/__init__.py +35 -0
- agentinputlab/backends/retrieval/base.py +50 -0
- agentinputlab/backends/retrieval/dense.py +777 -0
- agentinputlab/backends/retrieval/memory.py +119 -0
- agentinputlab/backends/retrieval/sqlite_fts.py +155 -0
- agentinputlab/backends/user/__init__.py +15 -0
- agentinputlab/backends/user/base.py +66 -0
- agentinputlab/backends/user/callable.py +54 -0
- agentinputlab/backends/user/replay.py +89 -0
- agentinputlab/backends/vector.py +38 -0
- agentinputlab/benchmarks/__init__.py +246 -0
- agentinputlab/benchmarks/acquisition.py +106 -0
- agentinputlab/benchmarks/ale.py +540 -0
- agentinputlab/benchmarks/appworld_ul.py +669 -0
- agentinputlab/benchmarks/assets.py +226 -0
- agentinputlab/benchmarks/base.py +68 -0
- agentinputlab/benchmarks/beir_archive.py +235 -0
- agentinputlab/benchmarks/beir_sample.py +269 -0
- agentinputlab/benchmarks/bfcl_native.py +245 -0
- agentinputlab/benchmarks/bfcl_v3.py +607 -0
- agentinputlab/benchmarks/cache.py +218 -0
- agentinputlab/benchmarks/clariq.py +203 -0
- agentinputlab/benchmarks/data/registry.json +321 -0
- agentinputlab/benchmarks/data/smoke_assets.json +511 -0
- agentinputlab/benchmarks/data/statebench_v0_8_1_task_ids.json +475 -0
- agentinputlab/benchmarks/data/toolsandbox_165848b_scenario_names.json +1 -0
- agentinputlab/benchmarks/execution.py +1111 -0
- agentinputlab/benchmarks/interactive.py +257 -0
- agentinputlab/benchmarks/ir_query.py +204 -0
- agentinputlab/benchmarks/longbench.py +203 -0
- agentinputlab/benchmarks/paired_replay.py +479 -0
- agentinputlab/benchmarks/preprocess.py +2313 -0
- agentinputlab/benchmarks/production.py +236 -0
- agentinputlab/benchmarks/qa.py +963 -0
- agentinputlab/benchmarks/registry.py +110 -0
- agentinputlab/benchmarks/retrieval.py +459 -0
- agentinputlab/benchmarks/runtime.py +509 -0
- agentinputlab/benchmarks/statebench.py +938 -0
- agentinputlab/benchmarks/tau3.py +725 -0
- agentinputlab/benchmarks/toolsandbox.py +626 -0
- agentinputlab/benchmarks/trec_dl_sample.py +263 -0
- agentinputlab/campaign.py +654 -0
- agentinputlab/campaign_runner.py +953 -0
- agentinputlab/cli/__init__.py +6 -0
- agentinputlab/cli/main.py +933 -0
- agentinputlab/connectors/__init__.py +46 -0
- agentinputlab/connectors/knowledge/__init__.py +4 -0
- agentinputlab/connectors/tools/__init__.py +30 -0
- agentinputlab/connectors/tools/base.py +57 -0
- agentinputlab/connectors/tools/mcp.py +222 -0
- agentinputlab/connectors/tools/memory.py +41 -0
- agentinputlab/connectors/tools/openapi.py +695 -0
- agentinputlab/connectors/tools/schema.py +102 -0
- agentinputlab/contracts/__init__.py +91 -0
- agentinputlab/contracts/availability.py +24 -0
- agentinputlab/contracts/dependency.py +58 -0
- agentinputlab/contracts/enums.py +82 -0
- agentinputlab/contracts/errors.py +63 -0
- agentinputlab/contracts/evidence.py +43 -0
- agentinputlab/contracts/intent.py +110 -0
- agentinputlab/contracts/lifecycle.py +164 -0
- agentinputlab/contracts/patch.py +167 -0
- agentinputlab/contracts/serialization.py +93 -0
- agentinputlab/contracts/state.py +127 -0
- agentinputlab/contracts/trace.py +59 -0
- agentinputlab/contracts/worker.py +42 -0
- agentinputlab/core/__init__.py +7 -0
- agentinputlab/data/__init__.py +32 -0
- agentinputlab/data/checksums.py +9 -0
- agentinputlab/data/downloader.py +235 -0
- agentinputlab/data/http.py +171 -0
- agentinputlab/data/index.py +21 -0
- agentinputlab/data/overlap.py +28 -0
- agentinputlab/data/preprocess.py +32 -0
- agentinputlab/data/storage.py +57 -0
- agentinputlab/data/trec_sample.py +427 -0
- agentinputlab/evaluation/__init__.py +5 -0
- agentinputlab/evaluation/outcomes.py +32 -0
- agentinputlab/experiments/__init__.py +278 -0
- agentinputlab/experiments/analysis.py +981 -0
- agentinputlab/experiments/artifacts.py +687 -0
- agentinputlab/experiments/automatic_measurement.py +678 -0
- agentinputlab/experiments/auxiliary_matrix.py +203 -0
- agentinputlab/experiments/bindings.py +430 -0
- agentinputlab/experiments/blueprints.py +147 -0
- agentinputlab/experiments/builders/__init__.py +45 -0
- agentinputlab/experiments/builders/executable_external_payload.py +423 -0
- agentinputlab/experiments/builders/external_process_arena.py +1018 -0
- agentinputlab/experiments/builders/registry_intervention.py +463 -0
- agentinputlab/experiments/cli.py +158 -0
- agentinputlab/experiments/controls.py +340 -0
- agentinputlab/experiments/driver_guard.py +205 -0
- agentinputlab/experiments/drivers/__init__.py +89 -0
- agentinputlab/experiments/drivers/external_arena.py +2908 -0
- agentinputlab/experiments/drivers/method_process.py +662 -0
- agentinputlab/experiments/drivers/parity_process.py +1484 -0
- agentinputlab/experiments/drivers/static_production.py +1574 -0
- agentinputlab/experiments/executor.py +448 -0
- agentinputlab/experiments/loader.py +605 -0
- agentinputlab/experiments/measurement.py +675 -0
- agentinputlab/experiments/paper_analysis.py +1818 -0
- agentinputlab/experiments/parity_identity.py +605 -0
- agentinputlab/experiments/plan.py +277 -0
- agentinputlab/experiments/production_builders.py +3739 -0
- agentinputlab/experiments/readiness.py +432 -0
- agentinputlab/experiments/schema.py +514 -0
- agentinputlab/experiments/secrets.py +177 -0
- agentinputlab/experiments/stateful_analysis.py +1738 -0
- agentinputlab/experiments/transfer_analysis.py +1316 -0
- agentinputlab/experiments/unseen_analysis.py +1025 -0
- agentinputlab/integrations/__init__.py +1 -0
- agentinputlab/integrations/action_space/__init__.py +1 -0
- agentinputlab/integrations/external_workers/__init__.py +76 -0
- agentinputlab/integrations/external_workers/ace.py +431 -0
- agentinputlab/integrations/external_workers/base.py +181 -0
- agentinputlab/integrations/external_workers/decomp_live.py +249 -0
- agentinputlab/integrations/external_workers/decomp_planner.py +30 -0
- agentinputlab/integrations/external_workers/infocqr_student.py +280 -0
- agentinputlab/integrations/external_workers/ircot.py +576 -0
- agentinputlab/integrations/external_workers/llmcompiler_live.py +360 -0
- agentinputlab/integrations/external_workers/longllmlingua.py +162 -0
- agentinputlab/integrations/external_workers/method.py +314 -0
- agentinputlab/integrations/external_workers/process.py +678 -0
- agentinputlab/integrations/external_workers/supervisor.py +1071 -0
- agentinputlab/integrations/full_architecture/__init__.py +1 -0
- agentinputlab/integrations/full_architecture/hyde.py +212 -0
- agentinputlab/integrations/full_architecture/plan_and_budget.py +188 -0
- agentinputlab/integrations/live_history.py +222 -0
- agentinputlab/integrations/prompt_optimization/__init__.py +1 -0
- agentinputlab/integrations/training/__init__.py +1 -0
- agentinputlab/metrics/__init__.py +50 -0
- agentinputlab/metrics/catalog.py +313 -0
- agentinputlab/metrics/harm.py +95 -0
- agentinputlab/metrics/paired.py +40 -0
- agentinputlab/metrics/qa.py +76 -0
- agentinputlab/metrics/text.py +33 -0
- agentinputlab/metrics/third_party.py +161 -0
- agentinputlab/models/__init__.py +4 -0
- agentinputlab/observability/__init__.py +56 -0
- agentinputlab/observability/budget.py +316 -0
- agentinputlab/observability/instrumentation.py +754 -0
- agentinputlab/observability/models.py +403 -0
- agentinputlab/observability/monitor.py +380 -0
- agentinputlab/optimizers/__init__.py +1 -0
- agentinputlab/optimizers/clarify/__init__.py +12 -0
- agentinputlab/optimizers/context/__init__.py +22 -0
- agentinputlab/optimizers/decompose/__init__.py +64 -0
- agentinputlab/optimizers/evidence/__init__.py +22 -0
- agentinputlab/optimizers/rewrite/__init__.py +30 -0
- agentinputlab/parity/__init__.py +5 -0
- agentinputlab/parity/base.py +206 -0
- agentinputlab/production_campaign.py +763 -0
- agentinputlab/py.typed +1 -0
- agentinputlab/recipes/__init__.py +333 -0
- agentinputlab/recipes/ace.py +418 -0
- agentinputlab/recipes/ace_bfcl.py +273 -0
- agentinputlab/recipes/ace_common_support.py +169 -0
- agentinputlab/recipes/ace_native_plan.py +322 -0
- agentinputlab/recipes/ace_online.py +711 -0
- agentinputlab/recipes/ace_retrieval.py +330 -0
- agentinputlab/recipes/ace_statebench.py +382 -0
- agentinputlab/recipes/ace_tau.py +463 -0
- agentinputlab/recipes/ace_toolsandbox.py +432 -0
- agentinputlab/recipes/acon_guideline.py +22 -0
- agentinputlab/recipes/adaptive_rag.py +822 -0
- agentinputlab/recipes/llmlingua2_inference.py +146 -0
- agentinputlab/recipes/llmlingua2_training.py +796 -0
- agentinputlab/recipes/mce.py +1486 -0
- agentinputlab/recipes/mce_final.py +335 -0
- agentinputlab/recipes/mce_text_fit.py +499 -0
- agentinputlab/recipes/mce_text_only.py +298 -0
- agentinputlab/recipes/qrag.py +729 -0
- agentinputlab/recipes/qrag_inference.py +364 -0
- agentinputlab/recipes/r2ag_features.py +236 -0
- agentinputlab/recipes/r2ag_inference.py +503 -0
- agentinputlab/recipes/r2ag_training.py +948 -0
- agentinputlab/recipes/recomp_abstractive.py +592 -0
- agentinputlab/recipes/recomp_extractive.py +525 -0
- agentinputlab/recipes/reformer.py +17 -0
- agentinputlab/recipes/rqrag.py +1516 -0
- agentinputlab/recipes/rqrag_common_support.py +193 -0
- agentinputlab/recipes/rqrag_completion.py +147 -0
- agentinputlab/recipes/skillopt.py +462 -0
- agentinputlab/recipes/skillopt_common_support.py +154 -0
- agentinputlab/recipes/skillopt_environment.py +165 -0
- agentinputlab/recipes/skillopt_environment_cli.py +5 -0
- agentinputlab/recipes/skillopt_retrieval.py +188 -0
- agentinputlab/recipes/smartsearch.py +897 -0
- agentinputlab/recipes/smartsearch_curriculum.py +283 -0
- agentinputlab/recipes/smartsearch_grpo_contracts.py +58 -0
- agentinputlab/recipes/smartsearch_grpo_data.py +314 -0
- agentinputlab/recipes/smartsearch_grpo_meter.py +324 -0
- agentinputlab/recipes/smartsearch_grpo_prefix.py +144 -0
- agentinputlab/recipes/smartsearch_grpo_rollout.py +119 -0
- agentinputlab/recipes/smartsearch_grpo_tools.py +364 -0
- agentinputlab/recipes/smartsearch_grpo_training.py +305 -0
- agentinputlab/recipes/smartsearch_grpo_transport.py +248 -0
- agentinputlab/recipes/smartsearch_grpo_worker.py +364 -0
- agentinputlab/recipes/smartsearch_inference.py +524 -0
- agentinputlab/recipes/smartsearch_native_data.py +172 -0
- agentinputlab/recipes/smartsearch_policy.py +616 -0
- agentinputlab/recipes/smartsearch_policy_worker.py +9 -0
- agentinputlab/recipes/smartsearch_sampling.py +232 -0
- agentinputlab/recipes/smartsearch_teacher.py +203 -0
- agentinputlab/recipes/smartsearch_training.py +265 -0
- agentinputlab/registry/__init__.py +46 -0
- agentinputlab/registry/beta.py +727 -0
- agentinputlab/registry/data/algorithms.json +1959 -0
- agentinputlab/registry/data/auxiliary_method_profiles.json +34 -0
- agentinputlab/registry/loader.py +100 -0
- agentinputlab/registry/result_manifest.py +184 -0
- agentinputlab/registry/runtime.py +195 -0
- agentinputlab/registry/schema.py +449 -0
- agentinputlab/runner/__init__.py +30 -0
- agentinputlab/runner/balance.py +248 -0
- agentinputlab/runner/cache.py +135 -0
- agentinputlab/runner/composite.py +130 -0
- agentinputlab/runner/engine.py +285 -0
- agentinputlab/runner/runtime_guard.py +268 -0
- agentinputlab/runner/worker.py +80 -0
- agentinputlab/runtime_bootstrap.py +288 -0
- agentinputlab/selectors/__init__.py +196 -0
- agentinputlab/selectors/advanced.py +1514 -0
- agentinputlab/selectors/artifacts.py +1087 -0
- agentinputlab/selectors/base.py +112 -0
- agentinputlab/selectors/campaigns.py +1893 -0
- agentinputlab/selectors/catalog.py +86 -0
- agentinputlab/selectors/discovery.py +1860 -0
- agentinputlab/selectors/evaluation.py +1348 -0
- agentinputlab/selectors/features.py +383 -0
- agentinputlab/selectors/learned.py +502 -0
- agentinputlab/selectors/no_op.py +28 -0
- agentinputlab/selectors/outcome_table.py +475 -0
- agentinputlab/selectors/producer.py +853 -0
- agentinputlab/selectors/rules.py +109 -0
- agentinputlab/selectors/runtime.py +420 -0
- agentinputlab/studies/__init__.py +16 -0
- agentinputlab/studies/design.py +165 -0
- agentinputlab/studies/paired.py +322 -0
- agentinputlab/studio/__init__.py +6 -0
- agentinputlab/studio/campaigns.py +819 -0
- agentinputlab/studio/engine.py +1408 -0
- agentinputlab/studio/model_backends.py +425 -0
- agentinputlab/studio/prepared.py +410 -0
- agentinputlab/studio/server.py +613 -0
- agentinputlab/studio/static/app.js +397 -0
- agentinputlab/studio/static/campaigns.html +175 -0
- agentinputlab/studio/static/campaigns.js +426 -0
- agentinputlab/studio/static/index.html +192 -0
- agentinputlab/studio/static/result.html +103 -0
- agentinputlab/studio/static/result.js +273 -0
- agentinputlab/studio/static/styles.css +467 -0
- agentinputlab-0.1.0a1.data/data/share/agentinputlab/CITATION.cff +22 -0
- agentinputlab-0.1.0a1.dist-info/METADATA +392 -0
- agentinputlab-0.1.0a1.dist-info/RECORD +469 -0
- agentinputlab-0.1.0a1.dist-info/WHEEL +5 -0
- agentinputlab-0.1.0a1.dist-info/entry_points.txt +6 -0
- agentinputlab-0.1.0a1.dist-info/licenses/LICENSE +21 -0
- agentinputlab-0.1.0a1.dist-info/licenses/NOTICE +31 -0
- agentinputlab-0.1.0a1.dist-info/licenses/THIRD_PARTY_NOTICES.md +94 -0
- agentinputlab-0.1.0a1.dist-info/top_level.txt +2 -0
- workers/README.md +94 -0
- workers/ace/README.md +261 -0
- workers/ace/__init__.py +1 -0
- workers/ace/compatibility_manifest.json +39 -0
- workers/ace/driver.py +1682 -0
- workers/acon/README.md +215 -0
- workers/acon/__init__.py +5 -0
- workers/acon/compatibility_manifest.json +93 -0
- workers/acon/driver.py +1859 -0
- workers/acon/fitted.py +395 -0
- workers/acon/guideline.py +470 -0
- workers/acon/guideline_source_manifest.json +20 -0
- workers/adaptive_rag/README.md +96 -0
- workers/adaptive_rag/__init__.py +15 -0
- workers/adaptive_rag/compatibility_manifest.json +61 -0
- workers/adaptive_rag/driver.py +1470 -0
- workers/adaptive_rag/fixture_runtime.py +163 -0
- workers/adaptive_rag/runtime.py +252 -0
- workers/ask_or_assume/README.md +124 -0
- workers/ask_or_assume/__init__.py +1 -0
- workers/ask_or_assume/compatibility_manifest.json +36 -0
- workers/ask_or_assume/driver.py +1227 -0
- workers/decomp/README.md +133 -0
- workers/decomp/UPSTREAM_LICENSE.Apache-2.0.txt +201 -0
- workers/decomp/__init__.py +5 -0
- workers/decomp/compatibility_manifest.json +205 -0
- workers/decomp/driver.py +1015 -0
- workers/decomp/live.py +137 -0
- workers/decomp/runtime.py +231 -0
- workers/infocqr/README.md +106 -0
- workers/infocqr/__init__.py +1 -0
- workers/infocqr/compatibility_manifest.json +84 -0
- workers/infocqr/driver.py +1766 -0
- workers/ircot/README.md +167 -0
- workers/ircot/__init__.py +7 -0
- workers/ircot/compatibility_manifest.json +121 -0
- workers/ircot/controlled.py +457 -0
- workers/ircot/driver.py +1373 -0
- workers/ircot/fixture_bindings.json +39 -0
- workers/ircot/fixture_config.json +48 -0
- workers/ircot/fixture_prompt.txt +2 -0
- workers/ircot/native_qa.py +398 -0
- workers/ircot/qa_compatibility_manifest.json +57 -0
- workers/ircot/runtime.py +97 -0
- workers/llmcompiler/README.md +160 -0
- workers/llmcompiler/__init__.py +1 -0
- workers/llmcompiler/compatibility_manifest.json +45 -0
- workers/llmcompiler/driver.py +1514 -0
- workers/llmcompiler/export_prompts.py +74 -0
- workers/llmcompiler/live.py +174 -0
- workers/llmcompiler/patch_manifest.json +147 -0
- workers/mce/README.md +198 -0
- workers/mce/__init__.py +29 -0
- workers/mce/compatibility_manifest.json +115 -0
- workers/mce/driver.py +2585 -0
- workers/mce/final_eval.py +173 -0
- workers/official_arenas/README.md +25 -0
- workers/official_arenas/__init__.py +1 -0
- workers/official_arenas/capture_records.py +110 -0
- workers/official_arenas/driver.py +619 -0
- workers/official_arenas/protocol.py +334 -0
- workers/official_arenas/providers/__init__.py +1 -0
- workers/official_arenas/providers/_live_history.py +228 -0
- workers/official_arenas/providers/_message_compat.py +77 -0
- workers/official_arenas/providers/appworld_ul.py +196 -0
- workers/official_arenas/providers/fixture.py +112 -0
- workers/official_arenas/providers/statebench.py +960 -0
- workers/official_arenas/providers/tau3.py +1672 -0
- workers/official_arenas/providers/tau_retail.py +586 -0
- workers/official_arenas/providers/toolsandbox.py +1321 -0
- workers/official_arenas/providers/tooltalk.py +699 -0
- workers/official_arenas/retail_capture.py +188 -0
- workers/official_arenas/retail_driver.py +275 -0
- workers/qrag/README.md +172 -0
- workers/qrag/__init__.py +1 -0
- workers/qrag/compatibility_manifest.json +64 -0
- workers/qrag/driver.py +673 -0
- workers/r2ag/README.md +154 -0
- workers/r2ag/__init__.py +5 -0
- workers/r2ag/compatibility_manifest.json +55 -0
- workers/r2ag/driver.py +1287 -0
- workers/r2ag/feature_schema.json +8 -0
- workers/r2ag/runtime.py +589 -0
- workers/recomp/README.md +120 -0
- workers/recomp/__init__.py +1 -0
- workers/recomp/compatibility_manifest.json +43 -0
- workers/recomp/driver.py +1653 -0
- workers/reformer/README.md +125 -0
- workers/reformer/__init__.py +1 -0
- workers/reformer/compatibility_manifest.json +68 -0
- workers/reformer/driver.py +1459 -0
- workers/reformer/induction.py +457 -0
- workers/rrr/README.md +126 -0
- workers/rrr/__init__.py +1 -0
- workers/rrr/compatibility_manifest.json +57 -0
- workers/rrr/driver.py +1133 -0
- workers/smartsearch/README.md +331 -0
- workers/smartsearch/__init__.py +1 -0
- workers/smartsearch/compatibility_manifest.json +41 -0
- workers/smartsearch/driver.py +1643 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"""Stable cell expansion and deterministic sharding for experiment manifests."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from collections.abc import Mapping
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from agentinputlab.contracts.errors import ValidationError
|
|
11
|
+
from agentinputlab.contracts.serialization import (
|
|
12
|
+
canonical_json,
|
|
13
|
+
content_hash,
|
|
14
|
+
freeze_mapping,
|
|
15
|
+
to_jsonable,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
from .schema import ExperimentManifest
|
|
19
|
+
|
|
20
|
+
_SHA256 = re.compile(r"^[0-9a-f]{64}$")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass(frozen=True, slots=True)
|
|
24
|
+
class ExperimentCell:
|
|
25
|
+
study_id: str
|
|
26
|
+
benchmark_id: str
|
|
27
|
+
split: str
|
|
28
|
+
unit_id: str
|
|
29
|
+
model_slot: str
|
|
30
|
+
seed: int
|
|
31
|
+
arm_ids: tuple[str, ...]
|
|
32
|
+
manifest_hash: str
|
|
33
|
+
|
|
34
|
+
def __post_init__(self) -> None:
|
|
35
|
+
if not all(
|
|
36
|
+
isinstance(value, str) and value.strip()
|
|
37
|
+
for value in (
|
|
38
|
+
self.study_id,
|
|
39
|
+
self.benchmark_id,
|
|
40
|
+
self.split,
|
|
41
|
+
self.unit_id,
|
|
42
|
+
self.model_slot,
|
|
43
|
+
self.manifest_hash,
|
|
44
|
+
)
|
|
45
|
+
):
|
|
46
|
+
raise ValidationError("experiment cell identities must be non-empty")
|
|
47
|
+
if isinstance(self.seed, bool) or not isinstance(self.seed, int) or self.seed < 0:
|
|
48
|
+
raise ValidationError("experiment cell seed must be non-negative")
|
|
49
|
+
arms = tuple(self.arm_ids)
|
|
50
|
+
if len(arms) < 2 or len(arms) != len(set(arms)):
|
|
51
|
+
raise ValidationError("experiment cell requires unique comparison arms")
|
|
52
|
+
object.__setattr__(self, "arm_ids", arms)
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def cell_id(self) -> str:
|
|
56
|
+
return content_hash(self)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@dataclass(frozen=True, slots=True)
|
|
60
|
+
class ExperimentPlan:
|
|
61
|
+
study_id: str
|
|
62
|
+
manifest_hash: str
|
|
63
|
+
cells: tuple[ExperimentCell, ...]
|
|
64
|
+
unit_inventories: Mapping[str, tuple[str, ...]]
|
|
65
|
+
unit_inventory_hashes: Mapping[str, str]
|
|
66
|
+
parent_plan_hash: str | None = None
|
|
67
|
+
parent_cell_ids: tuple[str, ...] = ()
|
|
68
|
+
shard_index: int | None = None
|
|
69
|
+
shard_count: int | None = None
|
|
70
|
+
|
|
71
|
+
def __post_init__(self) -> None:
|
|
72
|
+
cells = tuple(self.cells)
|
|
73
|
+
if not cells:
|
|
74
|
+
raise ValidationError("experiment plan requires at least one cell")
|
|
75
|
+
if len({item.cell_id for item in cells}) != len(cells):
|
|
76
|
+
raise ValidationError("experiment plan contains duplicate cells")
|
|
77
|
+
if any(
|
|
78
|
+
item.study_id != self.study_id or item.manifest_hash != self.manifest_hash
|
|
79
|
+
for item in cells
|
|
80
|
+
):
|
|
81
|
+
raise ValidationError("experiment cells differ from their parent plan")
|
|
82
|
+
parent_cell_ids = tuple(self.parent_cell_ids)
|
|
83
|
+
shard_fields = (
|
|
84
|
+
self.parent_plan_hash,
|
|
85
|
+
self.shard_index,
|
|
86
|
+
self.shard_count,
|
|
87
|
+
)
|
|
88
|
+
if all(value is None for value in shard_fields):
|
|
89
|
+
if parent_cell_ids:
|
|
90
|
+
raise ValidationError("root experiment plan cannot declare parent_cell_ids")
|
|
91
|
+
elif any(value is None for value in shard_fields):
|
|
92
|
+
raise ValidationError("experiment shard requires all parent and shard fields")
|
|
93
|
+
else:
|
|
94
|
+
if (
|
|
95
|
+
not isinstance(self.parent_plan_hash, str)
|
|
96
|
+
or _SHA256.fullmatch(self.parent_plan_hash) is None
|
|
97
|
+
):
|
|
98
|
+
raise ValidationError("experiment shard parent_plan_hash must be SHA-256")
|
|
99
|
+
if (
|
|
100
|
+
isinstance(self.shard_index, bool)
|
|
101
|
+
or not isinstance(self.shard_index, int)
|
|
102
|
+
or isinstance(self.shard_count, bool)
|
|
103
|
+
or not isinstance(self.shard_count, int)
|
|
104
|
+
or self.shard_count < 1
|
|
105
|
+
or self.shard_index < 0
|
|
106
|
+
or self.shard_index >= self.shard_count
|
|
107
|
+
):
|
|
108
|
+
raise ValidationError("experiment shard requires 0 <= index < count")
|
|
109
|
+
if (
|
|
110
|
+
not parent_cell_ids
|
|
111
|
+
or len(parent_cell_ids) != len(set(parent_cell_ids))
|
|
112
|
+
or any(
|
|
113
|
+
not isinstance(item, str) or _SHA256.fullmatch(item) is None
|
|
114
|
+
for item in parent_cell_ids
|
|
115
|
+
)
|
|
116
|
+
):
|
|
117
|
+
raise ValidationError(
|
|
118
|
+
"experiment shard requires unique parent cell SHA-256 identities"
|
|
119
|
+
)
|
|
120
|
+
if not {cell.cell_id for cell in cells}.issubset(parent_cell_ids):
|
|
121
|
+
raise ValidationError("experiment shard cells are outside the parent plan")
|
|
122
|
+
object.__setattr__(self, "cells", cells)
|
|
123
|
+
object.__setattr__(self, "parent_cell_ids", parent_cell_ids)
|
|
124
|
+
inventories: dict[str, tuple[str, ...]] = {}
|
|
125
|
+
for key, raw_units in self.unit_inventories.items():
|
|
126
|
+
if not isinstance(key, str) or not key.strip():
|
|
127
|
+
raise ValidationError("experiment unit inventory keys must be non-empty strings")
|
|
128
|
+
units = tuple(raw_units)
|
|
129
|
+
if (
|
|
130
|
+
not units
|
|
131
|
+
or len(units) != len(set(units))
|
|
132
|
+
or any(not isinstance(unit_id, str) or not unit_id.strip() for unit_id in units)
|
|
133
|
+
):
|
|
134
|
+
raise ValidationError(
|
|
135
|
+
f"experiment unit inventory {key} requires unique non-empty unit IDs"
|
|
136
|
+
)
|
|
137
|
+
inventories[key] = tuple(sorted(units))
|
|
138
|
+
hashes = dict(self.unit_inventory_hashes)
|
|
139
|
+
if set(inventories) != set(hashes):
|
|
140
|
+
raise ValidationError(
|
|
141
|
+
"experiment unit inventories and inventory hashes require identical keys"
|
|
142
|
+
)
|
|
143
|
+
for key, units in inventories.items():
|
|
144
|
+
expected_hash = content_hash({"key": key, "unit_ids": list(units)})
|
|
145
|
+
if hashes[key] != expected_hash:
|
|
146
|
+
raise ValidationError(f"experiment unit inventory hash mismatch for {key}")
|
|
147
|
+
object.__setattr__(
|
|
148
|
+
self,
|
|
149
|
+
"unit_inventories",
|
|
150
|
+
freeze_mapping(inventories),
|
|
151
|
+
)
|
|
152
|
+
object.__setattr__(
|
|
153
|
+
self,
|
|
154
|
+
"unit_inventory_hashes",
|
|
155
|
+
freeze_mapping(hashes),
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def plan_hash(self) -> str:
|
|
160
|
+
return content_hash(self)
|
|
161
|
+
|
|
162
|
+
def to_dict(self) -> dict[str, Any]:
|
|
163
|
+
payload = to_jsonable(self)
|
|
164
|
+
payload["plan_hash"] = self.plan_hash
|
|
165
|
+
payload["cell_count"] = len(self.cells)
|
|
166
|
+
payload["cells"] = [{**to_jsonable(cell), "cell_id": cell.cell_id} for cell in self.cells]
|
|
167
|
+
return payload
|
|
168
|
+
|
|
169
|
+
def shard(self, *, index: int, count: int) -> ExperimentPlan:
|
|
170
|
+
if self.parent_plan_hash is not None:
|
|
171
|
+
raise ValidationError("an experiment shard cannot be sharded again")
|
|
172
|
+
if (
|
|
173
|
+
isinstance(index, bool)
|
|
174
|
+
or isinstance(count, bool)
|
|
175
|
+
or not isinstance(index, int)
|
|
176
|
+
or not isinstance(count, int)
|
|
177
|
+
or count < 1
|
|
178
|
+
or index < 0
|
|
179
|
+
or index >= count
|
|
180
|
+
):
|
|
181
|
+
raise ValidationError("shard requires 0 <= index < count")
|
|
182
|
+
selected = tuple(
|
|
183
|
+
cell for position, cell in enumerate(self.cells) if position % count == index
|
|
184
|
+
)
|
|
185
|
+
if not selected:
|
|
186
|
+
raise ValidationError("requested shard contains no experiment cells")
|
|
187
|
+
return ExperimentPlan(
|
|
188
|
+
study_id=self.study_id,
|
|
189
|
+
manifest_hash=self.manifest_hash,
|
|
190
|
+
cells=selected,
|
|
191
|
+
unit_inventories=self.unit_inventories,
|
|
192
|
+
unit_inventory_hashes=self.unit_inventory_hashes,
|
|
193
|
+
parent_plan_hash=self.plan_hash,
|
|
194
|
+
parent_cell_ids=tuple(cell.cell_id for cell in self.cells),
|
|
195
|
+
shard_index=index,
|
|
196
|
+
shard_count=count,
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def build_experiment_plan(
|
|
201
|
+
manifest: ExperimentManifest,
|
|
202
|
+
resolved_units: Mapping[str, tuple[str, ...]],
|
|
203
|
+
) -> ExperimentPlan:
|
|
204
|
+
expected = {f"{target.cell_id}:{target.split}" for target in manifest.benchmarks}
|
|
205
|
+
if set(resolved_units) != expected:
|
|
206
|
+
raise ValidationError("resolved unit inventories do not match benchmark targets")
|
|
207
|
+
all_arm_ids = tuple(arm.arm_id for arm in manifest.arms)
|
|
208
|
+
cells: list[ExperimentCell] = []
|
|
209
|
+
inventory_hashes: dict[str, str] = {}
|
|
210
|
+
for target in manifest.benchmarks:
|
|
211
|
+
arm_ids = target.arm_ids or all_arm_ids
|
|
212
|
+
key = f"{target.cell_id}:{target.split}"
|
|
213
|
+
units = tuple(resolved_units[key])
|
|
214
|
+
if not units:
|
|
215
|
+
raise ValidationError(f"benchmark target {key} has no resolved units")
|
|
216
|
+
if len(units) != len(set(units)):
|
|
217
|
+
raise ValidationError(f"benchmark target {key} has duplicate units")
|
|
218
|
+
if target.unit_ids and tuple(sorted(target.unit_ids)) != tuple(sorted(units)):
|
|
219
|
+
raise ValidationError(
|
|
220
|
+
f"resolved unit inventory differs from inline manifest units for {key}"
|
|
221
|
+
)
|
|
222
|
+
inventory_hashes[key] = content_hash({"key": key, "unit_ids": sorted(units)})
|
|
223
|
+
for unit_id in sorted(units):
|
|
224
|
+
for model_slot in manifest.model_slots:
|
|
225
|
+
for seed in manifest.seeds:
|
|
226
|
+
cells.append(
|
|
227
|
+
ExperimentCell(
|
|
228
|
+
study_id=manifest.study_id,
|
|
229
|
+
benchmark_id=target.cell_id,
|
|
230
|
+
split=target.split,
|
|
231
|
+
unit_id=unit_id,
|
|
232
|
+
model_slot=model_slot,
|
|
233
|
+
seed=seed,
|
|
234
|
+
arm_ids=arm_ids,
|
|
235
|
+
manifest_hash=manifest.manifest_hash,
|
|
236
|
+
)
|
|
237
|
+
)
|
|
238
|
+
return ExperimentPlan(
|
|
239
|
+
study_id=manifest.study_id,
|
|
240
|
+
manifest_hash=manifest.manifest_hash,
|
|
241
|
+
cells=tuple(cells),
|
|
242
|
+
unit_inventories={
|
|
243
|
+
key: tuple(sorted(resolved_units[key])) for key in sorted(resolved_units)
|
|
244
|
+
},
|
|
245
|
+
unit_inventory_hashes=inventory_hashes,
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
def validate_experiment_plan(
|
|
250
|
+
manifest: ExperimentManifest,
|
|
251
|
+
plan: ExperimentPlan,
|
|
252
|
+
) -> None:
|
|
253
|
+
"""Require a root/shard plan to be the full deterministic manifest expansion."""
|
|
254
|
+
|
|
255
|
+
if not isinstance(manifest, ExperimentManifest) or not isinstance(plan, ExperimentPlan):
|
|
256
|
+
raise TypeError("experiment plan validation requires typed manifest and plan")
|
|
257
|
+
root_plan = build_experiment_plan(
|
|
258
|
+
manifest,
|
|
259
|
+
{key: tuple(unit_ids) for key, unit_ids in plan.unit_inventories.items()},
|
|
260
|
+
)
|
|
261
|
+
expected = (
|
|
262
|
+
root_plan
|
|
263
|
+
if plan.parent_plan_hash is None
|
|
264
|
+
else root_plan.shard(index=plan.shard_index, count=plan.shard_count)
|
|
265
|
+
)
|
|
266
|
+
if canonical_json(plan.to_dict()) != canonical_json(expected.to_dict()):
|
|
267
|
+
raise ValidationError(
|
|
268
|
+
"experiment plan is not the complete deterministic expansion of its manifest"
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
__all__ = [
|
|
273
|
+
"ExperimentCell",
|
|
274
|
+
"ExperimentPlan",
|
|
275
|
+
"build_experiment_plan",
|
|
276
|
+
"validate_experiment_plan",
|
|
277
|
+
]
|