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,136 @@
|
|
|
1
|
+
"""Controlled ACON observation profile shared by the paper's main arenas.
|
|
2
|
+
|
|
3
|
+
The upstream ACON observation optimizer is unchanged. This wrapper freezes
|
|
4
|
+
only the mapping from an AgentInputLab capture to ACON's single
|
|
5
|
+
``observation`` argument: context block zero is optimized and every other
|
|
6
|
+
captured block is retained verbatim.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from dataclasses import dataclass, field
|
|
12
|
+
|
|
13
|
+
from agentinputlab.contracts import (
|
|
14
|
+
AlgorithmOutputError,
|
|
15
|
+
ExecutionTrace,
|
|
16
|
+
FrozenAgentState,
|
|
17
|
+
InputPatch,
|
|
18
|
+
InterventionContext,
|
|
19
|
+
PatchOp,
|
|
20
|
+
SemanticFamily,
|
|
21
|
+
TraceEvent,
|
|
22
|
+
TracePhase,
|
|
23
|
+
ValidationError,
|
|
24
|
+
)
|
|
25
|
+
from agentinputlab.contracts.serialization import content_hash
|
|
26
|
+
from agentinputlab.integrations.external_workers import WorkerClient
|
|
27
|
+
|
|
28
|
+
from .common import ACONArtifactIdentity, ACONObservationControls
|
|
29
|
+
from .observation_bridge import ACONObservationRuntimeExternal
|
|
30
|
+
|
|
31
|
+
ACON_COMMON_SUPPORT_RELEASE = "curate.acon.common_support_observation"
|
|
32
|
+
ACON_COMMON_SUPPORT_CONTEXT_RULE = "captured_context_block_zero.v1"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@dataclass(slots=True)
|
|
36
|
+
class ACONObservationCommonSupport:
|
|
37
|
+
"""Run the pinned ACON observation optimizer on a frozen context slot."""
|
|
38
|
+
|
|
39
|
+
client: WorkerClient | None = None
|
|
40
|
+
artifacts: ACONArtifactIdentity | None = None
|
|
41
|
+
controls: ACONObservationControls = field(
|
|
42
|
+
default_factory=lambda: ACONObservationControls(
|
|
43
|
+
summarization_threshold=-1,
|
|
44
|
+
context_index=0,
|
|
45
|
+
add_previous_history_summary=False,
|
|
46
|
+
observation_version=1,
|
|
47
|
+
)
|
|
48
|
+
)
|
|
49
|
+
method_id: str = "acon"
|
|
50
|
+
release_id: str = ACON_COMMON_SUPPORT_RELEASE
|
|
51
|
+
family: SemanticFamily = SemanticFamily.CURATE
|
|
52
|
+
|
|
53
|
+
def __post_init__(self) -> None:
|
|
54
|
+
if not isinstance(self.artifacts, ACONArtifactIdentity):
|
|
55
|
+
raise ValidationError("ACON common support requires frozen artifact identities")
|
|
56
|
+
if not isinstance(self.controls, ACONObservationControls):
|
|
57
|
+
raise ValidationError("ACON common-support controls have the wrong type")
|
|
58
|
+
if self.controls.context_index != 0:
|
|
59
|
+
raise ValidationError("ACON common support freezes context_index=0")
|
|
60
|
+
if self.controls.add_previous_history_summary:
|
|
61
|
+
raise ValidationError(
|
|
62
|
+
"ACON common support forbids hidden previous-history summaries at turn zero"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
def propose(self, state: FrozenAgentState, context: InterventionContext) -> InputPatch:
|
|
66
|
+
if not state.context:
|
|
67
|
+
raise ValidationError("ACON common support requires captured visible context")
|
|
68
|
+
component = ACONObservationRuntimeExternal(
|
|
69
|
+
client=self.client,
|
|
70
|
+
artifacts=self.artifacts,
|
|
71
|
+
controls=self.controls,
|
|
72
|
+
).propose(state, context)
|
|
73
|
+
if len(component.operations) != 1:
|
|
74
|
+
raise AlgorithmOutputError("ACON component emitted an unexpected operation count")
|
|
75
|
+
operation = component.operations[0]
|
|
76
|
+
if operation.op is not PatchOp.REPLACE_CONTEXT:
|
|
77
|
+
raise AlgorithmOutputError("ACON component did not replace captured context")
|
|
78
|
+
output_context = tuple(operation.value)
|
|
79
|
+
if len(output_context) != len(state.context):
|
|
80
|
+
raise AlgorithmOutputError("ACON common support changed the context block count")
|
|
81
|
+
for index, (before, after) in enumerate(zip(state.context, output_context, strict=True)):
|
|
82
|
+
if before.block_id != after.block_id:
|
|
83
|
+
raise AlgorithmOutputError("ACON common support changed a source block identity")
|
|
84
|
+
if index != 0 and before != after:
|
|
85
|
+
raise AlgorithmOutputError("ACON common support modified an unselected block")
|
|
86
|
+
|
|
87
|
+
trace = ExecutionTrace(
|
|
88
|
+
method_id=self.method_id,
|
|
89
|
+
release_id=self.release_id,
|
|
90
|
+
events=(
|
|
91
|
+
TraceEvent(
|
|
92
|
+
TracePhase.PREPARE,
|
|
93
|
+
"acon_common_support_context_selection",
|
|
94
|
+
{
|
|
95
|
+
"selection_rule": ACON_COMMON_SUPPORT_CONTEXT_RULE,
|
|
96
|
+
"selected_context_index": 0,
|
|
97
|
+
"selected_context_id": state.context[0].block_id,
|
|
98
|
+
"selected_context_hash": content_hash(state.context[0]),
|
|
99
|
+
"source_context_blocks": len(state.context),
|
|
100
|
+
},
|
|
101
|
+
),
|
|
102
|
+
*component.trace.events,
|
|
103
|
+
),
|
|
104
|
+
counters={
|
|
105
|
+
**dict(component.trace.counters),
|
|
106
|
+
"source_context_blocks": len(state.context),
|
|
107
|
+
"selected_context_blocks": 1,
|
|
108
|
+
},
|
|
109
|
+
warnings=(
|
|
110
|
+
*component.trace.warnings,
|
|
111
|
+
"controlled_common_support_context_mapping_not_paper_result_parity",
|
|
112
|
+
),
|
|
113
|
+
)
|
|
114
|
+
return InputPatch(
|
|
115
|
+
method_id=self.method_id,
|
|
116
|
+
release_id=self.release_id,
|
|
117
|
+
source_state_hash=state.state_hash,
|
|
118
|
+
operations=component.operations,
|
|
119
|
+
trace=trace,
|
|
120
|
+
implementation_identity=("frozen_context_mapping+" + component.implementation_identity),
|
|
121
|
+
profile_kind="controlled_adapter",
|
|
122
|
+
metadata={
|
|
123
|
+
**dict(component.metadata),
|
|
124
|
+
"component_release_id": component.release_id,
|
|
125
|
+
"common_support_context_rule": ACON_COMMON_SUPPORT_CONTEXT_RULE,
|
|
126
|
+
"source_state_hash": state.state_hash,
|
|
127
|
+
"paper_result_parity_claimed": False,
|
|
128
|
+
},
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
__all__ = [
|
|
133
|
+
"ACON_COMMON_SUPPORT_CONTEXT_RULE",
|
|
134
|
+
"ACON_COMMON_SUPPORT_RELEASE",
|
|
135
|
+
"ACONObservationCommonSupport",
|
|
136
|
+
]
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"""External bridge for ACON's history optimizer and MemoryManager assembly."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import asdict, dataclass, field
|
|
6
|
+
|
|
7
|
+
from agentinputlab.contracts import (
|
|
8
|
+
AlgorithmOutputError,
|
|
9
|
+
ExecutionTrace,
|
|
10
|
+
FrozenAgentState,
|
|
11
|
+
InputPatch,
|
|
12
|
+
InterventionContext,
|
|
13
|
+
Message,
|
|
14
|
+
PatchOp,
|
|
15
|
+
PatchOperation,
|
|
16
|
+
SemanticFamily,
|
|
17
|
+
TraceEvent,
|
|
18
|
+
TracePhase,
|
|
19
|
+
ValidationError,
|
|
20
|
+
)
|
|
21
|
+
from agentinputlab.contracts.serialization import content_hash
|
|
22
|
+
from agentinputlab.integrations.external_workers import WorkerClient
|
|
23
|
+
from agentinputlab.integrations.external_workers.method import (
|
|
24
|
+
MethodWorkerRequest,
|
|
25
|
+
call_worker,
|
|
26
|
+
optional_text,
|
|
27
|
+
required_text,
|
|
28
|
+
resolve_worker,
|
|
29
|
+
worker_fingerprint,
|
|
30
|
+
)
|
|
31
|
+
from agentinputlab.observability import external_usage_counters
|
|
32
|
+
|
|
33
|
+
from .common import (
|
|
34
|
+
ACON_HISTORY_PROTOCOL,
|
|
35
|
+
ACON_UPSTREAM_COMMIT,
|
|
36
|
+
ACONArtifactIdentity,
|
|
37
|
+
ACONHistoryControls,
|
|
38
|
+
history_text,
|
|
39
|
+
preserved_turn_indices,
|
|
40
|
+
target_backend_fingerprint,
|
|
41
|
+
validate_runtime_identity,
|
|
42
|
+
validate_threshold_response,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclass(slots=True)
|
|
47
|
+
class ACONHistoryRuntimeExternal:
|
|
48
|
+
"""Apply pinned ACON with a budget-safe preflight/execute protocol."""
|
|
49
|
+
|
|
50
|
+
client: WorkerClient | None = None
|
|
51
|
+
artifacts: ACONArtifactIdentity | None = None
|
|
52
|
+
controls: ACONHistoryControls = field(default_factory=ACONHistoryControls)
|
|
53
|
+
method_id: str = "acon"
|
|
54
|
+
release_id: str = "curate.acon.history_runtime"
|
|
55
|
+
family: SemanticFamily = SemanticFamily.CURATE
|
|
56
|
+
|
|
57
|
+
def __post_init__(self) -> None:
|
|
58
|
+
if not isinstance(self.artifacts, ACONArtifactIdentity):
|
|
59
|
+
raise ValidationError("ACON history runtime requires frozen artifact identities")
|
|
60
|
+
|
|
61
|
+
def propose(self, state: FrozenAgentState, context: InterventionContext) -> InputPatch:
|
|
62
|
+
messages = state.messages
|
|
63
|
+
if len(messages) < 2 or messages[0].role != "system" or messages[1].role != "user":
|
|
64
|
+
raise ValidationError(
|
|
65
|
+
"ACON history runtime requires a session beginning with system then user"
|
|
66
|
+
)
|
|
67
|
+
assert self.artifacts is not None
|
|
68
|
+
worker = resolve_worker(self.client, context, label="ACON history")
|
|
69
|
+
target_fingerprint = target_backend_fingerprint(context.backend, self.artifacts)
|
|
70
|
+
original_prompt = state.metadata.get("acon_original_first_user_prompt")
|
|
71
|
+
if original_prompt is None:
|
|
72
|
+
if "<HISTORY_SUMMARY>" in messages[1].content:
|
|
73
|
+
raise ValidationError(
|
|
74
|
+
"cannot recover ACON original prompt from an already summarized session"
|
|
75
|
+
)
|
|
76
|
+
original_prompt = messages[1].content
|
|
77
|
+
if not isinstance(original_prompt, str) or not original_prompt.strip():
|
|
78
|
+
raise ValidationError("acon_original_first_user_prompt metadata must be text")
|
|
79
|
+
preserved_indices = preserved_turn_indices(messages, self.controls.preserve_last_k_turns)
|
|
80
|
+
preserved = tuple(messages[index] for index in preserved_indices)
|
|
81
|
+
|
|
82
|
+
# The pinned MemoryManager searches by role/content for the first preserved
|
|
83
|
+
# item. Reproduce that behavior, including its duplicate-content edge case.
|
|
84
|
+
preserved_start = len(messages)
|
|
85
|
+
if preserved:
|
|
86
|
+
first = preserved[0]
|
|
87
|
+
for index, message in enumerate(messages):
|
|
88
|
+
if message.role == first.role and message.content == first.content:
|
|
89
|
+
preserved_start = index
|
|
90
|
+
break
|
|
91
|
+
summarization_messages = messages[:preserved_start] if preserved_start > 2 else ()
|
|
92
|
+
material = history_text(summarization_messages)
|
|
93
|
+
previous_summary = state.metadata.get("acon_previous_history_summary", "")
|
|
94
|
+
if not isinstance(previous_summary, str):
|
|
95
|
+
raise ValidationError("acon_previous_history_summary metadata must be text")
|
|
96
|
+
counted_material = f"{previous_summary}\n{material}" if previous_summary else material
|
|
97
|
+
task = state.instruction if state.instruction.strip() else state.query
|
|
98
|
+
base_payload = {
|
|
99
|
+
"task": task,
|
|
100
|
+
"raw_messages": messages,
|
|
101
|
+
"history_text": material,
|
|
102
|
+
"history_text_hash": content_hash(material),
|
|
103
|
+
"counted_material_hash": content_hash(counted_material),
|
|
104
|
+
"previous_history_summary": previous_summary,
|
|
105
|
+
"preserved_message_indices": preserved_indices,
|
|
106
|
+
"preserved_messages": preserved,
|
|
107
|
+
"controls": asdict(self.controls),
|
|
108
|
+
"artifacts": self.artifacts.as_payload(),
|
|
109
|
+
"seed": context.seed,
|
|
110
|
+
}
|
|
111
|
+
preflight_request = MethodWorkerRequest(
|
|
112
|
+
method_id=self.method_id,
|
|
113
|
+
release_id=self.release_id,
|
|
114
|
+
upstream_commit=ACON_UPSTREAM_COMMIT,
|
|
115
|
+
state_hash=state.state_hash,
|
|
116
|
+
payload={
|
|
117
|
+
**base_payload,
|
|
118
|
+
"phase": "preflight",
|
|
119
|
+
"decision_token": "",
|
|
120
|
+
},
|
|
121
|
+
dependency_fingerprints={"target_backend": target_fingerprint},
|
|
122
|
+
protocol_version=ACON_HISTORY_PROTOCOL,
|
|
123
|
+
)
|
|
124
|
+
preflight = call_worker(worker, preflight_request)
|
|
125
|
+
if preflight.usage.model_calls != 0:
|
|
126
|
+
raise AlgorithmOutputError("ACON preflight cannot bill a model call")
|
|
127
|
+
payload = preflight.payload
|
|
128
|
+
profile_id, manifest_hash, attestation = validate_runtime_identity(payload, self.artifacts)
|
|
129
|
+
if required_text(
|
|
130
|
+
payload, "counted_material_hash", label="ACON history response"
|
|
131
|
+
) != content_hash(counted_material):
|
|
132
|
+
raise AlgorithmOutputError("ACON history worker counted different material")
|
|
133
|
+
token_count, threshold_triggered = validate_threshold_response(
|
|
134
|
+
payload,
|
|
135
|
+
threshold=self.controls.summarization_threshold,
|
|
136
|
+
)
|
|
137
|
+
interval_ready = (
|
|
138
|
+
self.controls.summary_interval == -1
|
|
139
|
+
or len(messages) // 2 >= self.controls.summary_interval
|
|
140
|
+
)
|
|
141
|
+
expected_applied = bool(material.strip()) and threshold_triggered and interval_ready
|
|
142
|
+
applied = payload.get("applied")
|
|
143
|
+
if not isinstance(applied, bool) or applied is not expected_applied:
|
|
144
|
+
raise AlgorithmOutputError(
|
|
145
|
+
"ACON history applied flag disagrees with history/threshold/interval branches"
|
|
146
|
+
)
|
|
147
|
+
decision_token = required_text(payload, "decision_token", label="ACON preflight")
|
|
148
|
+
response = preflight
|
|
149
|
+
if applied:
|
|
150
|
+
execute_request = MethodWorkerRequest(
|
|
151
|
+
method_id=self.method_id,
|
|
152
|
+
release_id=self.release_id,
|
|
153
|
+
upstream_commit=ACON_UPSTREAM_COMMIT,
|
|
154
|
+
state_hash=state.state_hash,
|
|
155
|
+
payload={
|
|
156
|
+
**base_payload,
|
|
157
|
+
"phase": "execute",
|
|
158
|
+
"decision_token": decision_token,
|
|
159
|
+
},
|
|
160
|
+
dependency_fingerprints={"target_backend": target_fingerprint},
|
|
161
|
+
minimum_reservation={"model_calls": 1},
|
|
162
|
+
protocol_version=ACON_HISTORY_PROTOCOL,
|
|
163
|
+
)
|
|
164
|
+
response = call_worker(worker, execute_request)
|
|
165
|
+
payload = response.payload
|
|
166
|
+
execute_identity = validate_runtime_identity(payload, self.artifacts)
|
|
167
|
+
if execute_identity != (profile_id, manifest_hash, attestation):
|
|
168
|
+
raise AlgorithmOutputError("ACON runtime identity changed after preflight")
|
|
169
|
+
if payload.get("decision_token") != decision_token:
|
|
170
|
+
raise AlgorithmOutputError("ACON execute decision token mismatch")
|
|
171
|
+
raw_response = optional_text(payload, "raw_response", label="ACON history response")
|
|
172
|
+
summary = optional_text(payload, "summary", label="ACON history response")
|
|
173
|
+
if applied:
|
|
174
|
+
if not summary.strip() or not raw_response.strip():
|
|
175
|
+
raise AlgorithmOutputError(
|
|
176
|
+
"applied ACON history compression requires parsed summary and raw response"
|
|
177
|
+
)
|
|
178
|
+
if response.usage.model_calls < 1:
|
|
179
|
+
raise AlgorithmOutputError(
|
|
180
|
+
"applied ACON history compression must report a model call"
|
|
181
|
+
)
|
|
182
|
+
optimized_messages = _assemble_optimized_messages(
|
|
183
|
+
messages,
|
|
184
|
+
preserved,
|
|
185
|
+
summary,
|
|
186
|
+
summary_rule=self.controls.summary_rule,
|
|
187
|
+
original_prompt=original_prompt,
|
|
188
|
+
)
|
|
189
|
+
else:
|
|
190
|
+
if summary or raw_response:
|
|
191
|
+
raise AlgorithmOutputError("skipped ACON history compression returned model output")
|
|
192
|
+
if response.usage.model_calls != 0:
|
|
193
|
+
raise AlgorithmOutputError(
|
|
194
|
+
"skipped ACON history compression cannot bill model calls"
|
|
195
|
+
)
|
|
196
|
+
optimized_messages = messages
|
|
197
|
+
|
|
198
|
+
trace = ExecutionTrace(
|
|
199
|
+
method_id=self.method_id,
|
|
200
|
+
release_id=self.release_id,
|
|
201
|
+
events=(
|
|
202
|
+
TraceEvent(
|
|
203
|
+
TracePhase.PREPARE,
|
|
204
|
+
"history_branch_inputs",
|
|
205
|
+
{
|
|
206
|
+
"controls": asdict(self.controls),
|
|
207
|
+
"history_text_hash": content_hash(material),
|
|
208
|
+
"previous_summary_hash": content_hash(previous_summary),
|
|
209
|
+
"preserved_message_indices": preserved_indices,
|
|
210
|
+
},
|
|
211
|
+
),
|
|
212
|
+
TraceEvent(
|
|
213
|
+
TracePhase.OBSERVE,
|
|
214
|
+
"strict_threshold_decision",
|
|
215
|
+
{
|
|
216
|
+
"raw_input_tokens": token_count,
|
|
217
|
+
"threshold": self.controls.summarization_threshold,
|
|
218
|
+
"threshold_triggered": threshold_triggered,
|
|
219
|
+
"interval_ready": interval_ready,
|
|
220
|
+
"history_available": bool(material.strip()),
|
|
221
|
+
},
|
|
222
|
+
),
|
|
223
|
+
TraceEvent(
|
|
224
|
+
TracePhase.FINALIZE,
|
|
225
|
+
"history_optimization_result",
|
|
226
|
+
{
|
|
227
|
+
"applied": applied,
|
|
228
|
+
"summary": summary,
|
|
229
|
+
"raw_response": raw_response,
|
|
230
|
+
"output_message_count": len(optimized_messages),
|
|
231
|
+
},
|
|
232
|
+
),
|
|
233
|
+
),
|
|
234
|
+
counters={
|
|
235
|
+
**external_usage_counters(response.usage),
|
|
236
|
+
"worker_calls": 2 if applied else 1,
|
|
237
|
+
"input_messages": len(messages),
|
|
238
|
+
"output_messages": len(optimized_messages),
|
|
239
|
+
},
|
|
240
|
+
warnings=("acon_runtime_code_predates_camera_ready",),
|
|
241
|
+
)
|
|
242
|
+
return InputPatch(
|
|
243
|
+
method_id=self.method_id,
|
|
244
|
+
release_id=self.release_id,
|
|
245
|
+
source_state_hash=state.state_hash,
|
|
246
|
+
operations=(
|
|
247
|
+
PatchOperation(
|
|
248
|
+
PatchOp.REPLACE_MESSAGES,
|
|
249
|
+
optimized_messages,
|
|
250
|
+
target="agent_session_history",
|
|
251
|
+
rationale=(
|
|
252
|
+
"pinned ACON MemoryManager history assembly"
|
|
253
|
+
if applied
|
|
254
|
+
else "upstream ACON history threshold/interval skip"
|
|
255
|
+
),
|
|
256
|
+
),
|
|
257
|
+
PatchOperation(
|
|
258
|
+
PatchOp.SET_METADATA,
|
|
259
|
+
{
|
|
260
|
+
"acon_original_first_user_prompt": original_prompt,
|
|
261
|
+
"acon_previous_history_summary": summary if applied else previous_summary,
|
|
262
|
+
"acon_runtime_attestation": dict(attestation),
|
|
263
|
+
"acon_profile_id": profile_id,
|
|
264
|
+
"acon_compatibility_manifest_sha256": manifest_hash,
|
|
265
|
+
},
|
|
266
|
+
target="acon_history_state",
|
|
267
|
+
rationale="persist ACON cross-round summary and frozen source identity",
|
|
268
|
+
),
|
|
269
|
+
),
|
|
270
|
+
trace=trace,
|
|
271
|
+
implementation_identity=(
|
|
272
|
+
f"thin_external_wrapper:microsoft/acon@{ACON_UPSTREAM_COMMIT}"
|
|
273
|
+
),
|
|
274
|
+
profile_kind="controlled_adapter",
|
|
275
|
+
metadata={
|
|
276
|
+
"implementation_origin": "thin_external_wrapper",
|
|
277
|
+
"paper_version": "ICML_2026_camera_ready",
|
|
278
|
+
"code_artifact_date": "2025-10-14",
|
|
279
|
+
"applied": applied,
|
|
280
|
+
"artifacts": self.artifacts.as_payload(),
|
|
281
|
+
"preserved_message_indices": preserved_indices,
|
|
282
|
+
"raw_history_hash": content_hash(messages),
|
|
283
|
+
"raw_response": raw_response,
|
|
284
|
+
"profile_id": profile_id,
|
|
285
|
+
"compatibility_manifest_sha256": manifest_hash,
|
|
286
|
+
"runtime_attestation": dict(attestation),
|
|
287
|
+
"worker_fingerprint": worker_fingerprint(worker, label="ACON history"),
|
|
288
|
+
},
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def _assemble_optimized_messages(
|
|
293
|
+
messages: tuple[Message, ...],
|
|
294
|
+
preserved: tuple[Message, ...],
|
|
295
|
+
summary: str,
|
|
296
|
+
*,
|
|
297
|
+
summary_rule: str,
|
|
298
|
+
original_prompt: str,
|
|
299
|
+
) -> tuple[Message, ...]:
|
|
300
|
+
base = original_prompt if summary_rule == "reset" else messages[1].content
|
|
301
|
+
user_prompt = f"{base}\n\n<HISTORY_SUMMARY>\n{summary}\n</HISTORY_SUMMARY>"
|
|
302
|
+
return (
|
|
303
|
+
Message(role="system", content=messages[0].content),
|
|
304
|
+
Message(role="user", content=user_prompt),
|
|
305
|
+
*preserved,
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
__all__ = ["ACONHistoryRuntimeExternal"]
|