langchain-agentx-python 0.2.5__tar.gz → 0.2.6__tar.gz
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.
- {langchain-agentx-python-0.2.5/langchain_agentx_python.egg-info → langchain-agentx-python-0.2.6}/PKG-INFO +1 -1
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/model_node.py +22 -27
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/model_nodes.py +20 -25
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/retrier.py +5 -2
- langchain-agentx-python-0.2.6/langchain_agentx/loop/model/retry_bridge.py +56 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/provider/compatible_chat_openai.py +20 -1
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6/langchain_agentx_python.egg-info}/PKG-INFO +1 -1
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/pyproject.toml +1 -1
- langchain-agentx-python-0.2.5/langchain_agentx/loop/model/retry_bridge.py +0 -58
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/LICENSE +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/README.md +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/builtin/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/builtin/clear.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/builtin/compact.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/builtin/memory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/context.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/dispatcher.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/registry.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/result.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/config/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/config/model_profiles.yaml +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/config/model_profiles.yaml.example +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/config/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/config/agent_config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/config/agent_loop_config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/config/runtime_settings.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/config/token_estimator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/blocking_guard.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/compaction_service.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/message_utils.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/pipeline.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/settings.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/base.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/collapse.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/noop.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/snip.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/context/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/exit/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/exit/exit_logic.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/exit/reason_codes.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/graph/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/graph/factory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/graph/graph_edges.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/engine.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/executors/agent.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/executors/command.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/executors/http.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/graph_wiring.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/registry.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/trust.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/injection/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/injection/dedup.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/loop_abort.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/retry_events.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/retry_policy.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/schema_and_format.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/prompt/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/prompt/builder.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/prompt/builtin.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/prompt/compact.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/prompt/sections.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/runtime/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/runtime/context.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/runtime/context_factory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/async_runner.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/context.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/graph.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/orchestrator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/progress.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/runner.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/subagent/transcript.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/instruction/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/instruction/loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/instruction/resolver.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/instruction/runtime.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/instruction/sections.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/instruction/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/age.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/extractor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/paths.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/recall.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/runtime.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/scan.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/memdir/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/session/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/session/compact_bridge.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/session/prompts.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/memory/session/session_memory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/service.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/state.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/evaluation/store.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/events/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/logging/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/logging/debug_burst.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/logging/logging_config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/logging/logging_contract.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/replay/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/replay/cli.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/replay/service.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/replay/store.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/replay/ui.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/collector.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/event_emitter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/trace_callback.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/builtin.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/manifest.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/registries.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/plugin/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/provider/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/provider/anthropic.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/provider/env.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/provider/model_profile.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/provider/openai.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/agent_session.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/conversation_factory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/conversation_recovery.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/conversation_session.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/factory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/session/protocol.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/core/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/core/ids.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/core/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/output/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/output/sink.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/store/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/adapter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/base.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/errors.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/permission_context.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/pipeline.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/policy.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/registry.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/session_store.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/general.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/limits.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/registry/config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/registry/registry.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/scope.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/agent/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/ast_security.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/limits.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/mode_validation.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/observability.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/output_utils.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/path_security.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/result_presenter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/security.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/sed_validation.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/semantics.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/session_manager.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/session_runtime.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/shell_locator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/task_runtime.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/batch_tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/diff_generator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/limits.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/quote_match.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/settings_validator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/staleness.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/edit/validator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/pagination.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/glob/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/grep/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/grep/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/grep/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/grep/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/grep/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/read/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/read/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/read/limits.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/read/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/read/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/read/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/loader.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/policy.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/skill/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_create/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_create/hooks.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_create/limits.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_create/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_create/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_create/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_get/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_get/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_get/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_get/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_list/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_list/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_list/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_list/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_update/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_update/hooks.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_update/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_update/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/task_update/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/user_message/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/user_message/attachments.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/user_message/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/user_message/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/user_message/runtime_config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/user_message/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/backend.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/limits.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/models.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/prompt.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/tool.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/tools/write/validator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/cwd.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/host_platform.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/path_hierarchy.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/path_user_input.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/rg_executable.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/subprocess_text.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/temp_paths.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/unc_path.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/utils/win_reserved_paths.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/base.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/batch.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/dag.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/event_adapter/types.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/node.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/patterns/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/patterns/chaining.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/patterns/routing.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workflow/state.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workspace/__init__.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workspace/capabilities.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workspace/config.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workspace/resolver.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/workspace/validators.py +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx_python.egg-info/SOURCES.txt +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx_python.egg-info/requires.txt +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx_python.egg-info/top_level.txt +0 -0
- {langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/setup.cfg +0 -0
|
@@ -42,7 +42,7 @@ from ..exit.reason_codes import (
|
|
|
42
42
|
TRANSITION_WITHHOLD_RECOVERY_RETRY,
|
|
43
43
|
)
|
|
44
44
|
from .retrier import ModelCallRetrier, RetryContext
|
|
45
|
-
from .retry_bridge import
|
|
45
|
+
from .retry_bridge import emit_retry_events
|
|
46
46
|
from .tool_and_model_binding import get_bound_model, handle_model_output
|
|
47
47
|
from .tool_transcript_guard import repair_messages_for_llm_invoke
|
|
48
48
|
|
|
@@ -295,14 +295,13 @@ class ModelNode(Runnable):
|
|
|
295
295
|
compaction_settings=self._compaction_settings,
|
|
296
296
|
)
|
|
297
297
|
if synth is not None:
|
|
298
|
-
model_response
|
|
298
|
+
model_response = synth
|
|
299
299
|
else:
|
|
300
|
-
model_response,
|
|
300
|
+
model_response, _ = self._run_sync(request, state, config=config)
|
|
301
301
|
|
|
302
302
|
return self._build_state_update(
|
|
303
303
|
state=state,
|
|
304
304
|
model_response=model_response,
|
|
305
|
-
retry_event_commands=retry_event_commands,
|
|
306
305
|
mode="sync",
|
|
307
306
|
)
|
|
308
307
|
|
|
@@ -319,14 +318,13 @@ class ModelNode(Runnable):
|
|
|
319
318
|
compaction_settings=self._compaction_settings,
|
|
320
319
|
)
|
|
321
320
|
if synth is not None:
|
|
322
|
-
model_response
|
|
321
|
+
model_response = synth
|
|
323
322
|
else:
|
|
324
|
-
model_response,
|
|
323
|
+
model_response, _ = await self._arun_async(request, state, config=config)
|
|
325
324
|
|
|
326
325
|
return self._build_state_update(
|
|
327
326
|
state=state,
|
|
328
327
|
model_response=model_response,
|
|
329
|
-
retry_event_commands=retry_event_commands,
|
|
330
328
|
mode="async",
|
|
331
329
|
)
|
|
332
330
|
|
|
@@ -463,10 +461,9 @@ class ModelNode(Runnable):
|
|
|
463
461
|
config: RunnableConfig | None = None,
|
|
464
462
|
) -> tuple[Any, list[Command]]:
|
|
465
463
|
"""同步重试与降级执行。"""
|
|
466
|
-
retry_event_commands: list[Command] = []
|
|
467
464
|
try:
|
|
468
465
|
if self._retrier is None:
|
|
469
|
-
return self._invoke_bound(request, config=config),
|
|
466
|
+
return self._invoke_bound(request, config=config), []
|
|
470
467
|
retry_ctx = RetryContext(
|
|
471
468
|
scope="background" if state.get("retry_scope") == "background" else "foreground"
|
|
472
469
|
)
|
|
@@ -474,11 +471,11 @@ class ModelNode(Runnable):
|
|
|
474
471
|
lambda: self._invoke_bound(request, config=config),
|
|
475
472
|
context=retry_ctx,
|
|
476
473
|
)
|
|
477
|
-
|
|
478
|
-
return retry_result.value,
|
|
474
|
+
emit_retry_events(retry_result.events)
|
|
475
|
+
return retry_result.value, []
|
|
479
476
|
except Exception as primary_exc:
|
|
480
477
|
if self._fallback_model is None:
|
|
481
|
-
return _synthetic_api_error_model_response(primary_exc, self._name),
|
|
478
|
+
return _synthetic_api_error_model_response(primary_exc, self._name), []
|
|
482
479
|
logger.warning(
|
|
483
480
|
"Primary model invoke failed; retrying once with fallback_model",
|
|
484
481
|
exc_info=True,
|
|
@@ -486,15 +483,15 @@ class ModelNode(Runnable):
|
|
|
486
483
|
req_fb = request.override(model=self._fallback_model)
|
|
487
484
|
try:
|
|
488
485
|
if self._retrier is None:
|
|
489
|
-
return self._invoke_bound(req_fb, config=config),
|
|
486
|
+
return self._invoke_bound(req_fb, config=config), []
|
|
490
487
|
fb_result = self._retrier.invoke(
|
|
491
488
|
lambda: self._invoke_bound(req_fb, config=config),
|
|
492
489
|
context=retry_ctx,
|
|
493
490
|
)
|
|
494
|
-
|
|
495
|
-
return fb_result.value,
|
|
491
|
+
emit_retry_events(fb_result.events)
|
|
492
|
+
return fb_result.value, []
|
|
496
493
|
except Exception as fb_exc:
|
|
497
|
-
return _synthetic_api_error_model_response(fb_exc, self._name),
|
|
494
|
+
return _synthetic_api_error_model_response(fb_exc, self._name), []
|
|
498
495
|
|
|
499
496
|
async def _arun_async(
|
|
500
497
|
self,
|
|
@@ -504,10 +501,9 @@ class ModelNode(Runnable):
|
|
|
504
501
|
config: RunnableConfig | None = None,
|
|
505
502
|
) -> tuple[Any, list[Command]]:
|
|
506
503
|
"""异步重试与降级执行。"""
|
|
507
|
-
retry_event_commands: list[Command] = []
|
|
508
504
|
try:
|
|
509
505
|
if self._retrier is None:
|
|
510
|
-
return await self._ainvoke_bound(request, config=config),
|
|
506
|
+
return await self._ainvoke_bound(request, config=config), []
|
|
511
507
|
retry_ctx = RetryContext(
|
|
512
508
|
scope="background" if state.get("retry_scope") == "background" else "foreground"
|
|
513
509
|
)
|
|
@@ -515,11 +511,11 @@ class ModelNode(Runnable):
|
|
|
515
511
|
lambda: self._ainvoke_bound(request, config=config),
|
|
516
512
|
context=retry_ctx,
|
|
517
513
|
)
|
|
518
|
-
|
|
519
|
-
return retry_result.value,
|
|
514
|
+
emit_retry_events(retry_result.events)
|
|
515
|
+
return retry_result.value, []
|
|
520
516
|
except Exception as primary_exc:
|
|
521
517
|
if self._fallback_model is None:
|
|
522
|
-
return _synthetic_api_error_model_response(primary_exc, self._name),
|
|
518
|
+
return _synthetic_api_error_model_response(primary_exc, self._name), []
|
|
523
519
|
logger.warning(
|
|
524
520
|
"Primary model ainvoke failed; retrying once with fallback_model",
|
|
525
521
|
exc_info=True,
|
|
@@ -527,15 +523,15 @@ class ModelNode(Runnable):
|
|
|
527
523
|
req_fb = request.override(model=self._fallback_model)
|
|
528
524
|
try:
|
|
529
525
|
if self._retrier is None:
|
|
530
|
-
return await self._ainvoke_bound(req_fb, config=config),
|
|
526
|
+
return await self._ainvoke_bound(req_fb, config=config), []
|
|
531
527
|
fb_result = await self._retrier.ainvoke(
|
|
532
528
|
lambda: self._ainvoke_bound(req_fb, config=config),
|
|
533
529
|
context=retry_ctx,
|
|
534
530
|
)
|
|
535
|
-
|
|
536
|
-
return fb_result.value,
|
|
531
|
+
emit_retry_events(fb_result.events)
|
|
532
|
+
return fb_result.value, []
|
|
537
533
|
except Exception as fb_exc:
|
|
538
|
-
return _synthetic_api_error_model_response(fb_exc, self._name),
|
|
534
|
+
return _synthetic_api_error_model_response(fb_exc, self._name), []
|
|
539
535
|
|
|
540
536
|
# ===== 退出逻辑与状态更新 =====
|
|
541
537
|
|
|
@@ -544,7 +540,6 @@ class ModelNode(Runnable):
|
|
|
544
540
|
*,
|
|
545
541
|
state: dict,
|
|
546
542
|
model_response: Any,
|
|
547
|
-
retry_event_commands: list[Command],
|
|
548
543
|
mode: str,
|
|
549
544
|
) -> dict:
|
|
550
545
|
"""构建状态更新 + Command 列表。"""
|
|
@@ -584,7 +579,7 @@ class ModelNode(Runnable):
|
|
|
584
579
|
base_state["structured_response"] = model_response.structured_response
|
|
585
580
|
state_update["structured_response"] = model_response.structured_response
|
|
586
581
|
|
|
587
|
-
return [
|
|
582
|
+
return [Command(update=base_state), Command(update=state_update)]
|
|
588
583
|
|
|
589
584
|
def _find_last_ai_message(self, messages: list[Any]) -> AIMessage | None:
|
|
590
585
|
for msg in reversed(messages):
|
|
@@ -37,7 +37,7 @@ from ..exit.reason_codes import (
|
|
|
37
37
|
TRANSITION_WITHHOLD_RECOVERY_EXHAUSTED,
|
|
38
38
|
TRANSITION_WITHHOLD_RECOVERY_RETRY,
|
|
39
39
|
)
|
|
40
|
-
from .retry_bridge import
|
|
40
|
+
from .retry_bridge import emit_retry_events
|
|
41
41
|
from .retrier import ModelCallRetrier, RetryContext
|
|
42
42
|
from .tool_and_model_binding import get_bound_model, handle_model_output
|
|
43
43
|
from .tool_transcript_guard import repair_messages_for_llm_invoke
|
|
@@ -200,7 +200,7 @@ class _ModelNodeBuilder:
|
|
|
200
200
|
config: RunnableConfig | None = None,
|
|
201
201
|
) -> List[Command[Any]]:
|
|
202
202
|
request = self._build_request(state, runtime)
|
|
203
|
-
model_response,
|
|
203
|
+
model_response, _ = self._run_sync_with_retries(
|
|
204
204
|
request,
|
|
205
205
|
state,
|
|
206
206
|
config=config,
|
|
@@ -208,7 +208,6 @@ class _ModelNodeBuilder:
|
|
|
208
208
|
return self._build_commands_from_response(
|
|
209
209
|
state=state,
|
|
210
210
|
model_response=model_response,
|
|
211
|
-
retry_event_commands=retry_event_commands,
|
|
212
211
|
mode="sync",
|
|
213
212
|
)
|
|
214
213
|
|
|
@@ -223,7 +222,7 @@ class _ModelNodeBuilder:
|
|
|
223
222
|
config: RunnableConfig | None = None,
|
|
224
223
|
) -> List[Command[Any]]:
|
|
225
224
|
request = self._build_request(state, runtime)
|
|
226
|
-
model_response,
|
|
225
|
+
model_response, _ = await self._run_async_with_retries(
|
|
227
226
|
request,
|
|
228
227
|
state,
|
|
229
228
|
config=config,
|
|
@@ -231,7 +230,6 @@ class _ModelNodeBuilder:
|
|
|
231
230
|
return self._build_commands_from_response(
|
|
232
231
|
state=state,
|
|
233
232
|
model_response=model_response,
|
|
234
|
-
retry_event_commands=retry_event_commands,
|
|
235
233
|
mode="async",
|
|
236
234
|
)
|
|
237
235
|
|
|
@@ -371,10 +369,9 @@ class _ModelNodeBuilder:
|
|
|
371
369
|
)
|
|
372
370
|
if synth is not None:
|
|
373
371
|
return synth, []
|
|
374
|
-
retry_event_commands: list[Command[Any]] = []
|
|
375
372
|
try:
|
|
376
373
|
if self._retrier is None:
|
|
377
|
-
return self._invoke_bound_sync(request, config=config),
|
|
374
|
+
return self._invoke_bound_sync(request, config=config), []
|
|
378
375
|
retry_ctx = RetryContext(
|
|
379
376
|
scope="background" if state.get("retry_scope") == "background" else "foreground"
|
|
380
377
|
)
|
|
@@ -382,11 +379,11 @@ class _ModelNodeBuilder:
|
|
|
382
379
|
lambda: self._invoke_bound_sync(request, config=config),
|
|
383
380
|
context=retry_ctx,
|
|
384
381
|
)
|
|
385
|
-
|
|
386
|
-
return retry_result.value,
|
|
382
|
+
emit_retry_events(retry_result.events)
|
|
383
|
+
return retry_result.value, []
|
|
387
384
|
except Exception as primary_exc:
|
|
388
385
|
if self._fallback_model is None:
|
|
389
|
-
return _synthetic_api_error_model_response(primary_exc, self._name),
|
|
386
|
+
return _synthetic_api_error_model_response(primary_exc, self._name), []
|
|
390
387
|
logger.warning(
|
|
391
388
|
"Primary model invoke failed; retrying once with fallback_model",
|
|
392
389
|
exc_info=True,
|
|
@@ -395,15 +392,15 @@ class _ModelNodeBuilder:
|
|
|
395
392
|
req_fb.model = self._fallback_model
|
|
396
393
|
try:
|
|
397
394
|
if self._retrier is None:
|
|
398
|
-
return self._invoke_bound_sync(req_fb, config=config),
|
|
395
|
+
return self._invoke_bound_sync(req_fb, config=config), []
|
|
399
396
|
fb_result = self._retrier.invoke(
|
|
400
397
|
lambda: self._invoke_bound_sync(req_fb, config=config),
|
|
401
398
|
context=retry_ctx,
|
|
402
399
|
)
|
|
403
|
-
|
|
404
|
-
return fb_result.value,
|
|
400
|
+
emit_retry_events(fb_result.events)
|
|
401
|
+
return fb_result.value, []
|
|
405
402
|
except Exception as fb_exc:
|
|
406
|
-
return _synthetic_api_error_model_response(fb_exc, self._name),
|
|
403
|
+
return _synthetic_api_error_model_response(fb_exc, self._name), []
|
|
407
404
|
|
|
408
405
|
async def _run_async_with_retries(
|
|
409
406
|
self,
|
|
@@ -421,10 +418,9 @@ class _ModelNodeBuilder:
|
|
|
421
418
|
)
|
|
422
419
|
if synth is not None:
|
|
423
420
|
return synth, []
|
|
424
|
-
retry_event_commands: list[Command[Any]] = []
|
|
425
421
|
try:
|
|
426
422
|
if self._retrier is None:
|
|
427
|
-
return await self._invoke_bound_async(request, config=config),
|
|
423
|
+
return await self._invoke_bound_async(request, config=config), []
|
|
428
424
|
retry_ctx = RetryContext(
|
|
429
425
|
scope="background" if state.get("retry_scope") == "background" else "foreground"
|
|
430
426
|
)
|
|
@@ -432,11 +428,11 @@ class _ModelNodeBuilder:
|
|
|
432
428
|
lambda: self._invoke_bound_async(request, config=config),
|
|
433
429
|
context=retry_ctx,
|
|
434
430
|
)
|
|
435
|
-
|
|
436
|
-
return retry_result.value,
|
|
431
|
+
emit_retry_events(retry_result.events)
|
|
432
|
+
return retry_result.value, []
|
|
437
433
|
except Exception as primary_exc:
|
|
438
434
|
if self._fallback_model is None:
|
|
439
|
-
return _synthetic_api_error_model_response(primary_exc, self._name),
|
|
435
|
+
return _synthetic_api_error_model_response(primary_exc, self._name), []
|
|
440
436
|
logger.warning(
|
|
441
437
|
"Primary model ainvoke failed; retrying once with fallback_model",
|
|
442
438
|
exc_info=True,
|
|
@@ -445,22 +441,21 @@ class _ModelNodeBuilder:
|
|
|
445
441
|
req_fb.model = self._fallback_model
|
|
446
442
|
try:
|
|
447
443
|
if self._retrier is None:
|
|
448
|
-
return await self._invoke_bound_async(req_fb, config=config),
|
|
444
|
+
return await self._invoke_bound_async(req_fb, config=config), []
|
|
449
445
|
fb_result = await self._retrier.ainvoke(
|
|
450
446
|
lambda: self._invoke_bound_async(req_fb, config=config),
|
|
451
447
|
context=retry_ctx,
|
|
452
448
|
)
|
|
453
|
-
|
|
454
|
-
return fb_result.value,
|
|
449
|
+
emit_retry_events(fb_result.events)
|
|
450
|
+
return fb_result.value, []
|
|
455
451
|
except Exception as fb_exc:
|
|
456
|
-
return _synthetic_api_error_model_response(fb_exc, self._name),
|
|
452
|
+
return _synthetic_api_error_model_response(fb_exc, self._name), []
|
|
457
453
|
|
|
458
454
|
def _build_commands_from_response(
|
|
459
455
|
self,
|
|
460
456
|
*,
|
|
461
457
|
state: AgentState[Any],
|
|
462
458
|
model_response: Any,
|
|
463
|
-
retry_event_commands: list[Command[Any]],
|
|
464
459
|
mode: str,
|
|
465
460
|
) -> List[Command[Any]]:
|
|
466
461
|
last_ai_message = self._find_last_ai_message(model_response.result)
|
|
@@ -498,7 +493,7 @@ class _ModelNodeBuilder:
|
|
|
498
493
|
if model_response.structured_response is not None:
|
|
499
494
|
base_state["structured_response"] = model_response.structured_response
|
|
500
495
|
state_update["structured_response"] = model_response.structured_response
|
|
501
|
-
return [
|
|
496
|
+
return [Command(update=base_state), Command(update=state_update)]
|
|
502
497
|
|
|
503
498
|
def _find_last_ai_message(self, messages: list[Any]) -> AIMessage | None:
|
|
504
499
|
for msg in reversed(messages):
|
|
@@ -92,15 +92,18 @@ class RetryClassifier:
|
|
|
92
92
|
@dataclass(slots=True)
|
|
93
93
|
class ModelRetryConfig:
|
|
94
94
|
max_retries: int = 10
|
|
95
|
-
initial_delay: float = 0
|
|
95
|
+
initial_delay: float = 2.0
|
|
96
96
|
backoff_factor: float = 2.0
|
|
97
|
-
max_delay: float =
|
|
97
|
+
max_delay: float = 60.0
|
|
98
98
|
jitter: bool = True
|
|
99
99
|
heartbeat_threshold_seconds: float = 30.0
|
|
100
100
|
heartbeat_interval_seconds: float = 30.0
|
|
101
101
|
retry_on: Callable[[Exception], bool] = default_retry_on
|
|
102
102
|
allow_background_529_retry: bool = False
|
|
103
103
|
auth_recovery_handler: AuthRecoveryHandler | None = None
|
|
104
|
+
# Fallback 机制:连续 N 次 429/529 后触发 fallback
|
|
105
|
+
max_consecutive_rate_limit: int = 3
|
|
106
|
+
fallback_model: Any | None = None
|
|
104
107
|
|
|
105
108
|
|
|
106
109
|
@dataclass(slots=True)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""
|
|
2
|
+
模型重试事件处理。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
- 将 retrier 产出的事件记录到日志
|
|
6
|
+
- 不再写入 messages state,避免污染 LLM 上下文
|
|
7
|
+
- 事件通过 trace/observability 通道对外暴露(由外部系统订阅)
|
|
8
|
+
|
|
9
|
+
重要变更:
|
|
10
|
+
旧版本将重试事件转为 SystemMessage 写入 state,导致:
|
|
11
|
+
- LLM 上下文被大量重试提示污染
|
|
12
|
+
- _strip_system_messages_from_state 需要额外处理这些消息
|
|
13
|
+
|
|
14
|
+
新版本仅记录日志和返回事件数据,由外部系统(如 trace 包)决定如何展示。
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import logging
|
|
20
|
+
from typing import Iterable
|
|
21
|
+
|
|
22
|
+
from .retry_events import ModelRetryEvent
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _format_retry_event_message(event: ModelRetryEvent) -> str:
|
|
28
|
+
"""格式化重试事件为可读字符串。"""
|
|
29
|
+
seconds = max(0, int(round(event.retry_in_ms / 1000)))
|
|
30
|
+
if event.event_type == "heartbeat":
|
|
31
|
+
prefix = "Retry still pending"
|
|
32
|
+
else:
|
|
33
|
+
prefix = "Retry scheduled"
|
|
34
|
+
return (
|
|
35
|
+
f"[{prefix}] in {seconds}s "
|
|
36
|
+
f"(attempt {event.attempt}/{event.max_retries}) "
|
|
37
|
+
f"{event.error_type}: {event.error_message}"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def emit_retry_events(events: Iterable[ModelRetryEvent]) -> None:
|
|
42
|
+
"""
|
|
43
|
+
发出重试事件(记录日志 + 返回原始事件数据)。
|
|
44
|
+
|
|
45
|
+
不再返回 Command,避免重试事件写入 messages state。
|
|
46
|
+
外部系统可通过 observability/trace 通道订阅这些事件。
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
events: 重试事件列表
|
|
50
|
+
"""
|
|
51
|
+
for event in events:
|
|
52
|
+
msg = _format_retry_event_message(event)
|
|
53
|
+
logger.info("[ModelRetry] %s", msg)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
__all__ = ["emit_retry_events", "_format_retry_event_message"]
|
|
@@ -29,7 +29,26 @@ from langchain_openai import ChatOpenAI
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class CompatibleChatOpenAI(ChatOpenAI):
|
|
32
|
-
"""OpenAI 兼容 ChatModel 封装(支持 reasoning_content)。
|
|
32
|
+
"""OpenAI 兼容 ChatModel 封装(支持 reasoning_content)。
|
|
33
|
+
|
|
34
|
+
重要:本类默认禁用 OpenAI SDK 内置重试(max_retries=0),由外层 ModelCallRetrier
|
|
35
|
+
统一管理重试逻辑,避免双层重试导致请求放大问题。
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
def __init__(
|
|
39
|
+
self,
|
|
40
|
+
max_retries: int = 0,
|
|
41
|
+
**kwargs: Any,
|
|
42
|
+
) -> None:
|
|
43
|
+
"""
|
|
44
|
+
初始化 CompatibleChatOpenAI。
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
max_retries: OpenAI SDK 内置重试次数,默认 0(由外层 ModelCallRetrier 接管)。
|
|
48
|
+
如需启用 SDK 内置重试,显式传入 max_retries > 0。
|
|
49
|
+
**kwargs: 传递给 ChatOpenAI 的其他参数。
|
|
50
|
+
"""
|
|
51
|
+
super().__init__(max_retries=max_retries, **kwargs)
|
|
33
52
|
|
|
34
53
|
def _get_request_payload(
|
|
35
54
|
self,
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
模型重试事件到 loop message 的桥接。
|
|
3
|
-
|
|
4
|
-
职责:
|
|
5
|
-
- 将 retrier 产出的事件转为 SystemMessage
|
|
6
|
-
- 由 model_node 统一并入 Command(update={"messages": ...})
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from __future__ import annotations
|
|
10
|
-
|
|
11
|
-
from typing import Iterable
|
|
12
|
-
|
|
13
|
-
from langchain_core.messages import SystemMessage
|
|
14
|
-
from langgraph.types import Command
|
|
15
|
-
|
|
16
|
-
from .retry_events import (
|
|
17
|
-
RETRY_EVENT_METADATA_FLAG,
|
|
18
|
-
RETRY_EVENT_SUBTYPE,
|
|
19
|
-
ModelRetryEvent,
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def _format_retry_event_message(event: ModelRetryEvent) -> str:
|
|
24
|
-
seconds = max(0, int(round(event.retry_in_ms / 1000)))
|
|
25
|
-
if event.event_type == "heartbeat":
|
|
26
|
-
prefix = "Retry still pending"
|
|
27
|
-
else:
|
|
28
|
-
prefix = "Retry scheduled"
|
|
29
|
-
return (
|
|
30
|
-
f"[{prefix}] in {seconds}s "
|
|
31
|
-
f"(attempt {event.attempt}/{event.max_retries}) "
|
|
32
|
-
f"{event.error_type}: {event.error_message}"
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def build_retry_event_commands(events: Iterable[ModelRetryEvent]) -> list[Command]:
|
|
37
|
-
commands: list[Command] = []
|
|
38
|
-
for event in events:
|
|
39
|
-
msg = SystemMessage(
|
|
40
|
-
content=_format_retry_event_message(event),
|
|
41
|
-
response_metadata={
|
|
42
|
-
RETRY_EVENT_METADATA_FLAG: True,
|
|
43
|
-
"subtype": RETRY_EVENT_SUBTYPE,
|
|
44
|
-
"event_type": event.event_type,
|
|
45
|
-
"retry_in_ms": event.retry_in_ms,
|
|
46
|
-
"attempt": event.attempt,
|
|
47
|
-
"max_retries": event.max_retries,
|
|
48
|
-
"error": {
|
|
49
|
-
"type": event.error_type,
|
|
50
|
-
"message": event.error_message,
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
)
|
|
54
|
-
commands.append(Command(update={"messages": [msg]}))
|
|
55
|
-
return commands
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
__all__ = ["build_retry_event_commands"]
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/__init__.py
RENAMED
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/context.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/registry.py
RENAMED
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/result.py
RENAMED
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/command/types.py
RENAMED
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/config.py
RENAMED
|
File without changes
|
{langchain-agentx-python-0.2.5 → langchain-agentx-python-0.2.6}/langchain_agentx/loop/hook/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|