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,416 @@
|
|
|
1
|
+
"""Typed bridge for the unmodified DecomP full-system control flow."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Mapping
|
|
6
|
+
from dataclasses import dataclass, field
|
|
7
|
+
from typing import Any, Protocol, runtime_checkable
|
|
8
|
+
|
|
9
|
+
from agentinputlab.contracts import (
|
|
10
|
+
AlgorithmOutputError,
|
|
11
|
+
BudgetExceededError,
|
|
12
|
+
CompositeResult,
|
|
13
|
+
ExecutionBudget,
|
|
14
|
+
ExecutionTrace,
|
|
15
|
+
ExternalDependencyError,
|
|
16
|
+
FrozenAgentState,
|
|
17
|
+
InterventionContext,
|
|
18
|
+
SemanticFamily,
|
|
19
|
+
TraceEvent,
|
|
20
|
+
TracePhase,
|
|
21
|
+
ValidationError,
|
|
22
|
+
)
|
|
23
|
+
from agentinputlab.contracts.serialization import content_hash, freeze_mapping
|
|
24
|
+
from agentinputlab.observability import external_usage_counters, normalize_external_usage
|
|
25
|
+
|
|
26
|
+
DECOMP_REVISION = "8b157f6fe9ff5676ae51bd054f1df7b015adf278"
|
|
27
|
+
DECOMP_PROFILE_ID = "plan.decomp.full"
|
|
28
|
+
DECOMP_WORKER_SCHEMA = "agentinputlab.decomp.worker.v2"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def decomp_context_hash(
|
|
32
|
+
paragraph_ids: tuple[str, ...],
|
|
33
|
+
paras: tuple[str, ...],
|
|
34
|
+
) -> str:
|
|
35
|
+
"""Hash the exact paragraph identity and text passed to upstream DecomP."""
|
|
36
|
+
|
|
37
|
+
return content_hash({"paragraph_ids": paragraph_ids, "paras": paras})
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@dataclass(frozen=True, slots=True)
|
|
41
|
+
class DecompWorkerRequest:
|
|
42
|
+
case_id: str
|
|
43
|
+
question: str
|
|
44
|
+
paras: tuple[str, ...]
|
|
45
|
+
paragraph_ids: tuple[str, ...]
|
|
46
|
+
context_hash: str
|
|
47
|
+
config_artifact_id: str
|
|
48
|
+
backend_binding: Mapping[str, Any]
|
|
49
|
+
max_steps: int
|
|
50
|
+
upstream_revision: str = DECOMP_REVISION
|
|
51
|
+
schema_version: str = DECOMP_WORKER_SCHEMA
|
|
52
|
+
execution_budget: ExecutionBudget | None = None
|
|
53
|
+
seed: int = 0
|
|
54
|
+
|
|
55
|
+
def __post_init__(self) -> None:
|
|
56
|
+
if not self.case_id or not self.question:
|
|
57
|
+
raise ValidationError("DecomP worker request requires case_id and question")
|
|
58
|
+
if not self.config_artifact_id:
|
|
59
|
+
raise ValidationError("DecomP full requires a pinned config artifact")
|
|
60
|
+
if self.max_steps < 1:
|
|
61
|
+
raise ValidationError("DecomP max_steps must be positive")
|
|
62
|
+
if self.execution_budget is not None and not isinstance(self.execution_budget, ExecutionBudget):
|
|
63
|
+
raise ValidationError("DecomP execution_budget must be ExecutionBudget")
|
|
64
|
+
if isinstance(self.seed, bool) or not isinstance(self.seed, int) or self.seed < 0:
|
|
65
|
+
raise ValidationError("DecomP seed must be non-negative")
|
|
66
|
+
paras = tuple(self.paras)
|
|
67
|
+
paragraph_ids = tuple(self.paragraph_ids)
|
|
68
|
+
if len(paras) != len(paragraph_ids):
|
|
69
|
+
raise ValidationError("DecomP paras and paragraph_ids must have equal length")
|
|
70
|
+
if any(not isinstance(value, str) or not value for value in paras):
|
|
71
|
+
raise ValidationError("DecomP paras must contain non-empty text")
|
|
72
|
+
if any(not isinstance(value, str) or not value.strip() for value in paragraph_ids):
|
|
73
|
+
raise ValidationError("DecomP paragraph_ids must contain non-empty IDs")
|
|
74
|
+
if len(paragraph_ids) != len(set(paragraph_ids)):
|
|
75
|
+
raise ValidationError("DecomP paragraph_ids must be unique")
|
|
76
|
+
expected_context_hash = decomp_context_hash(paragraph_ids, paras)
|
|
77
|
+
if self.context_hash != expected_context_hash:
|
|
78
|
+
raise ValidationError("DecomP context_hash does not match paras and paragraph_ids")
|
|
79
|
+
object.__setattr__(self, "paras", paras)
|
|
80
|
+
object.__setattr__(self, "paragraph_ids", paragraph_ids)
|
|
81
|
+
object.__setattr__(self, "backend_binding", freeze_mapping(self.backend_binding))
|
|
82
|
+
|
|
83
|
+
def external_reservation(self) -> Mapping[str, int]:
|
|
84
|
+
"""A successful full DecomP response must account for a model call."""
|
|
85
|
+
|
|
86
|
+
return {"model_calls": 1}
|
|
87
|
+
|
|
88
|
+
def raise_for_external_status(self, result: object) -> None:
|
|
89
|
+
"""Let the monitored boundary settle actual usage before raising failure."""
|
|
90
|
+
if isinstance(result, Mapping) and result.get("status") == "error":
|
|
91
|
+
raise ExternalDependencyError("DecomP native worker failed with " + str(result.get("failure_code", "INVALID_RESPONSE")))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@dataclass(frozen=True, slots=True)
|
|
95
|
+
class DecompGraphNode:
|
|
96
|
+
node_id: str
|
|
97
|
+
question: str
|
|
98
|
+
answer: str = ""
|
|
99
|
+
handler: str = ""
|
|
100
|
+
depth: int = 0
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@dataclass(frozen=True, slots=True)
|
|
104
|
+
class DecompParticipantCall:
|
|
105
|
+
index: int
|
|
106
|
+
participant: str
|
|
107
|
+
input_state_id: str
|
|
108
|
+
output_state_id: str
|
|
109
|
+
command: str
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@dataclass(frozen=True, slots=True)
|
|
113
|
+
class DecompFrontierEvent:
|
|
114
|
+
index: int
|
|
115
|
+
state_id: str
|
|
116
|
+
score: float
|
|
117
|
+
next_command: str
|
|
118
|
+
action: str
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
@dataclass(frozen=True, slots=True)
|
|
122
|
+
class DecompWorkerResponse:
|
|
123
|
+
case_id: str
|
|
124
|
+
profile_id: str
|
|
125
|
+
upstream_revision: str
|
|
126
|
+
paragraph_ids: tuple[str, ...]
|
|
127
|
+
context_hash: str
|
|
128
|
+
nodes: tuple[DecompGraphNode, ...]
|
|
129
|
+
dependency_edges: tuple[tuple[str, str], ...]
|
|
130
|
+
participant_calls: tuple[DecompParticipantCall, ...]
|
|
131
|
+
frontier: tuple[DecompFrontierEvent, ...]
|
|
132
|
+
reasoning_chain: str
|
|
133
|
+
final_answer: str
|
|
134
|
+
termination: str
|
|
135
|
+
component_only: bool = False
|
|
136
|
+
usage: Mapping[str, int | float] = field(default_factory=dict)
|
|
137
|
+
schema_version: str = DECOMP_WORKER_SCHEMA
|
|
138
|
+
native_artifacts: Mapping[str, str] = field(default_factory=dict)
|
|
139
|
+
|
|
140
|
+
def __post_init__(self) -> None:
|
|
141
|
+
object.__setattr__(self, "nodes", tuple(self.nodes))
|
|
142
|
+
object.__setattr__(self, "paragraph_ids", tuple(self.paragraph_ids))
|
|
143
|
+
object.__setattr__(self, "dependency_edges", tuple(self.dependency_edges))
|
|
144
|
+
object.__setattr__(self, "participant_calls", tuple(self.participant_calls))
|
|
145
|
+
object.__setattr__(self, "frontier", tuple(self.frontier))
|
|
146
|
+
object.__setattr__(self, "usage", freeze_mapping(self.usage))
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
@runtime_checkable
|
|
150
|
+
class DecompWorkerRuntime(Protocol):
|
|
151
|
+
def run(self, request: DecompWorkerRequest) -> DecompWorkerResponse | Mapping[str, Any]: ...
|
|
152
|
+
|
|
153
|
+
def fingerprint(self) -> Mapping[str, Any]: ...
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def _validate_acyclic(node_ids: set[str], edges: tuple[tuple[str, str], ...]) -> None:
|
|
157
|
+
children: dict[str, list[str]] = {node_id: [] for node_id in node_ids}
|
|
158
|
+
indegree = {node_id: 0 for node_id in node_ids}
|
|
159
|
+
for source, target in edges:
|
|
160
|
+
if source not in node_ids or target not in node_ids:
|
|
161
|
+
raise AlgorithmOutputError("DecomP dependency edge references an unknown node")
|
|
162
|
+
children[source].append(target)
|
|
163
|
+
indegree[target] += 1
|
|
164
|
+
ready = [node_id for node_id, degree in indegree.items() if degree == 0]
|
|
165
|
+
visited = 0
|
|
166
|
+
while ready:
|
|
167
|
+
current = ready.pop()
|
|
168
|
+
visited += 1
|
|
169
|
+
for child in children[current]:
|
|
170
|
+
indegree[child] -= 1
|
|
171
|
+
if indegree[child] == 0:
|
|
172
|
+
ready.append(child)
|
|
173
|
+
if visited != len(node_ids):
|
|
174
|
+
raise AlgorithmOutputError("DecomP typed dependency graph contains a cycle")
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def validate_decomp_full_response(response: DecompWorkerResponse) -> None:
|
|
178
|
+
"""Reject planner-only or lossy responses under the full-system release ID."""
|
|
179
|
+
|
|
180
|
+
if response.schema_version != DECOMP_WORKER_SCHEMA:
|
|
181
|
+
raise AlgorithmOutputError(f"DecomP worker schema mismatch: {response.schema_version!r}")
|
|
182
|
+
if response.profile_id != DECOMP_PROFILE_ID:
|
|
183
|
+
raise AlgorithmOutputError("DecomP worker returned the wrong profile identity")
|
|
184
|
+
if response.upstream_revision != DECOMP_REVISION:
|
|
185
|
+
raise AlgorithmOutputError("DecomP worker returned an unpinned upstream revision")
|
|
186
|
+
if len(response.paragraph_ids) != len(set(response.paragraph_ids)) or any(
|
|
187
|
+
not isinstance(value, str) or not value for value in response.paragraph_ids
|
|
188
|
+
):
|
|
189
|
+
raise AlgorithmOutputError("DecomP worker returned invalid paragraph identities")
|
|
190
|
+
if (
|
|
191
|
+
not isinstance(response.context_hash, str)
|
|
192
|
+
or len(response.context_hash) != 64
|
|
193
|
+
or any(character not in "0123456789abcdef" for character in response.context_hash)
|
|
194
|
+
):
|
|
195
|
+
raise AlgorithmOutputError("DecomP worker returned an invalid context_hash")
|
|
196
|
+
if response.component_only:
|
|
197
|
+
raise AlgorithmOutputError("planner-component output cannot satisfy plan.decomp.full")
|
|
198
|
+
if not response.nodes:
|
|
199
|
+
raise AlgorithmOutputError("DecomP full response lost native decomposition nodes")
|
|
200
|
+
if not response.participant_calls:
|
|
201
|
+
raise AlgorithmOutputError("DecomP full response lost participant routing")
|
|
202
|
+
if not response.frontier:
|
|
203
|
+
raise AlgorithmOutputError("DecomP full response lost best-first frontier events")
|
|
204
|
+
if not response.reasoning_chain:
|
|
205
|
+
raise AlgorithmOutputError("DecomP full response requires the native reasoning chain")
|
|
206
|
+
if not response.final_answer.strip():
|
|
207
|
+
raise AlgorithmOutputError("DecomP full response requires a terminal final answer")
|
|
208
|
+
if not response.termination:
|
|
209
|
+
raise AlgorithmOutputError("DecomP full response requires a termination reason")
|
|
210
|
+
node_ids = [node.node_id for node in response.nodes]
|
|
211
|
+
if len(node_ids) != len(set(node_ids)):
|
|
212
|
+
raise AlgorithmOutputError("DecomP response contains duplicate node IDs")
|
|
213
|
+
if any(node.depth < 0 for node in response.nodes):
|
|
214
|
+
raise AlgorithmOutputError("DecomP node depth cannot be negative")
|
|
215
|
+
if tuple(event.index for event in response.frontier) != tuple(range(len(response.frontier))):
|
|
216
|
+
raise AlgorithmOutputError("DecomP frontier event indices must be contiguous")
|
|
217
|
+
if tuple(call.index for call in response.participant_calls) != tuple(
|
|
218
|
+
range(len(response.participant_calls))
|
|
219
|
+
):
|
|
220
|
+
raise AlgorithmOutputError("DecomP participant-call indices must be contiguous")
|
|
221
|
+
_validate_acyclic(set(node_ids), response.dependency_edges)
|
|
222
|
+
usage = normalize_external_usage(response.usage)
|
|
223
|
+
if usage.model_calls < 1:
|
|
224
|
+
raise AlgorithmOutputError("DecomP full response must account for its model calls")
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
class DecompFullBridge:
|
|
228
|
+
"""Run pinned full DecomP and preserve its terminal answer as a composite result."""
|
|
229
|
+
|
|
230
|
+
method_id = "decomp"
|
|
231
|
+
release_id = DECOMP_PROFILE_ID
|
|
232
|
+
family = SemanticFamily.DECOMPOSE
|
|
233
|
+
|
|
234
|
+
def __init__(
|
|
235
|
+
self,
|
|
236
|
+
runtime: DecompWorkerRuntime | None = None,
|
|
237
|
+
*,
|
|
238
|
+
config_artifact_id: str,
|
|
239
|
+
max_steps: int = 20,
|
|
240
|
+
) -> None:
|
|
241
|
+
self.runtime = runtime
|
|
242
|
+
self.config_artifact_id = config_artifact_id
|
|
243
|
+
self.max_steps = max_steps
|
|
244
|
+
|
|
245
|
+
def run(self, state: FrozenAgentState, context: InterventionContext) -> CompositeResult:
|
|
246
|
+
runtime = self._resolve_runtime(context)
|
|
247
|
+
if runtime is None:
|
|
248
|
+
raise ExternalDependencyError(
|
|
249
|
+
"plan.decomp.full requires the pinned external DecomP worker; "
|
|
250
|
+
"the core package intentionally has no simplified fallback"
|
|
251
|
+
)
|
|
252
|
+
runtime_identity = self._validate_runtime_identity(runtime)
|
|
253
|
+
controlled = runtime_identity.get("backend_binding_mode") == "controlled_native_completion_callbacks.v1"
|
|
254
|
+
if controlled and (state.instruction or state.messages):
|
|
255
|
+
raise ValidationError("native DecomP accepts query/context only; explicitly project instruction/history")
|
|
256
|
+
input_bound = runtime_identity.get("per_call_input_token_bound")
|
|
257
|
+
if controlled and (state.budget.max_cost_usd is not None or (
|
|
258
|
+
state.budget.max_context_tokens is not None and
|
|
259
|
+
(type(input_bound) is not int or input_bound < 1))):
|
|
260
|
+
raise ValidationError("native DecomP finite input-token/cost ceilings require pre-call estimators")
|
|
261
|
+
if (controlled and state.budget.max_context_tokens is not None
|
|
262
|
+
and input_bound > state.budget.max_context_tokens):
|
|
263
|
+
raise BudgetExceededError("DecomP input budget cannot reserve the native upper bound")
|
|
264
|
+
backend_binding = (
|
|
265
|
+
dict(context.backend.fingerprint())
|
|
266
|
+
if context.backend is not None and hasattr(context.backend, "fingerprint")
|
|
267
|
+
else {}
|
|
268
|
+
)
|
|
269
|
+
if controlled and "backend" in runtime_identity and content_hash(runtime_identity["backend"]) != content_hash(backend_binding):
|
|
270
|
+
raise ValidationError("native DecomP runtime backend differs from the context backend")
|
|
271
|
+
paras = tuple(block.text for block in state.context)
|
|
272
|
+
paragraph_ids = tuple(block.block_id for block in state.context)
|
|
273
|
+
if any(not paragraph_id.strip() for paragraph_id in paragraph_ids):
|
|
274
|
+
raise ValidationError(
|
|
275
|
+
"plan.decomp.full requires a non-empty block_id for every context paragraph"
|
|
276
|
+
)
|
|
277
|
+
context_hash = decomp_context_hash(paragraph_ids, paras)
|
|
278
|
+
request = DecompWorkerRequest(
|
|
279
|
+
case_id=state.task_id or state.state_hash,
|
|
280
|
+
question=state.query,
|
|
281
|
+
paras=paras,
|
|
282
|
+
paragraph_ids=paragraph_ids,
|
|
283
|
+
context_hash=context_hash,
|
|
284
|
+
config_artifact_id=self.config_artifact_id,
|
|
285
|
+
backend_binding=backend_binding,
|
|
286
|
+
max_steps=self.max_steps,
|
|
287
|
+
execution_budget=state.budget,
|
|
288
|
+
seed=context.seed,
|
|
289
|
+
)
|
|
290
|
+
try:
|
|
291
|
+
response = runtime.run(request)
|
|
292
|
+
except (ImportError, ModuleNotFoundError) as exc:
|
|
293
|
+
raise ExternalDependencyError(
|
|
294
|
+
"the pinned DecomP worker is missing an optional upstream dependency"
|
|
295
|
+
) from exc
|
|
296
|
+
request.raise_for_external_status(response)
|
|
297
|
+
if not isinstance(response, DecompWorkerResponse):
|
|
298
|
+
raise AlgorithmOutputError("DecomP worker returned an invalid response envelope")
|
|
299
|
+
if response.case_id != request.case_id:
|
|
300
|
+
raise AlgorithmOutputError("DecomP worker response case_id mismatch")
|
|
301
|
+
if response.paragraph_ids != request.paragraph_ids:
|
|
302
|
+
raise AlgorithmOutputError("DecomP worker response paragraph_ids mismatch")
|
|
303
|
+
if response.context_hash != request.context_hash:
|
|
304
|
+
raise AlgorithmOutputError("DecomP worker response context_hash mismatch")
|
|
305
|
+
validate_decomp_full_response(response)
|
|
306
|
+
usage = normalize_external_usage(response.usage)
|
|
307
|
+
events = [
|
|
308
|
+
TraceEvent(
|
|
309
|
+
TracePhase.PREPARE,
|
|
310
|
+
"decomp_worker_request",
|
|
311
|
+
{
|
|
312
|
+
"config_artifact_id": self.config_artifact_id,
|
|
313
|
+
"max_steps": self.max_steps,
|
|
314
|
+
"upstream_revision": DECOMP_REVISION,
|
|
315
|
+
"backend_binding": backend_binding,
|
|
316
|
+
"paragraph_ids": paragraph_ids,
|
|
317
|
+
"context_hash": context_hash,
|
|
318
|
+
"runtime_identity_hash": content_hash(runtime_identity),
|
|
319
|
+
},
|
|
320
|
+
)
|
|
321
|
+
]
|
|
322
|
+
events.extend(
|
|
323
|
+
TraceEvent(
|
|
324
|
+
TracePhase.OBSERVE,
|
|
325
|
+
"decomp_frontier",
|
|
326
|
+
{
|
|
327
|
+
"index": event.index,
|
|
328
|
+
"state_id": event.state_id,
|
|
329
|
+
"score": event.score,
|
|
330
|
+
"next_command": event.next_command,
|
|
331
|
+
"action": event.action,
|
|
332
|
+
},
|
|
333
|
+
)
|
|
334
|
+
for event in response.frontier
|
|
335
|
+
)
|
|
336
|
+
events.extend(
|
|
337
|
+
TraceEvent(
|
|
338
|
+
TracePhase.OBSERVE,
|
|
339
|
+
"decomp_participant_call",
|
|
340
|
+
{
|
|
341
|
+
"index": call.index,
|
|
342
|
+
"participant": call.participant,
|
|
343
|
+
"input_state_id": call.input_state_id,
|
|
344
|
+
"output_state_id": call.output_state_id,
|
|
345
|
+
"command": call.command,
|
|
346
|
+
},
|
|
347
|
+
)
|
|
348
|
+
for call in response.participant_calls
|
|
349
|
+
)
|
|
350
|
+
events.append(
|
|
351
|
+
TraceEvent(
|
|
352
|
+
TracePhase.FINALIZE,
|
|
353
|
+
"decomp_full_result",
|
|
354
|
+
{
|
|
355
|
+
"nodes": response.nodes,
|
|
356
|
+
"dependency_edges": response.dependency_edges,
|
|
357
|
+
"reasoning_chain": response.reasoning_chain,
|
|
358
|
+
"final_answer": response.final_answer,
|
|
359
|
+
"termination": response.termination,
|
|
360
|
+
"native_artifacts": dict(response.native_artifacts),
|
|
361
|
+
},
|
|
362
|
+
)
|
|
363
|
+
)
|
|
364
|
+
trace = ExecutionTrace(
|
|
365
|
+
method_id=self.method_id,
|
|
366
|
+
release_id=self.release_id,
|
|
367
|
+
events=tuple(events),
|
|
368
|
+
counters={
|
|
369
|
+
**external_usage_counters(usage),
|
|
370
|
+
"participant_calls": len(response.participant_calls),
|
|
371
|
+
"frontier_events": len(response.frontier),
|
|
372
|
+
"graph_nodes": len(response.nodes),
|
|
373
|
+
"input_paragraphs": len(paragraph_ids),
|
|
374
|
+
},
|
|
375
|
+
)
|
|
376
|
+
return CompositeResult(
|
|
377
|
+
method_id=self.method_id,
|
|
378
|
+
release_id=self.release_id,
|
|
379
|
+
source_state_hash=state.state_hash,
|
|
380
|
+
final_answer=response.final_answer,
|
|
381
|
+
evidence=state.context,
|
|
382
|
+
trace=trace,
|
|
383
|
+
implementation_identity=f"thin_external_wrapper:allenai/DecomP@{DECOMP_REVISION}",
|
|
384
|
+
profile_kind="controlled_adapter" if controlled else "official_native",
|
|
385
|
+
metadata={
|
|
386
|
+
"implementation_origin": "thin_external_wrapper",
|
|
387
|
+
"full_system": True,
|
|
388
|
+
"component_only": False,
|
|
389
|
+
"answer_is_intervention_input": False,
|
|
390
|
+
"reasoning_chain": response.reasoning_chain,
|
|
391
|
+
"termination": response.termination,
|
|
392
|
+
"paragraph_ids": paragraph_ids,
|
|
393
|
+
"context_hash": context_hash,
|
|
394
|
+
"native_artifacts": dict(response.native_artifacts),
|
|
395
|
+
"worker_fingerprint": dict(runtime_identity),
|
|
396
|
+
},
|
|
397
|
+
)
|
|
398
|
+
|
|
399
|
+
def _resolve_runtime(self, context: InterventionContext) -> DecompWorkerRuntime | None:
|
|
400
|
+
injected = context.external_runtime
|
|
401
|
+
if injected is not None and self.runtime is not None and injected is not self.runtime:
|
|
402
|
+
raise ValidationError(
|
|
403
|
+
"DecomP runtime is ambiguous; use either the constructor or "
|
|
404
|
+
"InterventionContext.external_runtime"
|
|
405
|
+
)
|
|
406
|
+
return injected if injected is not None else self.runtime
|
|
407
|
+
|
|
408
|
+
@staticmethod
|
|
409
|
+
def _validate_runtime_identity(runtime: DecompWorkerRuntime) -> Mapping[str, Any]:
|
|
410
|
+
fingerprint = getattr(runtime, "fingerprint", None)
|
|
411
|
+
if not callable(fingerprint):
|
|
412
|
+
raise ValidationError("DecomP runtime requires a stable fingerprint()")
|
|
413
|
+
identity = fingerprint()
|
|
414
|
+
if not isinstance(identity, Mapping) or not identity:
|
|
415
|
+
raise ValidationError("DecomP runtime fingerprint must be a non-empty mapping")
|
|
416
|
+
return freeze_mapping(identity)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""LLMCompiler planner and full-system worker bridges."""
|
|
2
|
+
|
|
3
|
+
from .bridge import (
|
|
4
|
+
LLMCOMPILER_UPSTREAM_COMMIT,
|
|
5
|
+
CompilerTask,
|
|
6
|
+
LLMCompilerControls,
|
|
7
|
+
LLMCompilerFullBridge,
|
|
8
|
+
LLMCompilerPlannerBridge,
|
|
9
|
+
SchedulerEvent,
|
|
10
|
+
)
|
|
11
|
+
from .common_support import (
|
|
12
|
+
LLMCOMPILER_COMMON_SUPPORT_RELEASE,
|
|
13
|
+
LLMCOMPILER_PARSER_SOURCE_SHA256,
|
|
14
|
+
LLMCOMPILER_PLANNER_SOURCE_SHA256,
|
|
15
|
+
LLMCompilerCommonSupportConfig,
|
|
16
|
+
LLMCompilerCommonSupportPlanner,
|
|
17
|
+
parse_llmcompiler_plan,
|
|
18
|
+
render_llmcompiler_planner_prompt,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"LLMCOMPILER_COMMON_SUPPORT_RELEASE",
|
|
23
|
+
"LLMCOMPILER_PARSER_SOURCE_SHA256",
|
|
24
|
+
"LLMCOMPILER_PLANNER_SOURCE_SHA256",
|
|
25
|
+
"LLMCOMPILER_UPSTREAM_COMMIT",
|
|
26
|
+
"CompilerTask",
|
|
27
|
+
"LLMCompilerCommonSupportConfig",
|
|
28
|
+
"LLMCompilerCommonSupportPlanner",
|
|
29
|
+
"LLMCompilerControls",
|
|
30
|
+
"LLMCompilerFullBridge",
|
|
31
|
+
"LLMCompilerPlannerBridge",
|
|
32
|
+
"SchedulerEvent",
|
|
33
|
+
"parse_llmcompiler_plan",
|
|
34
|
+
"render_llmcompiler_planner_prompt",
|
|
35
|
+
]
|