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,654 @@
|
|
|
1
|
+
"""Run-readiness orchestration for the frozen existing-data campaign.
|
|
2
|
+
|
|
3
|
+
This module deliberately distinguishes a broad benchmark inventory from the
|
|
4
|
+
cells that already have accepted source bytes, a production adapter, or a
|
|
5
|
+
stateful external bridge. Campaign preparation is restricted to the latter
|
|
6
|
+
set so a convenience command cannot silently expand the research scope.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import hashlib
|
|
12
|
+
import json
|
|
13
|
+
from collections.abc import Mapping
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
from types import MappingProxyType
|
|
17
|
+
from typing import Any
|
|
18
|
+
|
|
19
|
+
from agentinputlab.benchmarks import (
|
|
20
|
+
BenchmarkRegistry,
|
|
21
|
+
BenchmarkSmokeAssetRegistry,
|
|
22
|
+
PreparedQABenchmarkAdapter,
|
|
23
|
+
PreparedRetrievalBenchmarkAdapter,
|
|
24
|
+
QAPrediction,
|
|
25
|
+
RetrievalPrediction,
|
|
26
|
+
load_prepared_benchmark,
|
|
27
|
+
load_production_benchmark_adapter,
|
|
28
|
+
load_tau3_banking_bundle,
|
|
29
|
+
production_benchmark_specs,
|
|
30
|
+
)
|
|
31
|
+
from agentinputlab.contracts.errors import AgentInputLabError, ArtifactError, ValidationError
|
|
32
|
+
from agentinputlab.experiments import (
|
|
33
|
+
load_adapter_readiness_matrix,
|
|
34
|
+
verify_experiment_run_directory,
|
|
35
|
+
)
|
|
36
|
+
from agentinputlab.registry import AlgorithmRegistry
|
|
37
|
+
|
|
38
|
+
CAMPAIGN_SCOPE_PROTOCOL = "agentinputlab.existing-data-campaign-scope.v1"
|
|
39
|
+
|
|
40
|
+
_STATIC_PRODUCTION_CELLS = (
|
|
41
|
+
"beir.arguana",
|
|
42
|
+
"bright.earth_science",
|
|
43
|
+
"bright.economics",
|
|
44
|
+
"musique.answerable",
|
|
45
|
+
"2wiki.multihop",
|
|
46
|
+
"hotpotqa.distractor",
|
|
47
|
+
"qasper.v0_3_dev",
|
|
48
|
+
)
|
|
49
|
+
_ACCEPTED_SOURCE_ONLY_CELLS = ("clariq.main",)
|
|
50
|
+
_STATEFUL_BRIDGE_CELLS = (
|
|
51
|
+
"tau3.banking_knowledge",
|
|
52
|
+
"appworld_ul.common_support",
|
|
53
|
+
"state_bench.common_support",
|
|
54
|
+
"toolsandbox.common_support",
|
|
55
|
+
)
|
|
56
|
+
_AUXILIARY_CELLS = ("bfcl.v3.simple_python", "ale.external_transfer")
|
|
57
|
+
_FROZEN_INVENTORY_CELLS = (
|
|
58
|
+
"tooltalk.full",
|
|
59
|
+
"tau3.retail",
|
|
60
|
+
"beir.cqadupstack",
|
|
61
|
+
"beir.quora",
|
|
62
|
+
"beir.dbpedia_entity",
|
|
63
|
+
"beir.fever",
|
|
64
|
+
"beir.fiqa_2018",
|
|
65
|
+
"bright.robotics",
|
|
66
|
+
"bright.stackoverflow",
|
|
67
|
+
"trec_dl.2019",
|
|
68
|
+
"trec_dl.2020",
|
|
69
|
+
"longbench.qasper",
|
|
70
|
+
"longbench.multifieldqa_en",
|
|
71
|
+
"longbench.govreport",
|
|
72
|
+
"longbench.qmsum",
|
|
73
|
+
"longbench.passage_retrieval_en",
|
|
74
|
+
"longbench.repobench_p",
|
|
75
|
+
)
|
|
76
|
+
_DISCOVERY_TARGETS = MappingProxyType(
|
|
77
|
+
{
|
|
78
|
+
"reformulate": ("beir.arguana", "test"),
|
|
79
|
+
"decompose": ("musique.answerable", "dev"),
|
|
80
|
+
"acquire": ("bright.earth_science", "test"),
|
|
81
|
+
"clarify": ("tau3.banking_knowledge", "discovery_train"),
|
|
82
|
+
"curate": ("qasper.v0_3_dev", "dev"),
|
|
83
|
+
"composite": ("tau3.banking_knowledge", "discovery_train"),
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
_METHOD_PROCESS_DRIVER = "agentinputlab.experiments.drivers.method_process:factory"
|
|
87
|
+
_ATOMIC_ARENA_DRIVER = "agentinputlab.experiments.drivers.external_arena:factory"
|
|
88
|
+
_OFFICIAL_PROVIDER_IMPLEMENTATIONS = MappingProxyType(
|
|
89
|
+
{
|
|
90
|
+
"tau3.banking_knowledge": {
|
|
91
|
+
"provider_entrypoint": "workers.official_arenas.providers.tau3:factory",
|
|
92
|
+
"resolution_kind": "public_runtime_bootstrap",
|
|
93
|
+
"next_step": (
|
|
94
|
+
"capture checkpoints with scripts/experiments/capture_official_arena.py, "
|
|
95
|
+
"then freeze the common-support config with "
|
|
96
|
+
"scripts/experiments/prepare_official_common_support_config.py"
|
|
97
|
+
),
|
|
98
|
+
},
|
|
99
|
+
"state_bench.common_support": {
|
|
100
|
+
"provider_entrypoint": "workers.official_arenas.providers.statebench:factory",
|
|
101
|
+
"resolution_kind": "public_runtime_bootstrap",
|
|
102
|
+
"next_step": (
|
|
103
|
+
"capture checkpoints with scripts/experiments/capture_official_arena.py, "
|
|
104
|
+
"then freeze the common-support config with "
|
|
105
|
+
"scripts/experiments/prepare_official_common_support_config.py"
|
|
106
|
+
),
|
|
107
|
+
},
|
|
108
|
+
"toolsandbox.common_support": {
|
|
109
|
+
"provider_entrypoint": "workers.official_arenas.providers.toolsandbox:factory",
|
|
110
|
+
"resolution_kind": "public_runtime_bootstrap",
|
|
111
|
+
"next_step": (
|
|
112
|
+
"capture checkpoints with scripts/experiments/capture_official_arena.py, "
|
|
113
|
+
"then freeze the common-support config with "
|
|
114
|
+
"scripts/experiments/prepare_official_common_support_config.py"
|
|
115
|
+
),
|
|
116
|
+
},
|
|
117
|
+
"appworld_ul.common_support": {
|
|
118
|
+
"provider_entrypoint": "workers.official_arenas.providers.appworld_ul:factory",
|
|
119
|
+
"resolution_kind": "official_plugin_binding",
|
|
120
|
+
"next_step": (
|
|
121
|
+
"bind the official appworld_ul.* runtime plugin and its checksum in "
|
|
122
|
+
"prepare_official_common_support_config.py; base AppWorld is not a "
|
|
123
|
+
"scientifically equivalent substitute"
|
|
124
|
+
),
|
|
125
|
+
},
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@dataclass(frozen=True, slots=True)
|
|
131
|
+
class ExistingDataCampaignScope:
|
|
132
|
+
"""Exact, non-expanding data scope for run-readiness work."""
|
|
133
|
+
|
|
134
|
+
scope_id: str = "existing-data-main"
|
|
135
|
+
production_static: tuple[str, ...] = _STATIC_PRODUCTION_CELLS
|
|
136
|
+
accepted_source_only: tuple[str, ...] = _ACCEPTED_SOURCE_ONLY_CELLS
|
|
137
|
+
stateful_bridges: tuple[str, ...] = _STATEFUL_BRIDGE_CELLS
|
|
138
|
+
auxiliary: tuple[str, ...] = _AUXILIARY_CELLS
|
|
139
|
+
frozen_inventory: tuple[str, ...] = _FROZEN_INVENTORY_CELLS
|
|
140
|
+
|
|
141
|
+
def __post_init__(self) -> None:
|
|
142
|
+
groups = (
|
|
143
|
+
self.production_static,
|
|
144
|
+
self.accepted_source_only,
|
|
145
|
+
self.stateful_bridges,
|
|
146
|
+
self.auxiliary,
|
|
147
|
+
self.frozen_inventory,
|
|
148
|
+
)
|
|
149
|
+
flattened = tuple(cell for group in groups for cell in group)
|
|
150
|
+
if len(flattened) != len(set(flattened)):
|
|
151
|
+
raise ValidationError("existing-data campaign scope contains duplicate cells")
|
|
152
|
+
registered = {cell.cell_id for cell in BenchmarkRegistry.default().list()}
|
|
153
|
+
if set(flattened) != registered:
|
|
154
|
+
missing = sorted(registered - set(flattened))
|
|
155
|
+
extra = sorted(set(flattened) - registered)
|
|
156
|
+
raise ValidationError(
|
|
157
|
+
"existing-data campaign scope differs from the benchmark registry; "
|
|
158
|
+
f"missing={missing}, extra={extra}"
|
|
159
|
+
)
|
|
160
|
+
production = {
|
|
161
|
+
spec.cell_id
|
|
162
|
+
for spec in production_benchmark_specs()
|
|
163
|
+
if spec.adapter_kind in {"qa", "retrieval"}
|
|
164
|
+
}
|
|
165
|
+
if (
|
|
166
|
+
set(self.production_static) != set(_STATIC_PRODUCTION_CELLS)
|
|
167
|
+
or not set(self.production_static) <= production
|
|
168
|
+
):
|
|
169
|
+
raise ValidationError(
|
|
170
|
+
"existing-data campaign static scope differs from production adapters"
|
|
171
|
+
)
|
|
172
|
+
if self.frozen_inventory != _FROZEN_INVENTORY_CELLS:
|
|
173
|
+
raise ValidationError("existing-data campaign must preserve its inventory-only cells")
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def active_cells(self) -> tuple[str, ...]:
|
|
177
|
+
"""Cells that preparation may touch."""
|
|
178
|
+
|
|
179
|
+
return (
|
|
180
|
+
*self.production_static,
|
|
181
|
+
*self.accepted_source_only,
|
|
182
|
+
*self.stateful_bridges,
|
|
183
|
+
*self.auxiliary,
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
def to_dict(self) -> Mapping[str, Any]:
|
|
187
|
+
return MappingProxyType(
|
|
188
|
+
{
|
|
189
|
+
"schema_version": 1,
|
|
190
|
+
"protocol": CAMPAIGN_SCOPE_PROTOCOL,
|
|
191
|
+
"scope_id": self.scope_id,
|
|
192
|
+
"data_policy": "existing_implementation_only",
|
|
193
|
+
"production_static": self.production_static,
|
|
194
|
+
"accepted_source_only": self.accepted_source_only,
|
|
195
|
+
"stateful_bridges": self.stateful_bridges,
|
|
196
|
+
"auxiliary": self.auxiliary,
|
|
197
|
+
"frozen_inventory": self.frozen_inventory,
|
|
198
|
+
}
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def existing_data_campaign_scope() -> ExistingDataCampaignScope:
|
|
203
|
+
"""Return the validated campaign scope."""
|
|
204
|
+
|
|
205
|
+
return ExistingDataCampaignScope()
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def existing_campaign_assets() -> tuple[str, ...]:
|
|
209
|
+
"""Return only accepted-source asset IDs inside the frozen active scope."""
|
|
210
|
+
|
|
211
|
+
scope = existing_data_campaign_scope()
|
|
212
|
+
return tuple(
|
|
213
|
+
asset.asset_id
|
|
214
|
+
for asset in BenchmarkSmokeAssetRegistry.default().list(include_license_review=True)
|
|
215
|
+
if asset.cell_id in scope.active_cells
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def campaign_doctor(
|
|
220
|
+
prepared_root: str | Path,
|
|
221
|
+
*,
|
|
222
|
+
readiness_path: str | Path | None = None,
|
|
223
|
+
) -> Mapping[str, Any]:
|
|
224
|
+
"""Inspect data, method-surface, and stateful-runtime readiness.
|
|
225
|
+
|
|
226
|
+
The doctor never downloads data, imports an upstream benchmark runtime, or
|
|
227
|
+
calls a model. A missing optional readiness catalog remains an explicit
|
|
228
|
+
blocker instead of being interpreted as a ready method matrix.
|
|
229
|
+
"""
|
|
230
|
+
|
|
231
|
+
scope = existing_data_campaign_scope()
|
|
232
|
+
prepared = Path(prepared_root).expanduser().resolve()
|
|
233
|
+
asset_rows: list[dict[str, Any]] = []
|
|
234
|
+
for asset_id in existing_campaign_assets():
|
|
235
|
+
asset = BenchmarkSmokeAssetRegistry.default().get(asset_id)
|
|
236
|
+
try:
|
|
237
|
+
loaded = load_prepared_benchmark(asset, prepared)
|
|
238
|
+
except (AgentInputLabError, OSError) as exc:
|
|
239
|
+
asset_rows.append(
|
|
240
|
+
{
|
|
241
|
+
"asset_id": asset_id,
|
|
242
|
+
"cell_id": asset.cell_id,
|
|
243
|
+
"prepared": False,
|
|
244
|
+
"reason": str(exc),
|
|
245
|
+
"resolution_kind": "registered_asset_acquisition",
|
|
246
|
+
"next_command": (
|
|
247
|
+
"agentinputlab campaign prepare --store data/raw "
|
|
248
|
+
f"--prepared {prepared} --allow-network"
|
|
249
|
+
),
|
|
250
|
+
}
|
|
251
|
+
)
|
|
252
|
+
else:
|
|
253
|
+
asset_rows.append(
|
|
254
|
+
{
|
|
255
|
+
"asset_id": asset_id,
|
|
256
|
+
"cell_id": asset.cell_id,
|
|
257
|
+
"prepared": True,
|
|
258
|
+
"counts": dict(loaded.counts),
|
|
259
|
+
"prepared_identity_sha256": _prepared_identity(loaded),
|
|
260
|
+
"resolution_kind": "none",
|
|
261
|
+
"next_command": None,
|
|
262
|
+
}
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
method_summary: dict[str, Any]
|
|
266
|
+
if readiness_path is None:
|
|
267
|
+
method_summary = {
|
|
268
|
+
"method_count": 27,
|
|
269
|
+
"l2_method_paths": 27,
|
|
270
|
+
"discovery_implemented": 0,
|
|
271
|
+
"discovery_blocked": 27,
|
|
272
|
+
"catalog_checked": False,
|
|
273
|
+
"blocker": "provide the checksum-reviewed adapter readiness catalog",
|
|
274
|
+
}
|
|
275
|
+
else:
|
|
276
|
+
methods = AlgorithmRegistry.default().list_methods()
|
|
277
|
+
# Profile kinds are catalog-owned. Omitting expected_methods retains
|
|
278
|
+
# the loader's strict exact-count/schema checks without duplicating the
|
|
279
|
+
# selected release catalog here.
|
|
280
|
+
readiness = load_adapter_readiness_matrix(readiness_path)
|
|
281
|
+
registered_ids = {method.method_id for method in methods}
|
|
282
|
+
if set(readiness.entries) != registered_ids:
|
|
283
|
+
raise ValidationError(
|
|
284
|
+
"adapter readiness catalog differs from the exact algorithm registry"
|
|
285
|
+
)
|
|
286
|
+
implemented = sum(
|
|
287
|
+
entry.discovery.status == "implemented" for entry in readiness.entries.values()
|
|
288
|
+
)
|
|
289
|
+
method_summary = {
|
|
290
|
+
"method_count": len(methods),
|
|
291
|
+
"l2_method_paths": len(methods),
|
|
292
|
+
"discovery_implemented": implemented,
|
|
293
|
+
"discovery_blocked": len(methods) - implemented,
|
|
294
|
+
"catalog_checked": True,
|
|
295
|
+
"catalog_sha256": readiness.file_sha256,
|
|
296
|
+
"catalog_hash": readiness.catalog_hash,
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
static_asset_ids = {
|
|
300
|
+
asset.asset_id
|
|
301
|
+
for asset in BenchmarkSmokeAssetRegistry.default().list(include_license_review=True)
|
|
302
|
+
if asset.cell_id in scope.production_static
|
|
303
|
+
}
|
|
304
|
+
static_assets_ready = all(
|
|
305
|
+
row["prepared"] for row in asset_rows if row["asset_id"] in static_asset_ids
|
|
306
|
+
) and static_asset_ids == {
|
|
307
|
+
row["asset_id"] for row in asset_rows if row["asset_id"] in static_asset_ids
|
|
308
|
+
}
|
|
309
|
+
all_source_assets_ready = len(asset_rows) == len(existing_campaign_assets()) and all(
|
|
310
|
+
row["prepared"] for row in asset_rows
|
|
311
|
+
)
|
|
312
|
+
stateful = []
|
|
313
|
+
for cell_id in scope.stateful_bridges:
|
|
314
|
+
implementation = _OFFICIAL_PROVIDER_IMPLEMENTATIONS[cell_id]
|
|
315
|
+
stateful.append(
|
|
316
|
+
{
|
|
317
|
+
"cell_id": cell_id,
|
|
318
|
+
"contract_available": True,
|
|
319
|
+
"provider_implemented": True,
|
|
320
|
+
"provider_entrypoint": implementation["provider_entrypoint"],
|
|
321
|
+
# A provider implementation and one operator's materialized
|
|
322
|
+
# runtime are different facts. The latter becomes ready only
|
|
323
|
+
# after exact checkouts, captures, and model bindings exist.
|
|
324
|
+
"official_atomic_runtime_ready": False,
|
|
325
|
+
"resolution_kind": implementation["resolution_kind"],
|
|
326
|
+
"next_step": implementation["next_step"],
|
|
327
|
+
"missing_runtime_inputs": (
|
|
328
|
+
"pinned checkout",
|
|
329
|
+
"captured checkpoint inventory",
|
|
330
|
+
"protected replay inventory",
|
|
331
|
+
"model/runtime binding",
|
|
332
|
+
),
|
|
333
|
+
}
|
|
334
|
+
)
|
|
335
|
+
full_ready = (
|
|
336
|
+
static_assets_ready
|
|
337
|
+
and method_summary["discovery_implemented"] == method_summary["method_count"]
|
|
338
|
+
and all(row["official_atomic_runtime_ready"] for row in stateful)
|
|
339
|
+
)
|
|
340
|
+
return MappingProxyType(
|
|
341
|
+
{
|
|
342
|
+
"schema_version": 1,
|
|
343
|
+
"protocol": "agentinputlab.campaign-doctor.v1",
|
|
344
|
+
"scope": dict(scope.to_dict()),
|
|
345
|
+
"prepared_root": str(prepared),
|
|
346
|
+
"assets": tuple(asset_rows),
|
|
347
|
+
"methods": method_summary,
|
|
348
|
+
"stateful": tuple(stateful),
|
|
349
|
+
"static_data_ready": static_assets_ready,
|
|
350
|
+
"all_accepted_sources_ready": all_source_assets_ready,
|
|
351
|
+
"full_campaign_ready": full_ready,
|
|
352
|
+
"experiments_executed": False,
|
|
353
|
+
}
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
def campaign_data_smoke(prepared_root: str | Path) -> Mapping[str, Any]:
|
|
358
|
+
"""Verify all accepted sources and execute every available static scorer.
|
|
359
|
+
|
|
360
|
+
Seven D2 cells expose complete static production adapters and therefore run
|
|
361
|
+
one real evaluator call. BFCL, ClariQ, and tau3 are also reloaded from
|
|
362
|
+
their checksum-locked prepared bytes. This command does not launch an
|
|
363
|
+
external model or arena, but it reports the implemented resolution path
|
|
364
|
+
instead of treating an absent operator binding as an absent implementation.
|
|
365
|
+
"""
|
|
366
|
+
|
|
367
|
+
root = Path(prepared_root).expanduser().resolve()
|
|
368
|
+
static_rows: list[dict[str, Any]] = []
|
|
369
|
+
for spec in production_benchmark_specs():
|
|
370
|
+
if spec.cell_id not in _STATIC_PRODUCTION_CELLS:
|
|
371
|
+
continue
|
|
372
|
+
adapter = load_production_benchmark_adapter(spec.cell_id, root)
|
|
373
|
+
example = adapter.examples(spec.split)[0]
|
|
374
|
+
visible = example.visible_state()
|
|
375
|
+
if isinstance(adapter, PreparedQABenchmarkAdapter):
|
|
376
|
+
metrics = adapter.score(example, QAPrediction(answer=""))
|
|
377
|
+
elif isinstance(adapter, PreparedRetrievalBenchmarkAdapter):
|
|
378
|
+
metrics = adapter.score(example, RetrievalPrediction({}))
|
|
379
|
+
else: # pragma: no cover - production factory invariant
|
|
380
|
+
raise ArtifactError("unexpected static production adapter type")
|
|
381
|
+
if not metrics or any(not isinstance(value, float) for value in metrics.values()):
|
|
382
|
+
raise ArtifactError(f"{spec.cell_id}: scorer smoke returned invalid metrics")
|
|
383
|
+
static_rows.append(
|
|
384
|
+
{
|
|
385
|
+
"cell_id": spec.cell_id,
|
|
386
|
+
"split": spec.split,
|
|
387
|
+
"example_count": len(adapter.examples(spec.split)),
|
|
388
|
+
"smoke_example_id": visible.task_id,
|
|
389
|
+
"visible_state_hash": visible.state_hash,
|
|
390
|
+
"metric_names": tuple(sorted(metrics)),
|
|
391
|
+
"scorer_executed": True,
|
|
392
|
+
}
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
source_rows: list[dict[str, Any]] = []
|
|
396
|
+
registry = BenchmarkSmokeAssetRegistry.default()
|
|
397
|
+
for asset_id in existing_campaign_assets():
|
|
398
|
+
asset = registry.get(asset_id)
|
|
399
|
+
prepared = load_prepared_benchmark(asset, root)
|
|
400
|
+
source_rows.append(
|
|
401
|
+
{
|
|
402
|
+
"asset_id": asset.asset_id,
|
|
403
|
+
"cell_id": asset.cell_id,
|
|
404
|
+
"counts": dict(prepared.counts),
|
|
405
|
+
"prepared_identity_sha256": _prepared_identity(prepared),
|
|
406
|
+
"source_integrity_verified": True,
|
|
407
|
+
}
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
tau3 = load_tau3_banking_bundle(root)
|
|
411
|
+
tau3.verify_integrity()
|
|
412
|
+
boundary_rows = (
|
|
413
|
+
{
|
|
414
|
+
"cell_id": "bfcl.v3.simple_python",
|
|
415
|
+
"source_integrity_verified": True,
|
|
416
|
+
"adapter_level": "loader_plus_typed_external_scorer_bridge",
|
|
417
|
+
"scorer_executed": False,
|
|
418
|
+
"resolution_kind": "operator_runtime_binding",
|
|
419
|
+
"next_step": (
|
|
420
|
+
"bind a BFCL model handler to the implemented typed scorer bridge; "
|
|
421
|
+
"the source loader and AST response normalizer are already present"
|
|
422
|
+
),
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"cell_id": "clariq.main",
|
|
426
|
+
"source_integrity_verified": True,
|
|
427
|
+
"adapter_level": "accepted_source_only",
|
|
428
|
+
"scorer_executed": False,
|
|
429
|
+
"resolution_kind": "official_bundle_acquisition",
|
|
430
|
+
"next_step": (
|
|
431
|
+
"the accepted dev TSV is not a complete official RQ1/RQ2 evaluation bundle"
|
|
432
|
+
),
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"cell_id": "tau3.banking_knowledge",
|
|
436
|
+
"source_integrity_verified": True,
|
|
437
|
+
"adapter_level": "static_bundle_plus_typed_checkpoint_bridge",
|
|
438
|
+
"task_count": len(tau3.task_ids),
|
|
439
|
+
"document_count": tau3.document_count,
|
|
440
|
+
"scorer_executed": False,
|
|
441
|
+
"provider_implemented": True,
|
|
442
|
+
"provider_entrypoint": _OFFICIAL_PROVIDER_IMPLEMENTATIONS["tau3.banking_knowledge"][
|
|
443
|
+
"provider_entrypoint"
|
|
444
|
+
],
|
|
445
|
+
"resolution_kind": "public_runtime_bootstrap",
|
|
446
|
+
"next_step": _OFFICIAL_PROVIDER_IMPLEMENTATIONS["tau3.banking_knowledge"]["next_step"],
|
|
447
|
+
},
|
|
448
|
+
)
|
|
449
|
+
return MappingProxyType(
|
|
450
|
+
{
|
|
451
|
+
"schema_version": 1,
|
|
452
|
+
"protocol": "agentinputlab.existing-data-smoke.v1",
|
|
453
|
+
"static_cells": tuple(static_rows),
|
|
454
|
+
"static_cell_count": len(static_rows),
|
|
455
|
+
"source_assets": tuple(source_rows),
|
|
456
|
+
"source_asset_count": len(source_rows),
|
|
457
|
+
"bridge_boundaries": boundary_rows,
|
|
458
|
+
"accepted_source_cells": tuple(sorted({row["cell_id"] for row in source_rows})),
|
|
459
|
+
"frozen_inventory_cells_touched": 0,
|
|
460
|
+
"real_prepared_data": True,
|
|
461
|
+
"model_called": False,
|
|
462
|
+
"experiment_executed": False,
|
|
463
|
+
}
|
|
464
|
+
)
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
def campaign_method_matrix(
|
|
468
|
+
method_catalog_path: str | Path,
|
|
469
|
+
readiness_path: str | Path,
|
|
470
|
+
) -> Mapping[str, Any]:
|
|
471
|
+
"""Build the exact 27-method discovery launch matrix.
|
|
472
|
+
|
|
473
|
+
This is an execution inventory, not an adapter waiver. Every row includes
|
|
474
|
+
a copyable preflight command, while ``adapter_ready`` remains tied to the
|
|
475
|
+
reviewed readiness catalog.
|
|
476
|
+
"""
|
|
477
|
+
|
|
478
|
+
catalog_path = Path(method_catalog_path).expanduser()
|
|
479
|
+
if catalog_path.is_symlink():
|
|
480
|
+
raise ArtifactError("campaign method catalog must not be a symlink")
|
|
481
|
+
catalog_path = catalog_path.resolve()
|
|
482
|
+
try:
|
|
483
|
+
payload = catalog_path.read_bytes()
|
|
484
|
+
raw = json.loads(payload.decode("utf-8"))
|
|
485
|
+
except (OSError, UnicodeError, json.JSONDecodeError) as exc:
|
|
486
|
+
raise ArtifactError("campaign method catalog is not valid UTF-8 JSON") from exc
|
|
487
|
+
if (
|
|
488
|
+
not isinstance(raw, Mapping)
|
|
489
|
+
or set(raw) != {"schema_version", "method_count", "methods"}
|
|
490
|
+
or raw.get("schema_version") != 1
|
|
491
|
+
or raw.get("method_count") != 27
|
|
492
|
+
or not isinstance(raw.get("methods"), list)
|
|
493
|
+
or len(raw["methods"]) != 27
|
|
494
|
+
):
|
|
495
|
+
raise ValidationError("campaign method catalog schema is invalid")
|
|
496
|
+
|
|
497
|
+
registry = AlgorithmRegistry.default()
|
|
498
|
+
readiness = load_adapter_readiness_matrix(readiness_path)
|
|
499
|
+
rows: list[dict[str, Any]] = []
|
|
500
|
+
observed: set[str] = set()
|
|
501
|
+
for index, item in enumerate(raw["methods"]):
|
|
502
|
+
if not isinstance(item, Mapping) or set(item) != {
|
|
503
|
+
"method_id",
|
|
504
|
+
"family",
|
|
505
|
+
"release_id",
|
|
506
|
+
"profile_kind",
|
|
507
|
+
"upstream_commit",
|
|
508
|
+
}:
|
|
509
|
+
raise ValidationError(f"campaign method catalog row {index} is invalid")
|
|
510
|
+
method_id = item["method_id"]
|
|
511
|
+
family = item["family"]
|
|
512
|
+
release_id = item["release_id"]
|
|
513
|
+
profile_kind = item["profile_kind"]
|
|
514
|
+
upstream_commit = item["upstream_commit"]
|
|
515
|
+
if (
|
|
516
|
+
not all(
|
|
517
|
+
isinstance(value, str) and value.strip()
|
|
518
|
+
for value in (
|
|
519
|
+
method_id,
|
|
520
|
+
family,
|
|
521
|
+
release_id,
|
|
522
|
+
profile_kind,
|
|
523
|
+
upstream_commit,
|
|
524
|
+
)
|
|
525
|
+
)
|
|
526
|
+
or method_id in observed
|
|
527
|
+
):
|
|
528
|
+
raise ValidationError(f"campaign method catalog row {index} identity is invalid")
|
|
529
|
+
observed.add(method_id)
|
|
530
|
+
method, release = registry.get_release(release_id)
|
|
531
|
+
if (
|
|
532
|
+
method.method_id != method_id
|
|
533
|
+
or method.semantic_family.value != family
|
|
534
|
+
or method.upstream.commit != upstream_commit
|
|
535
|
+
or profile_kind not in {mode.value for mode in release.profile_modes}
|
|
536
|
+
):
|
|
537
|
+
raise ValidationError(
|
|
538
|
+
f"campaign method catalog row {method_id!r} differs from the registry"
|
|
539
|
+
)
|
|
540
|
+
try:
|
|
541
|
+
gate = readiness.entries[method_id]
|
|
542
|
+
target_cell, target_split = _DISCOVERY_TARGETS[family]
|
|
543
|
+
except KeyError as exc:
|
|
544
|
+
raise ValidationError(
|
|
545
|
+
f"campaign method {method_id!r} lacks a readiness or target row"
|
|
546
|
+
) from exc
|
|
547
|
+
external = family in {"clarify", "composite"}
|
|
548
|
+
driver = _ATOMIC_ARENA_DRIVER if external else _METHOD_PROCESS_DRIVER
|
|
549
|
+
rows.append(
|
|
550
|
+
{
|
|
551
|
+
"method_id": method_id,
|
|
552
|
+
"display_name": method.display_name,
|
|
553
|
+
"family": family,
|
|
554
|
+
"release_id": release_id,
|
|
555
|
+
"profile_kind": profile_kind,
|
|
556
|
+
"upstream_commit": upstream_commit,
|
|
557
|
+
"release_entrypoint_available": release.entrypoint_available,
|
|
558
|
+
"release_availability": release.availability,
|
|
559
|
+
"l2_method_path": True,
|
|
560
|
+
"target": {
|
|
561
|
+
"cell_id": target_cell,
|
|
562
|
+
"split": target_split,
|
|
563
|
+
"external": external,
|
|
564
|
+
},
|
|
565
|
+
"driver": driver,
|
|
566
|
+
"integration_kind": gate.discovery.integration_kind,
|
|
567
|
+
"adapter_ready": gate.discovery.status == "implemented",
|
|
568
|
+
"adapter_blockers": gate.discovery.blockers,
|
|
569
|
+
"implementation_ready": gate.discovery.status == "implemented",
|
|
570
|
+
"runtime_binding_required": True,
|
|
571
|
+
"runtime_resolution": {
|
|
572
|
+
"checkout": (
|
|
573
|
+
"agentinputlab campaign bootstrap --root operator/methods "
|
|
574
|
+
f"--method {method_id} --no-arenas --allow-network"
|
|
575
|
+
),
|
|
576
|
+
"preflight": (
|
|
577
|
+
f"python scripts/experiments/run_method_discovery.py --method {method_id}"
|
|
578
|
+
),
|
|
579
|
+
"execute": (
|
|
580
|
+
"python scripts/experiments/run_method_discovery.py "
|
|
581
|
+
f"--method {method_id} --execute"
|
|
582
|
+
),
|
|
583
|
+
},
|
|
584
|
+
"preflight_command": (
|
|
585
|
+
f"python scripts/experiments/run_method_discovery.py --method {method_id}"
|
|
586
|
+
),
|
|
587
|
+
"execute_command": (
|
|
588
|
+
"python scripts/experiments/run_method_discovery.py "
|
|
589
|
+
f"--method {method_id} --execute"
|
|
590
|
+
),
|
|
591
|
+
}
|
|
592
|
+
)
|
|
593
|
+
registered = {method.method_id for method in registry.list_methods()}
|
|
594
|
+
if observed != registered or observed != set(readiness.entries):
|
|
595
|
+
raise ValidationError("campaign method catalog does not cover the exact 27-method roster")
|
|
596
|
+
implemented = sum(row["adapter_ready"] for row in rows)
|
|
597
|
+
return MappingProxyType(
|
|
598
|
+
{
|
|
599
|
+
"schema_version": 1,
|
|
600
|
+
"protocol": "agentinputlab.campaign-method-matrix.v1",
|
|
601
|
+
"method_catalog": str(catalog_path),
|
|
602
|
+
"method_catalog_sha256": hashlib.sha256(payload).hexdigest(),
|
|
603
|
+
"readiness_catalog": str(readiness.path),
|
|
604
|
+
"readiness_catalog_sha256": readiness.file_sha256,
|
|
605
|
+
"method_count": len(rows),
|
|
606
|
+
"l2_method_paths": len(rows),
|
|
607
|
+
"integration_implemented": implemented,
|
|
608
|
+
"adapter_ready": implemented,
|
|
609
|
+
"adapter_blocked": len(rows) - implemented,
|
|
610
|
+
"experiments_executed": False,
|
|
611
|
+
"methods": tuple(rows),
|
|
612
|
+
}
|
|
613
|
+
)
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
def campaign_verify_run(
|
|
617
|
+
run_dir: str | Path,
|
|
618
|
+
*,
|
|
619
|
+
allow_incomplete: bool = False,
|
|
620
|
+
) -> Mapping[str, Any]:
|
|
621
|
+
"""Verify one append-only run directory under the shared strict verifier."""
|
|
622
|
+
|
|
623
|
+
result = verify_experiment_run_directory(run_dir)
|
|
624
|
+
if not allow_incomplete and not (result["complete"] and result["all_succeeded"]):
|
|
625
|
+
raise ArtifactError("campaign run is incomplete or contains failed cells")
|
|
626
|
+
return result
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
def _prepared_identity(prepared: Any) -> str:
|
|
630
|
+
payload = {
|
|
631
|
+
"asset_id": prepared.asset_id,
|
|
632
|
+
"cell_id": prepared.cell_id,
|
|
633
|
+
"counts": dict(prepared.counts),
|
|
634
|
+
"file_sha256": dict(prepared.file_sha256),
|
|
635
|
+
"processor": prepared.processor,
|
|
636
|
+
"processor_revision": prepared.processor_revision,
|
|
637
|
+
"source_revision": prepared.source_revision,
|
|
638
|
+
"source_sha256": prepared.source_sha256,
|
|
639
|
+
"split": prepared.split,
|
|
640
|
+
}
|
|
641
|
+
encoded = json.dumps(payload, ensure_ascii=False, sort_keys=True, separators=(",", ":"))
|
|
642
|
+
return hashlib.sha256(encoded.encode("utf-8")).hexdigest()
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
__all__ = [
|
|
646
|
+
"CAMPAIGN_SCOPE_PROTOCOL",
|
|
647
|
+
"ExistingDataCampaignScope",
|
|
648
|
+
"campaign_data_smoke",
|
|
649
|
+
"campaign_doctor",
|
|
650
|
+
"campaign_method_matrix",
|
|
651
|
+
"campaign_verify_run",
|
|
652
|
+
"existing_campaign_assets",
|
|
653
|
+
"existing_data_campaign_scope",
|
|
654
|
+
]
|