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,74 @@
|
|
|
1
|
+
"""Export source-bound HotpotQA prompts without executing config-file code."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import ast
|
|
6
|
+
import json
|
|
7
|
+
import subprocess
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
from . import driver
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def literal_string(node, constants):
|
|
14
|
+
if isinstance(node, ast.Constant) and isinstance(node.value, str):
|
|
15
|
+
return node.value
|
|
16
|
+
if isinstance(node, ast.Name) and node.id in constants:
|
|
17
|
+
return constants[node.id]
|
|
18
|
+
if isinstance(node, ast.BinOp) and isinstance(node.op, ast.Add):
|
|
19
|
+
return literal_string(node.left, constants) + literal_string(node.right, constants)
|
|
20
|
+
if isinstance(node, ast.JoinedStr):
|
|
21
|
+
parts = []
|
|
22
|
+
for part in node.values:
|
|
23
|
+
if isinstance(part, ast.FormattedValue):
|
|
24
|
+
if part.conversion != -1 or part.format_spec is not None:
|
|
25
|
+
raise ValueError("prompt formatting is outside the literal exporter")
|
|
26
|
+
part = part.value
|
|
27
|
+
parts.append(literal_string(part, constants))
|
|
28
|
+
return "".join(parts)
|
|
29
|
+
raise ValueError("prompt expression is not a literal string; code execution forbidden")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def export(checkout, output, template="gpt"):
|
|
33
|
+
if template not in {"gpt", "llama"}:
|
|
34
|
+
raise ValueError("template must be gpt or llama")
|
|
35
|
+
driver.verify_checkout(checkout)
|
|
36
|
+
relative = f"configs/hotpotqa/{template}_prompts.py"
|
|
37
|
+
source = driver._read_bytes(checkout / relative, label="pinned prompt source")
|
|
38
|
+
tracked = subprocess.run(("git", "-C", str(checkout), "show", f"HEAD:{relative}"),
|
|
39
|
+
capture_output=True, check=True, timeout=30).stdout
|
|
40
|
+
if tracked != source:
|
|
41
|
+
raise ValueError("prompt file differs from its pinned Git blob")
|
|
42
|
+
constants = {}
|
|
43
|
+
for node in ast.parse((checkout / "src/llm_compiler/constants.py").read_text()).body:
|
|
44
|
+
if isinstance(node, ast.Assign) and len(node.targets) == 1:
|
|
45
|
+
constants[node.targets[0].id] = ast.literal_eval(node.value)
|
|
46
|
+
values = {node.targets[0].id: literal_string(node.value, constants)
|
|
47
|
+
for node in ast.parse(source).body if isinstance(node, ast.Assign) and len(node.targets) == 1}
|
|
48
|
+
prompts = {"planner_example_prompt": values["PLANNER_PROMPT"],
|
|
49
|
+
"planner_example_prompt_replan": values["PLANNER_PROMPT"],
|
|
50
|
+
"planner_stop": [constants["END_OF_PLAN"]], "joinner_prompt": values["OUTPUT_PROMPT"],
|
|
51
|
+
"joinner_prompt_final": values["OUTPUT_PROMPT"]}
|
|
52
|
+
bundle = {"schema_version": "agentinputlab.llmcompiler.prompts.v1",
|
|
53
|
+
"upstream_commit": driver.UPSTREAM_COMMIT, "prompts": prompts}
|
|
54
|
+
raw = json.dumps(bundle, indent=2, sort_keys=True, ensure_ascii=False).encode()
|
|
55
|
+
if len(raw) > 64 * 1024:
|
|
56
|
+
raise ValueError("exported prompt bundle exceeds64KiB")
|
|
57
|
+
with output.open("xb") as handle:
|
|
58
|
+
handle.write(raw)
|
|
59
|
+
return {"status": "ok", "source_relative_path": relative,
|
|
60
|
+
"source_sha256": driver._sha256_bytes(source), "prompt_hash": driver._canonical_hash(prompts),
|
|
61
|
+
"upstream_commit": driver.UPSTREAM_COMMIT, "config_code_executed": False}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def main():
|
|
65
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
66
|
+
parser.add_argument("--checkout", type=Path, required=True)
|
|
67
|
+
parser.add_argument("--output", type=Path, required=True)
|
|
68
|
+
parser.add_argument("--template", choices=("gpt", "llama"), default="gpt")
|
|
69
|
+
args = parser.parse_args()
|
|
70
|
+
print(json.dumps(export(args.checkout, args.output, args.template), sort_keys=True))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
if __name__ == "__main__":
|
|
74
|
+
main()
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"""Explicit controlled live model/tool callback transport for pinned LLMCompiler.
|
|
2
|
+
|
|
3
|
+
Only a startup-bound authenticated numeric-loopback endpoint is reachable. No
|
|
4
|
+
provider key, request-selected URL, import, shell command, or network tool exists
|
|
5
|
+
inside this worker. Native upstream planning/scheduling/join/replan is retained.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import argparse
|
|
10
|
+
import asyncio
|
|
11
|
+
import importlib.metadata
|
|
12
|
+
import json
|
|
13
|
+
import os
|
|
14
|
+
import re
|
|
15
|
+
import sys
|
|
16
|
+
import urllib.parse
|
|
17
|
+
import urllib.request
|
|
18
|
+
from collections.abc import Mapping
|
|
19
|
+
from types import SimpleNamespace
|
|
20
|
+
from uuid import uuid4
|
|
21
|
+
|
|
22
|
+
from . import driver
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def runtime_attestation():
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
manifest = driver._verify_static_manifests()
|
|
28
|
+
return {"schema": "agentinputlab.llmcompiler.live-attestation.v1",
|
|
29
|
+
"driver_sha256": driver._sha256_bytes(Path(driver.__file__).read_bytes()),
|
|
30
|
+
"live_driver_sha256": driver._sha256_bytes(Path(__file__).read_bytes()),
|
|
31
|
+
"compatibility_manifest_sha256": driver.COMPATIBILITY_MANIFEST_SHA256,
|
|
32
|
+
"required_versions": {name: importlib.metadata.version(name)
|
|
33
|
+
for name in manifest["legacy_dependencies"]["required_versions"]},
|
|
34
|
+
"source_files_verified": True, "required_versions_verified": True, "import_origins_verified": True}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def load_prompts(path, request):
|
|
38
|
+
value, _ = driver._load_json(path, label="LLMCompiler live prompt bundle")
|
|
39
|
+
driver._expect_keys(value, {"schema_version", "upstream_commit", "prompts"}, label="prompt bundle")
|
|
40
|
+
prompts = value["prompts"]
|
|
41
|
+
keys = {"planner_example_prompt", "planner_example_prompt_replan", "planner_stop",
|
|
42
|
+
"joinner_prompt", "joinner_prompt_final"}
|
|
43
|
+
if (value["schema_version"] != "agentinputlab.llmcompiler.prompts.v1"
|
|
44
|
+
or value["upstream_commit"] != driver.UPSTREAM_COMMIT
|
|
45
|
+
or not isinstance(prompts, Mapping) or set(prompts) != keys
|
|
46
|
+
or driver._canonical_hash(prompts) != request.prompt_hash
|
|
47
|
+
or not all(isinstance(prompts[k], str) for k in keys - {"planner_stop"})
|
|
48
|
+
or not isinstance(prompts["planner_stop"], list)
|
|
49
|
+
or not all(isinstance(s, str) and s for s in prompts["planner_stop"])):
|
|
50
|
+
raise driver.WorkerFailure("DEPENDENCY_MISMATCH", "live prompt bundle identity differs")
|
|
51
|
+
return driver.ReplayBundle(prompts=dict(prompts), entries=())
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class Callback:
|
|
55
|
+
def __init__(self, url, key_env, request):
|
|
56
|
+
parsed = urllib.parse.urlparse(url)
|
|
57
|
+
if (parsed.scheme != "http" or parsed.hostname != "127.0.0.1" or parsed.port is None
|
|
58
|
+
or parsed.path != "/callback" or parsed.username or parsed.password
|
|
59
|
+
or parsed.query or parsed.fragment):
|
|
60
|
+
raise driver.WorkerFailure("CONFIGURATION_INVALID", "callback URL must be numeric IPv4 loopback")
|
|
61
|
+
if not re.fullmatch(r"[A-Z_][A-Z0-9_]*", key_env) or not os.environ.get(key_env):
|
|
62
|
+
raise driver.WorkerFailure("CONFIGURATION_INVALID", "callback credential unavailable")
|
|
63
|
+
self.url, self.key, self.request = url, os.environ[key_env], request
|
|
64
|
+
|
|
65
|
+
async def call(self, kind, payload):
|
|
66
|
+
value = {"request_id": self.request.request_id, "call_id": uuid4().hex,
|
|
67
|
+
"kind": kind, "payload": payload}
|
|
68
|
+
|
|
69
|
+
def send():
|
|
70
|
+
request = urllib.request.Request(self.url, data=driver._canonical_json(value).encode(),
|
|
71
|
+
headers={"Authorization": "Bearer " + self.key, "Content-Type": "application/json"})
|
|
72
|
+
try:
|
|
73
|
+
with urllib.request.build_opener(urllib.request.ProxyHandler({})).open(
|
|
74
|
+
request, timeout=self.request.controls.timeout_seconds) as response:
|
|
75
|
+
raw = response.read(driver._MAX_MANIFEST_BYTES + 1)
|
|
76
|
+
if len(raw) > driver._MAX_MANIFEST_BYTES:
|
|
77
|
+
raise ValueError("callback response byte limit")
|
|
78
|
+
result = json.loads(raw)
|
|
79
|
+
if not isinstance(result, dict) or result.get("ok") is not True:
|
|
80
|
+
raise ValueError("callback failed")
|
|
81
|
+
return result["payload"]
|
|
82
|
+
except Exception:
|
|
83
|
+
raise driver.WorkerFailure("HOST_CALLBACK_FAILED", "bound host callback failed; no retry",
|
|
84
|
+
consumed=True) from None
|
|
85
|
+
|
|
86
|
+
return await asyncio.to_thread(send)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class LiveModel(driver._ReplayModel):
|
|
90
|
+
def __init__(self, callback):
|
|
91
|
+
super().__init__(())
|
|
92
|
+
self.callback = callback
|
|
93
|
+
|
|
94
|
+
async def complete(self, channel, prompt, stop):
|
|
95
|
+
index = len(self.consumed)
|
|
96
|
+
self.consumed.append(driver.ReplayEntry(channel, driver._sha256_text(prompt), "", 0, 0))
|
|
97
|
+
value = await self.callback.call("model", {"prompt": prompt, "channel": channel,
|
|
98
|
+
"stop": list(stop or ()), "seed": self.callback.request.seed})
|
|
99
|
+
if (not isinstance(value, dict) or set(value) != {"text", "input_tokens", "output_tokens", "finish_reason"}
|
|
100
|
+
or not isinstance(value["text"], str)):
|
|
101
|
+
raise driver.WorkerFailure("BACKEND_OUTPUT_INVALID", "invalid live model response", consumed=True)
|
|
102
|
+
entry = driver.ReplayEntry(channel, driver._sha256_text(prompt), value["text"],
|
|
103
|
+
driver._nonnegative_int(value["input_tokens"], label="input_tokens"),
|
|
104
|
+
driver._nonnegative_int(value["output_tokens"], label="output_tokens"))
|
|
105
|
+
self.consumed[index] = entry
|
|
106
|
+
if not entry.response.strip():
|
|
107
|
+
raise driver.WorkerFailure("BACKEND_OUTPUT_INVALID", "live model returned empty final text", consumed=True)
|
|
108
|
+
if channel == "planner":
|
|
109
|
+
self.planner_responses.append(entry.response)
|
|
110
|
+
return entry.response
|
|
111
|
+
|
|
112
|
+
async def apredict(self, prompt, *, callbacks=None, stop=None, **kwargs):
|
|
113
|
+
response = await self.complete("planner", prompt, stop)
|
|
114
|
+
# This is buffered completion delivery, never native streaming parity.
|
|
115
|
+
await self._notify(callbacks, response)
|
|
116
|
+
return response
|
|
117
|
+
|
|
118
|
+
async def agenerate_prompt(self, prompts, stop=None, callbacks=None, **kwargs):
|
|
119
|
+
if len(prompts) != 1:
|
|
120
|
+
raise driver.WorkerFailure("BACKEND_OUTPUT_INVALID", "one join prompt required")
|
|
121
|
+
value = prompts[0]
|
|
122
|
+
prompt = value.text if hasattr(value, "text") else value.to_string()
|
|
123
|
+
response = await self.complete("join", prompt, stop)
|
|
124
|
+
return SimpleNamespace(generations=[[SimpleNamespace(text=response)]])
|
|
125
|
+
|
|
126
|
+
def assert_exhausted(self):
|
|
127
|
+
# There is no frozen response count in an actual live execution.
|
|
128
|
+
pass
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class LiveTools:
|
|
132
|
+
def __init__(self, callback):
|
|
133
|
+
self.callback, self.calls = callback, 0
|
|
134
|
+
|
|
135
|
+
async def invoke(self, name, arguments):
|
|
136
|
+
self.calls += 1
|
|
137
|
+
value = await self.callback.call("tool", {"name": name, "arguments": list(arguments)})
|
|
138
|
+
if not isinstance(value, dict) or set(value) != {"output"}:
|
|
139
|
+
raise driver.WorkerFailure("TOOL_EXECUTION_FAILURE", "invalid bound tool response", consumed=True)
|
|
140
|
+
return value["output"]
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def main(argv=None):
|
|
144
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
145
|
+
for key in ("checkout", "prompt-bundle", "callback-url", "callback-key-env"):
|
|
146
|
+
parser.add_argument("--" + key, required=True)
|
|
147
|
+
args = parser.parse_args(argv)
|
|
148
|
+
request_id = ""
|
|
149
|
+
try:
|
|
150
|
+
from pathlib import Path
|
|
151
|
+
driver.verify_checkout(Path(args.checkout))
|
|
152
|
+
raw = driver._read_request_line()
|
|
153
|
+
if isinstance(raw, Mapping):
|
|
154
|
+
request_id = raw.get("request_id", "")
|
|
155
|
+
request = driver.validate_request(raw)
|
|
156
|
+
bundle = load_prompts(Path(args.prompt_bundle), request)
|
|
157
|
+
callback = Callback(args.callback_url, args.callback_key_env, request)
|
|
158
|
+
upstream = driver.import_upstream(Path(args.checkout))
|
|
159
|
+
asyncio.run(callback.call("attest", runtime_attestation()))
|
|
160
|
+
response = asyncio.run(driver.execute_request(request, upstream, bundle, LiveTools(callback),
|
|
161
|
+
runtime_model=LiveModel(callback)))
|
|
162
|
+
except driver.WorkerFailure as exc:
|
|
163
|
+
response = driver._failure_response(exc, request_id=request_id)
|
|
164
|
+
except Exception as exc:
|
|
165
|
+
response = driver._failure_response(driver.WorkerFailure("WORKER_INTERNAL_FAILURE",
|
|
166
|
+
f"live worker failed closed: {type(exc).__name__}"), request_id=request_id)
|
|
167
|
+
sys.stdout.write(driver._canonical_json(response) + "\n")
|
|
168
|
+
sys.stdout.flush()
|
|
169
|
+
# Preserve typed errors and usage for the supervised host, not only stderr.
|
|
170
|
+
return 0
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
if __name__ == "__main__":
|
|
174
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "agentinputlab.llmcompiler.patch-manifest.v1",
|
|
3
|
+
"upstream_commit": "a00c9d35507507da70e8c637eee64efc8c1857ae",
|
|
4
|
+
"patches": [
|
|
5
|
+
{
|
|
6
|
+
"id": "request_local_completed_dependency_lookup_v1",
|
|
7
|
+
"kind": "runtime_compatibility_patch",
|
|
8
|
+
"upstream_symbols": [
|
|
9
|
+
"src.llm_compiler.task_fetching_unit.TaskFetchingUnit",
|
|
10
|
+
"src.llm_compiler.llm_compiler.LLMCompiler._acall"
|
|
11
|
+
],
|
|
12
|
+
"changes": [
|
|
13
|
+
"retain completed task observations and completion events for dependency lookup across native replan TFU instances",
|
|
14
|
+
"preserve global upstream task IDs and dependency substitution without rewriting model responses or plans",
|
|
15
|
+
"keep each TFU iteration and scheduling set round-local so completed tasks are neither executed nor appended to scratchpad twice",
|
|
16
|
+
"scope the completed dependency cache to a single full invocation; never share observations between requests"
|
|
17
|
+
],
|
|
18
|
+
"algorithm_logic_changed": false
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "explicit_host_live_callbacks_v1",
|
|
22
|
+
"kind": "transport_compatibility_patch",
|
|
23
|
+
"upstream_symbols": [
|
|
24
|
+
"src.llm_compiler.planner.Planner.run_llm",
|
|
25
|
+
"src.llm_compiler.llm_compiler.LLMCompilerAgent.arun",
|
|
26
|
+
"src.tools.base.Tool"
|
|
27
|
+
],
|
|
28
|
+
"changes": [
|
|
29
|
+
"add an explicitly selected authenticated numeric-loopback callback seam to caller-bound model and read-only tools",
|
|
30
|
+
"retain upstream planning, dependency substitution, scheduling, join and replan",
|
|
31
|
+
"bind callback requests to the root request identity and state execution budget",
|
|
32
|
+
"require worker source/version/dependency attestation before model or tool callbacks",
|
|
33
|
+
"bind explicit positional argument order for multi-parameter tool dispatch and task traces",
|
|
34
|
+
"record host-observed usage and genuine model/tool failures without automatic retries",
|
|
35
|
+
"declare streamed callbacks buffered after completion, without native-streaming latency or checkpoint parity claims"
|
|
36
|
+
],
|
|
37
|
+
"algorithm_logic_changed": false
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "controlled_replay_model_type_gate_v1",
|
|
41
|
+
"kind": "transport_compatibility_patch",
|
|
42
|
+
"upstream_symbols": [
|
|
43
|
+
"src.llm_compiler.planner.BaseLLM",
|
|
44
|
+
"src.llm_compiler.llm_compiler.BaseLLM"
|
|
45
|
+
],
|
|
46
|
+
"changes": [
|
|
47
|
+
"bind the upstream BaseLLM isinstance gates to the worker-local replay adapter",
|
|
48
|
+
"preserve Planner.run_llm and LLMCompilerAgent.arun without importing a request-selected backend",
|
|
49
|
+
"match every planner and join prompt by SHA-256 before releasing its frozen response"
|
|
50
|
+
],
|
|
51
|
+
"algorithm_logic_changed": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "bounded_task_fetching_trace_v1",
|
|
55
|
+
"kind": "safety_and_observability_patch",
|
|
56
|
+
"upstream_symbols": [
|
|
57
|
+
"src.llm_compiler.task_fetching_unit.TaskFetchingUnit",
|
|
58
|
+
"src.llm_compiler.llm_compiler.TaskFetchingUnit"
|
|
59
|
+
],
|
|
60
|
+
"changes": [
|
|
61
|
+
"subclass the official TaskFetchingUnit while retaining its dependency scheduling and argument substitution",
|
|
62
|
+
"bound concurrent task bodies with the request concurrency control",
|
|
63
|
+
"reject excess, duplicate, malformed, or non-allowlisted tasks before their execution",
|
|
64
|
+
"record planned, ready, running, completed, and failed scheduler states",
|
|
65
|
+
"unblock and abort the scheduler after a tool failure so the upstream busy loop cannot deadlock"
|
|
66
|
+
],
|
|
67
|
+
"algorithm_logic_changed": false
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "fail_closed_join_guard_v1",
|
|
71
|
+
"kind": "security_patch",
|
|
72
|
+
"upstream_symbols": [
|
|
73
|
+
"src.llm_compiler.llm_compiler.LLMCompiler.join"
|
|
74
|
+
],
|
|
75
|
+
"changes": [
|
|
76
|
+
"refuse the join model call after any tool execution failure",
|
|
77
|
+
"never turn a missing or denied tool observation into a synthetic final answer"
|
|
78
|
+
],
|
|
79
|
+
"algorithm_logic_changed": false
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "replan_control_translation_v1",
|
|
83
|
+
"kind": "configuration_compatibility_patch",
|
|
84
|
+
"upstream_symbols": [
|
|
85
|
+
"src.llm_compiler.llm_compiler.LLMCompiler._acall"
|
|
86
|
+
],
|
|
87
|
+
"changes": [
|
|
88
|
+
"translate AgentInputLab max_replans=N to the upstream loop bound N+1",
|
|
89
|
+
"retain one initial planning iteration when max_replans is zero"
|
|
90
|
+
],
|
|
91
|
+
"algorithm_logic_changed": false
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "jsonl_stdout_isolation_v1",
|
|
95
|
+
"kind": "transport_safety_patch",
|
|
96
|
+
"upstream_symbols": [
|
|
97
|
+
"src.utils.logger_utils.enable_logging",
|
|
98
|
+
"src.utils.logger_utils.log"
|
|
99
|
+
],
|
|
100
|
+
"changes": [
|
|
101
|
+
"disable official verbose logging",
|
|
102
|
+
"discard incidental stdout during imports and execution so stdout remains exactly one JSON response line"
|
|
103
|
+
],
|
|
104
|
+
"algorithm_logic_changed": false
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "whole_run_timeout_and_async_cleanup_v1",
|
|
108
|
+
"kind": "runtime_safety_patch",
|
|
109
|
+
"upstream_symbols": [
|
|
110
|
+
"src.llm_compiler.planner.Planner.aplan",
|
|
111
|
+
"src.llm_compiler.llm_compiler.LLMCompiler._acall",
|
|
112
|
+
"src.llm_compiler.task_fetching_unit.TaskFetchingUnit._run_task"
|
|
113
|
+
],
|
|
114
|
+
"changes": [
|
|
115
|
+
"apply controls.timeout_seconds to the complete worker execution rather than an individual model call",
|
|
116
|
+
"always signal the streaming queue when its planner exits or fails",
|
|
117
|
+
"cancel and await planner and tool tasks on failure, cancellation, timeout, and successful shutdown",
|
|
118
|
+
"settle the upstream fire-and-forget planner task before permitting join"
|
|
119
|
+
],
|
|
120
|
+
"algorithm_logic_changed": false
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "pre_schedule_dependency_validation_v1",
|
|
124
|
+
"kind": "runtime_safety_patch",
|
|
125
|
+
"upstream_symbols": [
|
|
126
|
+
"src.llm_compiler.task_fetching_unit.TaskFetchingUnit.set_tasks"
|
|
127
|
+
],
|
|
128
|
+
"changes": [
|
|
129
|
+
"validate each incoming task batch atomically before passing it to the official scheduler",
|
|
130
|
+
"reject unknown, duplicate, self-referential, malformed, cyclic, or excess tasks before execution"
|
|
131
|
+
],
|
|
132
|
+
"algorithm_logic_changed": false
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "complete_legacy_dependency_attestation_v1",
|
|
136
|
+
"kind": "compatibility_verification_patch",
|
|
137
|
+
"upstream_symbols": [
|
|
138
|
+
"requirements.txt"
|
|
139
|
+
],
|
|
140
|
+
"changes": [
|
|
141
|
+
"verify every distribution version listed in compatibility_manifest.json",
|
|
142
|
+
"verify every imported top-level package originates inside its pinned distribution"
|
|
143
|
+
],
|
|
144
|
+
"algorithm_logic_changed": false
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
}
|
workers/mce/README.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# MCE isolated worker
|
|
2
|
+
|
|
3
|
+
This sidecar integrates
|
|
4
|
+
`metaevo-ai/meta-context-engineering@c4b7a7c2ce3ffc4bf4a74c52d2dd8a9a8fb14c30`
|
|
5
|
+
without moving generated Python or context contents into the AgentInputLab
|
|
6
|
+
host.
|
|
7
|
+
|
|
8
|
+
## Controlled semantic-patch path
|
|
9
|
+
|
|
10
|
+
`MCEOfficialRuntime` calls the upstream `mce.main.run_iteration` function for
|
|
11
|
+
baseline iteration zero and every configured evolution iteration. The function
|
|
12
|
+
must originate from the pinned `mce/main.py` SHA-256; preloaded `sys.modules`
|
|
13
|
+
substitutes are discarded.
|
|
14
|
+
|
|
15
|
+
This is deliberately **not** an `official_native` adapter. A hash-bound semantic
|
|
16
|
+
patch replaces exactly four globals already imported by `mce.main`:
|
|
17
|
+
|
|
18
|
+
- `run_meta_agent` and `run_base_agent` delegate to an isolated manager's
|
|
19
|
+
remote `run_agent`;
|
|
20
|
+
- `load_interfaces` performs remote static validation and returns an opaque
|
|
21
|
+
receipt, never a locally imported callable;
|
|
22
|
+
- `batch_evaluate` delegates to a separate trusted oracle supervisor.
|
|
23
|
+
|
|
24
|
+
The pinned `run_iteration` orchestration, baseline/sub-iteration loop, batching,
|
|
25
|
+
aggregation, and returned validation metric remain upstream code. The patch
|
|
26
|
+
manifest and digest are bound through worker identity, request, runtime
|
|
27
|
+
binding, artifact bundle, and response attestation.
|
|
28
|
+
|
|
29
|
+
The host freezes:
|
|
30
|
+
|
|
31
|
+
- train and validation example identities and input hashes;
|
|
32
|
+
- the interface and initial-context hashes;
|
|
33
|
+
- target, meta, and base model fingerprints;
|
|
34
|
+
- seed, iteration, batch, call, wall, and artifact limits;
|
|
35
|
+
- source commit and source-file hashes;
|
|
36
|
+
- sandbox image, policy, test report, and resource limits.
|
|
37
|
+
|
|
38
|
+
## Security boundary
|
|
39
|
+
|
|
40
|
+
The driver must run inside the container or microVM named by the
|
|
41
|
+
`MCESandboxAttestation`. The source mount is read-only and the workspace is
|
|
42
|
+
new for every request. Generated code may execute only inside that worker.
|
|
43
|
+
The validation oracle is mounted only in a trusted, out-of-process supervisor;
|
|
44
|
+
the generated workspace cannot see it, and only the supervisor returns metric
|
|
45
|
+
values. Provider calls pass through the same trusted boundary, which reserves
|
|
46
|
+
model/tool budget before transport. A production runtime must supply the exact
|
|
47
|
+
isolated-manager fingerprint and implement `bind_run`, `run_agent`,
|
|
48
|
+
`validate_interfaces_static`, `batch_evaluate`, and `usage_receipt`; any
|
|
49
|
+
missing or altered field fails closed. This is an operator-attested deployment
|
|
50
|
+
boundary, not a claim that a Python object can cryptographically prove its own
|
|
51
|
+
container or microVM.
|
|
52
|
+
Only path, media type, byte size, SHA-256, iteration score, and normalized
|
|
53
|
+
usage leave the worker. Symlinks, paths outside the workspace, test-split
|
|
54
|
+
fields, and inline file contents are rejected.
|
|
55
|
+
|
|
56
|
+
The public upstream currently raises `NotImplementedError` for its own E2B
|
|
57
|
+
flag, so AgentInputLab does not describe that flag as a working sandbox.
|
|
58
|
+
Isolation is supplied by the external worker deployment.
|
|
59
|
+
|
|
60
|
+
Upstream does not expose complete model-call/token accounting. The isolated
|
|
61
|
+
manager therefore binds target/meta/base model identities to a trusted
|
|
62
|
+
pre-call supervisor and must return an exact usage receipt. Missing or
|
|
63
|
+
different accounting fails closed. The runtime seeds Python once per run.
|
|
64
|
+
At the three stochastic patched seams it assigns deterministic logical seeds as
|
|
65
|
+
`base_seed + logical_call_index`, in upstream invocation order and before each
|
|
66
|
+
await. A batch evaluator may fan out into multiple provider calls; the attested
|
|
67
|
+
manager contract therefore requires each actual provider call to derive a
|
|
68
|
+
non-negative 63-bit seed from SHA-256 over the canonical, versioned
|
|
69
|
+
`{logical_seed, stable_subcall_index}` identity in stable sample/call order.
|
|
70
|
+
This avoids the cross-call collisions caused by simple integer addition. The
|
|
71
|
+
manager passes that seed through `before_seeded_model_call`, which verifies the
|
|
72
|
+
derivation before reserving the provider call. These versioned seed modes are bound into the
|
|
73
|
+
semantic-patch manifest, manager fingerprint, run binding, sandbox attestation,
|
|
74
|
+
and response attestation. This remains an operator-attested boundary rather
|
|
75
|
+
than cryptographic proof of a remote provider's sampling implementation. The
|
|
76
|
+
configured wall deadline applies to the complete run.
|
|
77
|
+
|
|
78
|
+
## Status boundary
|
|
79
|
+
|
|
80
|
+
The checked path is an `external_only`, controlled thin-wrapper L2 integration.
|
|
81
|
+
It is not an official E2B path or a paper-result reproduction: model
|
|
82
|
+
credentials/local weights, a production isolated-manager deployment, a
|
|
83
|
+
task-specific upstream environment, and generated artifacts remain operator
|
|
84
|
+
supplied. The fixture runtime is rejected unless explicitly enabled.
|
|
85
|
+
|
|
86
|
+
An operator constructs `MCEWorkerDriver` with the trusted runtime, artifact
|
|
87
|
+
store, and sandbox attestation, then exposes it with
|
|
88
|
+
`workers.mce.serve_jsonl(driver, input_stream, output_stream)`. The module CLI
|
|
89
|
+
intentionally refuses to invent those trust-boundary dependencies.
|
|
90
|
+
|
|
91
|
+
## Text-artifact fitting API
|
|
92
|
+
|
|
93
|
+
The separate text-only profile produces Markdown context instead of executable
|
|
94
|
+
interfaces. Install `agentinputlab[mce-text]` and mount the pinned upstream
|
|
95
|
+
checkout. In a dedicated child process, set `PYTHON_DOTENV_DISABLED=1`, give the
|
|
96
|
+
unused upstream client a non-secret dummy `OPENAI_API_KEY`, and set its
|
|
97
|
+
`OPENAI_API_BASE=http://127.0.0.1:1/v1`. Actual inference uses the explicitly
|
|
98
|
+
supplied backend; configure its credentials under a different environment key.
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
from agentinputlab.recipes import (
|
|
102
|
+
MCETextFitControls, MCETextOfflineRecipe, MCETextArtifactCommonSupport,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# train and validation are disjoint sequences of MCEExample objects, with
|
|
106
|
+
# input={"question": ..., "context": ...}, a text expected_output, and the
|
|
107
|
+
# corresponding split. backend is a real, metered LLMBackend.
|
|
108
|
+
artifact = MCETextOfflineRecipe(MCETextFitControls(
|
|
109
|
+
iterations=1, train_batch_size=2, per_call_output_tokens=512,
|
|
110
|
+
max_model_calls=32, max_output_tokens=16384, seed=17,
|
|
111
|
+
)).fit(
|
|
112
|
+
checkout="/path/to/pinned/meta-context-engineering",
|
|
113
|
+
output_root="/path/to/new/fit-directory",
|
|
114
|
+
train=train, validation=validation, backend=backend,
|
|
115
|
+
)
|
|
116
|
+
method = MCETextArtifactCommonSupport(artifact)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
This API runs pinned `run_iteration` for the baseline and evolution iterations.
|
|
120
|
+
Validation references remain scorer-only; first-best validation selects the
|
|
121
|
+
artifact. Baseline selection yields an explicit NO_OP. Fit costs and seed
|
|
122
|
+
`base_seed + logical_call_index` are recorded separately from downstream use.
|
|
123
|
+
Record provider requests before transport and enforce a child-process/provider
|
|
124
|
+
deadline: the API's wall check is cooperative. Claude-agent and embedding SDK
|
|
125
|
+
imports use sentinels that raise if invoked; their execution and the full
|
|
126
|
+
generated-code sandbox are separate profiles, not covered by this text fit.
|
|
127
|
+
|
|
128
|
+
## Frozen executable-artifact evaluation
|
|
129
|
+
|
|
130
|
+
`recipe.mce.final_artifact_eval` uses `MCEFinalArtifactEvaluator`, not the
|
|
131
|
+
text-only profile. Keep the `MCESplitAudit` computed from the original fitting
|
|
132
|
+
and validation examples together with the returned `MCEContextArtifact`:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
from agentinputlab.recipes import (
|
|
136
|
+
MCEFinalArtifactEvaluator, MCEFinalControls, MCEFinalExample,
|
|
137
|
+
validate_mce_split_isolation,
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
# artifact is returned by MCEOfflineRecipe.fit; client is the same isolated
|
|
141
|
+
# sidecar with its original persistent artifact store and model identities.
|
|
142
|
+
fit_audit = validate_mce_split_isolation(train_examples, validation_examples)
|
|
143
|
+
evaluator = MCEFinalArtifactEvaluator(
|
|
144
|
+
artifact=artifact, split_audit=fit_audit,
|
|
145
|
+
interface_signature=interface_signature, client=client,
|
|
146
|
+
controls=MCEFinalControls(
|
|
147
|
+
max_model_calls=8, max_tool_calls=8,
|
|
148
|
+
max_output_tokens=4096, max_output_tokens_per_call=512,
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
result = evaluator.evaluate(
|
|
152
|
+
(MCEFinalExample("heldout-id", {"question": "..."}, expected_output="..."),),
|
|
153
|
+
context=context,
|
|
154
|
+
)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
These budgets apply to the **whole evaluate call**. Use one example per call
|
|
158
|
+
when each benchmark position has its own 4096-token/8-call budget. Increasing
|
|
159
|
+
the collection size does not silently multiply a budget. Fitting costs remain
|
|
160
|
+
separate. Model/source/interface/environment/storage identities and the
|
|
161
|
+
original fit split audit are checked before dispatch. Test IDs and input
|
|
162
|
+
hashes must be disjoint from both fitting and validation.
|
|
163
|
+
|
|
164
|
+
The sidecar materializes the frozen regular-file closure into a fresh generated
|
|
165
|
+
workspace. Native task loading and the existing isolated-evaluation seam run
|
|
166
|
+
without meta/base-agent evolution; generated interfaces are never imported by
|
|
167
|
+
the sidecar or caller host. The manager must provide
|
|
168
|
+
`final_evaluation_fingerprint()` equal to
|
|
169
|
+
`workers.mce.driver.final_evaluation_manager_contract()`. Its actual provider
|
|
170
|
+
transport must pass the requested cap to `before_seeded_model_call`, retain the
|
|
171
|
+
returned reservation ID, and pass that ID to `after_model_call`. Concurrent
|
|
172
|
+
reservations cannot exceed the aggregate token/call budget. Use
|
|
173
|
+
`failed_model_call(reservation_id=...)` for unknown failed-response usage;
|
|
174
|
+
that reservation is quarantined, not reported as zero actual token usage.
|
|
175
|
+
This is an operator-attested boundary, not proof that a remote provider obeys
|
|
176
|
+
its requested generation cap. Measured provider overruns are retained and
|
|
177
|
+
rejected.
|
|
178
|
+
|
|
179
|
+
Configure a persistent, private `oracle_root` on `MCEWorkerDriver`. Each final
|
|
180
|
+
request gets a create-only `mce-final-<request_id>` evidence directory there,
|
|
181
|
+
outside the generated workspace, containing the claim, oracle, raw native
|
|
182
|
+
evaluation and terminal/cost record. A repeated identical request is rejected
|
|
183
|
+
before another model call; inspect the existing evidence instead of retrying.
|
|
184
|
+
The host receives per-position scored/failed rows, the unchanged native
|
|
185
|
+
summary, and a separately labeled all-position primary-metric mean that keeps
|
|
186
|
+
failed positions in its denominator. Neither fitting nor text-artifact smoke
|
|
187
|
+
tests certify this full generated-code runtime; production acceptance also
|
|
188
|
+
requires an available isolated manager and real model/task execution.
|
|
189
|
+
|
|
190
|
+
## Checks
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
PYTHONPATH=src:. pytest -q tests/workers/test_mce_worker_driver.py
|
|
194
|
+
PYTHONPATH=src:. pytest -q tests/unit/test_remaining_recipes.py -k mce
|
|
195
|
+
AGENTINPUTLAB_MCE_PINNED_SOURCE=/path/to/pinned/checkout \
|
|
196
|
+
PYTHONPATH=src:. pytest -q \
|
|
197
|
+
tests/workers/test_mce_worker_driver.py::MCEOfficialRuntimeTests::test_real_pinned_run_iteration_with_semantic_patch
|
|
198
|
+
```
|
workers/mce/__init__.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Pinned external worker support for Meta Context Engineering."""
|
|
2
|
+
|
|
3
|
+
from .driver import (
|
|
4
|
+
PROVIDER_SUBCALL_SEED_MODE,
|
|
5
|
+
SEED_MODE,
|
|
6
|
+
MCEEvolutionIteration,
|
|
7
|
+
MCEEvolutionRun,
|
|
8
|
+
MCEOfficialRuntime,
|
|
9
|
+
MCEWorkerDriver,
|
|
10
|
+
PersistentArtifactStore,
|
|
11
|
+
TrustedEvaluationSupervisor,
|
|
12
|
+
TrustedProviderSupervisor,
|
|
13
|
+
derive_provider_subcall_seed,
|
|
14
|
+
serve_jsonl,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"PROVIDER_SUBCALL_SEED_MODE",
|
|
19
|
+
"SEED_MODE",
|
|
20
|
+
"MCEEvolutionIteration",
|
|
21
|
+
"MCEEvolutionRun",
|
|
22
|
+
"MCEOfficialRuntime",
|
|
23
|
+
"MCEWorkerDriver",
|
|
24
|
+
"PersistentArtifactStore",
|
|
25
|
+
"TrustedEvaluationSupervisor",
|
|
26
|
+
"TrustedProviderSupervisor",
|
|
27
|
+
"derive_provider_subcall_seed",
|
|
28
|
+
"serve_jsonl",
|
|
29
|
+
]
|