langchain-agentx-python 0.5.1__tar.gz → 0.5.3__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.5.1 → langchain-agentx-python-0.5.3}/PKG-INFO +1 -1
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/__init__.py +13 -1
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/exit/exit_logic.py +4 -1
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/graph/graph_edges.py +19 -7
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/__init__.py +18 -1
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/engine.py +63 -5
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/graph_wiring.py +32 -24
- langchain-agentx-python-0.5.3/langchain_agentx/loop/hook/hook_projection.py +164 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/types.py +9 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +147 -29
- langchain-agentx-python-0.5.3/langchain_agentx/observability/trace/hook_event_emitter.py +96 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/__init__.py +23 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/loader.py +53 -1
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/override.py +26 -5
- langchain-agentx-python-0.5.3/langchain_agentx/tool_runtime/path_safety.py +193 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/permission_decision.py +22 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/policy.py +116 -49
- langchain-agentx-python-0.5.3/langchain_agentx/tool_runtime/read_ignore_patterns.py +53 -0
- langchain-agentx-python-0.5.3/langchain_agentx/tool_runtime/read_permission.py +120 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/settings_validator.py +9 -3
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/rg_list_backend.py +15 -3
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx_python.egg-info/PKG-INFO +1 -1
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx_python.egg-info/SOURCES.txt +4 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/pyproject.toml +1 -1
- langchain-agentx-python-0.5.1/langchain_agentx/observability/trace/hook_event_emitter.py +0 -49
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/LICENSE +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/README.md +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/builtin/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/builtin/clear.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/builtin/compact.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/builtin/memory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/context.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/dispatcher.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/registry.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/result.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/command/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/config/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/config/model_profiles.yaml +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/config/model_profiles.yaml.example +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/config/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/config/agent_config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/config/agent_loop_config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/config/runtime_settings.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/config/token_estimator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/blocking_guard.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/compaction_service.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/message_utils.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/pipeline.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/settings.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/base.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/collapse.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/noop.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/snip.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/context/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/exit/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/exit/reason_codes.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/graph/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/graph/factory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/executors/agent.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/executors/command.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/executors/http.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/registry.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/trust.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/injection/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/injection/dedup.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/loop_abort.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/model_node.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/model_nodes.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/retrier.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/retry_bridge.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/retry_events.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/retry_policy.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/schema_and_format.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/prompt/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/prompt/builder.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/prompt/builtin.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/prompt/compact.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/prompt/sections.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/prompt/session_context.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/runtime/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/runtime/context.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/runtime/context_factory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/async_runner.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/context.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/graph.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/orchestrator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/progress.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/runner.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/subagent/transcript.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/instruction/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/instruction/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/instruction/resolver.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/instruction/runtime.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/instruction/sections.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/instruction/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/age.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/extractor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/paths.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/recall.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/runtime.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/scan.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/memdir/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/session/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/session/compact_bridge.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/session/prompts.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/memory/session/session_memory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/service.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/state.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/evaluation/store.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/events/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/logging/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/logging/debug_burst.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/logging/logging_config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/logging/logging_contract.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/replay/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/replay/cli.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/replay/service.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/replay/store.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/replay/ui.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/collector.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/event_emitter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/trace_callback.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/builtin.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/manifest.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/registries.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/plugin/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/provider/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/provider/anthropic.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/provider/env.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/provider/model_profile.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/provider/openai.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/agent_session.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/conversation_factory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/conversation_recovery.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/conversation_session.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/factory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/session/protocol.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/core/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/core/ids.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/core/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/output/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/output/sink.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/store/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/adapter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/allowlist.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/classifier/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/classifier/classifier.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/classifier/parser.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/classifier/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/classifier/schema.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/classifier/transcript.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/config_update.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/decision.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/events.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/factory.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/feedback.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/hook.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/rule_stripping.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/auto_mode/state.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/base.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/errors.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/permission_context.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/pipeline.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/policy_decorator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/_abort.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/cli_interactive.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/handler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/headless.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/legacy_resolver_adapter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/race.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/prompt/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/registry.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/session_store.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/general.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/registry/config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/registry/registry.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/scope.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/agent/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/ast_security.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/auto_mode_adapter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/events.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/mode_validation.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/observability.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/output_utils.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/path_security.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/result_presenter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/security.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/sed_validation.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/semantics.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/session_manager.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/session_runtime.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/shell_locator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/task_runtime.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/diff_generator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/quote_match.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/staleness.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/edit/validator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/pagination.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/glob/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/grep/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/grep/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/grep/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/grep/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/grep/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/read/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/read/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/read/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/read/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/read/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/read/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/policy.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/skill/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_create/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_create/hooks.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_create/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_create/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_create/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_create/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_get/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_get/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_get/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_get/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_list/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_list/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_list/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_list/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_update/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_update/hooks.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_update/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_update/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/task_update/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/user_message/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/user_message/attachments.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/user_message/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/user_message/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/user_message/runtime_config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/user_message/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/summary.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/webfetch/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/events.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/loader.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/websearch/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/backend.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/limits.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/models.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/prompt.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/tool.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/tools/write/validator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/cwd.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/host_platform.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/path_hierarchy.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/path_user_input.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/rg_executable.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/subprocess_text.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/temp_paths.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/unc_path.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/utils/win_reserved_paths.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/base.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/batch.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/dag.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/event_adapter/types.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/node.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/patterns/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/patterns/chaining.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/patterns/routing.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workflow/state.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workspace/__init__.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workspace/capabilities.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workspace/config.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workspace/resolver.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/workspace/validators.py +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx_python.egg-info/requires.txt +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx_python.egg-info/top_level.txt +0 -0
- {langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/setup.cfg +0 -0
{langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/__init__.py
RENAMED
|
@@ -11,12 +11,19 @@ from langchain_agentx import create_loop_agent
|
|
|
11
11
|
```
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
__version__ = "0.5.
|
|
14
|
+
__version__ = "0.5.3"
|
|
15
15
|
|
|
16
16
|
from .loop import ( # noqa: F401
|
|
17
17
|
create_loop_agent,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
|
+
from .loop.hook import ( # noqa: F401
|
|
21
|
+
ATTACHMENT_HOOK_BLOCKING_ERROR,
|
|
22
|
+
ATTACHMENT_HOOK_CANCELLED,
|
|
23
|
+
ATTACHMENT_HOOK_NON_BLOCKING_ERROR,
|
|
24
|
+
ATTACHMENT_HOOK_STOPPED_CONTINUATION,
|
|
25
|
+
ATTACHMENT_HOOK_SUCCESS,
|
|
26
|
+
)
|
|
20
27
|
from .observability import ( # noqa: F401
|
|
21
28
|
EventAdapterState,
|
|
22
29
|
LangchainAgentEvent,
|
|
@@ -31,6 +38,11 @@ from .session import AgentSession, create_agent_session # noqa: F401
|
|
|
31
38
|
from .workflow import BaseWorkflow # noqa: F401
|
|
32
39
|
|
|
33
40
|
__all__ = [
|
|
41
|
+
"ATTACHMENT_HOOK_BLOCKING_ERROR",
|
|
42
|
+
"ATTACHMENT_HOOK_CANCELLED",
|
|
43
|
+
"ATTACHMENT_HOOK_NON_BLOCKING_ERROR",
|
|
44
|
+
"ATTACHMENT_HOOK_STOPPED_CONTINUATION",
|
|
45
|
+
"ATTACHMENT_HOOK_SUCCESS",
|
|
34
46
|
"create_loop_agent",
|
|
35
47
|
"create_agent_session",
|
|
36
48
|
"AgentSession",
|
|
@@ -21,7 +21,7 @@ Agent Loop 退出逻辑与扩展状态定义。
|
|
|
21
21
|
|
|
22
22
|
from __future__ import annotations
|
|
23
23
|
|
|
24
|
-
from typing import Any, TypedDict
|
|
24
|
+
from typing import Any, NotRequired, TypedDict
|
|
25
25
|
|
|
26
26
|
from langchain_core.messages import AIMessage
|
|
27
27
|
|
|
@@ -260,6 +260,9 @@ class AgentLoopState(TypedDict):
|
|
|
260
260
|
max_output_tokens_override: int | None # max_output_tokens 升档参数
|
|
261
261
|
max_output_tokens_recovery_count: int # max_output_tokens 恢复计数
|
|
262
262
|
__hook_result__: dict[str, Any] | None # 新 Hook 聚合结果(loop_controller 首选读取)
|
|
263
|
+
_hook_ui_events: NotRequired[
|
|
264
|
+
list[dict[str, Any]]
|
|
265
|
+
] # per-script UI 事件队列;节点 patch 替换,非 add_messages 累积
|
|
263
266
|
_hook_engine: Any | None # Hook 引擎实例(hook 节点/edge 读取)
|
|
264
267
|
_hook_runner: Any | None # Hook 执行协作者(hook 节点/edge 读取)
|
|
265
268
|
_session_env: dict[str, str] # SESSION_START hook 注入的会话级环境变量
|
|
@@ -34,6 +34,7 @@ from langgraph.graph.state import StateGraph
|
|
|
34
34
|
from langgraph.prebuilt.tool_node import ToolCallWithContext, ToolNode
|
|
35
35
|
from langgraph.types import Send
|
|
36
36
|
from ..hook.async_hook_runner import AsyncHookRunner
|
|
37
|
+
from ..hook.hook_projection import hook_result_to_event_dict
|
|
37
38
|
from ..hook.types import HookContext, HookEvent
|
|
38
39
|
|
|
39
40
|
# 导入事件发射器(CLI Phase 1A 骨架)
|
|
@@ -84,6 +85,7 @@ def _execute_hook_common(
|
|
|
84
85
|
tool_name: str | None = None,
|
|
85
86
|
tool_input: dict[str, Any] | None = None,
|
|
86
87
|
tool_result: Any = None,
|
|
88
|
+
tool_call_id: str | None = None,
|
|
87
89
|
) -> dict[str, Any] | None:
|
|
88
90
|
hook_engine = state.get("_hook_engine")
|
|
89
91
|
if hook_engine is None:
|
|
@@ -102,15 +104,21 @@ def _execute_hook_common(
|
|
|
102
104
|
ctx_kwargs["tool_input"] = tool_input
|
|
103
105
|
if tool_result is not None:
|
|
104
106
|
ctx_kwargs["tool_result"] = tool_result
|
|
107
|
+
if tool_call_id is not None:
|
|
108
|
+
ctx_kwargs["tool_call_id"] = tool_call_id
|
|
105
109
|
ctx = HookContext(**ctx_kwargs)
|
|
106
110
|
result = hook_runner.run(hook_engine, ctx)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
hook_dict = hook_result_to_event_dict(
|
|
112
|
+
result,
|
|
113
|
+
tool_call_id=tool_call_id,
|
|
114
|
+
)
|
|
115
|
+
emitter = getattr(hook_engine, "_event_emitter", None)
|
|
116
|
+
if emitter is not None and hasattr(emitter, "drain_ui_events"):
|
|
117
|
+
pending = emitter.drain_ui_events()
|
|
118
|
+
if pending:
|
|
119
|
+
# 每次 hook 调用替换列表(非累积);LangGraph 对未注解键为 last-write-wins
|
|
120
|
+
state["_hook_ui_events"] = pending
|
|
121
|
+
return hook_dict
|
|
114
122
|
|
|
115
123
|
|
|
116
124
|
def _execute_hook_for_tool(
|
|
@@ -120,6 +128,7 @@ def _execute_hook_for_tool(
|
|
|
120
128
|
tool_name: str,
|
|
121
129
|
tool_input: dict[str, Any] | None,
|
|
122
130
|
tool_result: Any = None,
|
|
131
|
+
tool_call_id: str | None = None,
|
|
123
132
|
) -> dict[str, Any] | None:
|
|
124
133
|
return _execute_hook_common(
|
|
125
134
|
state,
|
|
@@ -127,6 +136,7 @@ def _execute_hook_for_tool(
|
|
|
127
136
|
tool_name=tool_name,
|
|
128
137
|
tool_input=tool_input,
|
|
129
138
|
tool_result=tool_result,
|
|
139
|
+
tool_call_id=tool_call_id,
|
|
130
140
|
)
|
|
131
141
|
|
|
132
142
|
|
|
@@ -679,6 +689,7 @@ class LoopControllerEdge:
|
|
|
679
689
|
event=HookEvent.PRE_TOOL_USE,
|
|
680
690
|
tool_name=tool_name,
|
|
681
691
|
tool_input=tool_args if isinstance(tool_args, dict) else {},
|
|
692
|
+
tool_call_id=str(tool_call.get("id") or "") or None,
|
|
682
693
|
)
|
|
683
694
|
next_tool_call = tool_call
|
|
684
695
|
blocked_message: ToolMessage | None = None
|
|
@@ -812,6 +823,7 @@ def _make_tools_to_model_edge(
|
|
|
812
823
|
tool_name=str(tc.get("name") or ""),
|
|
813
824
|
tool_input=tc.get("args") if isinstance(tc.get("args"), dict) else {},
|
|
814
825
|
tool_result=getattr(tm, "content", None),
|
|
826
|
+
tool_call_id=str(getattr(tm, "tool_call_id", "") or "") or None,
|
|
815
827
|
)
|
|
816
828
|
if isinstance(hook_result, dict):
|
|
817
829
|
state["__hook_result__"] = hook_result
|
|
@@ -15,7 +15,16 @@ from .config import HookCandidate, HookCandidateDecision, HookSpec, HooksConfigS
|
|
|
15
15
|
from .async_hook_runner import AsyncHookRunner
|
|
16
16
|
from .engine import HookEngine
|
|
17
17
|
from .executors import AgentExecutor, CommandExecutor, HttpExecutor, PromptExecutor
|
|
18
|
-
from .graph_wiring import HookGraphWiring
|
|
18
|
+
from .graph_wiring import HookGraphWiring, derive_hook_outcome
|
|
19
|
+
from .hook_projection import (
|
|
20
|
+
ATTACHMENT_HOOK_BLOCKING_ERROR,
|
|
21
|
+
ATTACHMENT_HOOK_CANCELLED,
|
|
22
|
+
ATTACHMENT_HOOK_NON_BLOCKING_ERROR,
|
|
23
|
+
ATTACHMENT_HOOK_STOPPED_CONTINUATION,
|
|
24
|
+
ATTACHMENT_HOOK_SUCCESS,
|
|
25
|
+
derive_attachment_type,
|
|
26
|
+
hook_result_to_event_dict,
|
|
27
|
+
)
|
|
19
28
|
from .registry import HookRegistry
|
|
20
29
|
from .trust import WorkspaceTrustChecker
|
|
21
30
|
from .types import (
|
|
@@ -27,6 +36,11 @@ from .types import (
|
|
|
27
36
|
)
|
|
28
37
|
|
|
29
38
|
__all__ = [
|
|
39
|
+
"ATTACHMENT_HOOK_BLOCKING_ERROR",
|
|
40
|
+
"ATTACHMENT_HOOK_CANCELLED",
|
|
41
|
+
"ATTACHMENT_HOOK_NON_BLOCKING_ERROR",
|
|
42
|
+
"ATTACHMENT_HOOK_STOPPED_CONTINUATION",
|
|
43
|
+
"ATTACHMENT_HOOK_SUCCESS",
|
|
30
44
|
"AggregatedHookResult",
|
|
31
45
|
"AsyncHookRunner",
|
|
32
46
|
"HookCandidate",
|
|
@@ -45,4 +59,7 @@ __all__ = [
|
|
|
45
59
|
"PromptExecutor",
|
|
46
60
|
"AgentExecutor",
|
|
47
61
|
"WorkspaceTrustChecker",
|
|
62
|
+
"derive_attachment_type",
|
|
63
|
+
"derive_hook_outcome",
|
|
64
|
+
"hook_result_to_event_dict",
|
|
48
65
|
]
|
{langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/engine.py
RENAMED
|
@@ -37,6 +37,7 @@ from .types import (
|
|
|
37
37
|
HookResult,
|
|
38
38
|
PermissionBehavior,
|
|
39
39
|
)
|
|
40
|
+
from .hook_projection import build_hook_info
|
|
40
41
|
from .trust import WorkspaceTrustChecker
|
|
41
42
|
|
|
42
43
|
if TYPE_CHECKING:
|
|
@@ -97,6 +98,7 @@ class HookEngine:
|
|
|
97
98
|
self._trust_checker = trust_checker
|
|
98
99
|
|
|
99
100
|
async def execute(self, ctx: HookContext) -> AggregatedHookResult:
|
|
101
|
+
batch_started_at = time.perf_counter()
|
|
100
102
|
candidates, skipped = self._snapshot.get_candidates_with_decisions(ctx)
|
|
101
103
|
self._emit_skipped_records(ctx, skipped)
|
|
102
104
|
if not candidates:
|
|
@@ -119,15 +121,23 @@ class HookEngine:
|
|
|
119
121
|
]
|
|
120
122
|
|
|
121
123
|
for candidate in sequential_candidates:
|
|
122
|
-
one = await self._run_with_record(candidate, ctx)
|
|
124
|
+
one = await self._run_with_record(candidate, ctx, result)
|
|
123
125
|
self._merge(result, one)
|
|
124
126
|
|
|
125
127
|
if parallel_candidates:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
|
|
129
|
+
async def _run_parallel(candidate: HookCandidate) -> tuple[HookResult, AggregatedHookResult]:
|
|
130
|
+
local = AggregatedHookResult()
|
|
131
|
+
one = await self._run_with_record(candidate, ctx, local)
|
|
132
|
+
return one, local
|
|
133
|
+
|
|
134
|
+
pairs = await asyncio.gather(
|
|
135
|
+
*(_run_parallel(candidate) for candidate in parallel_candidates)
|
|
128
136
|
)
|
|
129
|
-
for one in
|
|
137
|
+
for one, local in pairs:
|
|
130
138
|
self._merge(result, one)
|
|
139
|
+
result.hook_infos.extend(local.hook_infos)
|
|
140
|
+
result.duration_ms = (time.perf_counter() - batch_started_at) * 1000
|
|
131
141
|
return result
|
|
132
142
|
|
|
133
143
|
def _filter_trusted_candidates(
|
|
@@ -144,11 +154,55 @@ class HookEngine:
|
|
|
144
154
|
trusted.append(candidate)
|
|
145
155
|
return trusted
|
|
146
156
|
|
|
147
|
-
async def _run_with_record(
|
|
157
|
+
async def _run_with_record(
|
|
158
|
+
self,
|
|
159
|
+
candidate: HookCandidate,
|
|
160
|
+
ctx: HookContext,
|
|
161
|
+
agg: AggregatedHookResult,
|
|
162
|
+
) -> HookResult:
|
|
163
|
+
hook_name = str(candidate.spec.config.get("name") or candidate.spec.hook_id)
|
|
164
|
+
if self._event_emitter is not None:
|
|
165
|
+
self._event_emitter.emit_progress(
|
|
166
|
+
{
|
|
167
|
+
"hook_id": candidate.spec.hook_id,
|
|
168
|
+
"hook_name": hook_name,
|
|
169
|
+
"hook_event": ctx.event.value,
|
|
170
|
+
"tool_call_id": ctx.tool_call_id,
|
|
171
|
+
"session_id": ctx.session_id,
|
|
172
|
+
"node_level": False,
|
|
173
|
+
"phase": "running",
|
|
174
|
+
}
|
|
175
|
+
)
|
|
148
176
|
started_at = time.perf_counter()
|
|
149
177
|
one = await self._run_one(candidate, ctx)
|
|
150
178
|
duration_ms = (time.perf_counter() - started_at) * 1000
|
|
151
179
|
outcome = self._emit_execution_record(ctx, candidate, one, duration_ms)
|
|
180
|
+
info = build_hook_info(
|
|
181
|
+
hook_id=candidate.spec.hook_id,
|
|
182
|
+
hook_event=ctx.event.value,
|
|
183
|
+
config=candidate.spec.config,
|
|
184
|
+
outcome=outcome, # type: ignore[arg-type]
|
|
185
|
+
duration_ms=duration_ms,
|
|
186
|
+
stdout=one.stdout,
|
|
187
|
+
stderr=one.stderr,
|
|
188
|
+
exit_code=one.exit_code,
|
|
189
|
+
prevent_continuation=one.prevent_continuation,
|
|
190
|
+
blocking_errors=list(one.blocking_errors) or None,
|
|
191
|
+
tool_call_id=ctx.tool_call_id,
|
|
192
|
+
)
|
|
193
|
+
agg.hook_infos.append(info)
|
|
194
|
+
agg.duration_ms += duration_ms
|
|
195
|
+
if self._event_emitter is not None:
|
|
196
|
+
self._event_emitter.emit_response(
|
|
197
|
+
{
|
|
198
|
+
**info,
|
|
199
|
+
"combined_stdout": one.stdout,
|
|
200
|
+
"combined_stderr": one.stderr,
|
|
201
|
+
"node_level": False,
|
|
202
|
+
"phase": "finished",
|
|
203
|
+
"session_id": ctx.session_id,
|
|
204
|
+
}
|
|
205
|
+
)
|
|
152
206
|
if outcome == "success" and candidate.spec.on_success is not None:
|
|
153
207
|
candidate.spec.on_success()
|
|
154
208
|
return one
|
|
@@ -245,6 +299,10 @@ class HookEngine:
|
|
|
245
299
|
outcome=outcome,
|
|
246
300
|
prevent_continuation=result.prevent_continuation,
|
|
247
301
|
duration_ms=duration_ms,
|
|
302
|
+
tool_call_id=ctx.tool_call_id,
|
|
303
|
+
stdout=result.stdout,
|
|
304
|
+
stderr=result.stderr,
|
|
305
|
+
exit_code=result.exit_code,
|
|
248
306
|
)
|
|
249
307
|
self._try_emit_record(ctx.session_id, record)
|
|
250
308
|
return outcome
|
|
@@ -19,26 +19,17 @@ from uuid import uuid4
|
|
|
19
19
|
|
|
20
20
|
from .async_hook_runner import AsyncHookRunner
|
|
21
21
|
from .engine import HookEngine
|
|
22
|
+
from .hook_projection import derive_hook_outcome, hook_result_to_event_dict
|
|
22
23
|
from .types import AggregatedHookResult, HookContext, HookEvent
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
def _to_hook_result_dict(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"additional_contexts": list(result.additional_contexts),
|
|
33
|
-
"updated_input": result.updated_input,
|
|
34
|
-
"state_patch": dict(result.state_patch),
|
|
35
|
-
# Hook 输出结果(对齐 CC hook_response)
|
|
36
|
-
"stdouts": list(result.stdouts) or None,
|
|
37
|
-
"stderrs": list(result.stderrs) or None,
|
|
38
|
-
"exit_codes": list(result.exit_codes) or None,
|
|
39
|
-
"combined_stdout": result.combined_stdout or None,
|
|
40
|
-
"combined_stderr": result.combined_stderr or None,
|
|
41
|
-
}
|
|
26
|
+
def _to_hook_result_dict(
|
|
27
|
+
result: AggregatedHookResult,
|
|
28
|
+
*,
|
|
29
|
+
tool_call_id: str | None = None,
|
|
30
|
+
) -> dict[str, Any]:
|
|
31
|
+
"""兼容别名:图节点 __hook_result__ 与事件 adapter 共用投影。"""
|
|
32
|
+
return hook_result_to_event_dict(result, tool_call_id=tool_call_id)
|
|
42
33
|
|
|
43
34
|
|
|
44
35
|
@dataclass
|
|
@@ -71,6 +62,7 @@ class HookGraphWiring:
|
|
|
71
62
|
result = self._execute_sync(HookEvent.LOOP_START, state_with_run_id)
|
|
72
63
|
if result is not None:
|
|
73
64
|
patch["__hook_result__"] = _to_hook_result_dict(result)
|
|
65
|
+
patch.update(self._drain_hook_ui_events())
|
|
74
66
|
if result.state_patch:
|
|
75
67
|
patch.update(dict(result.state_patch))
|
|
76
68
|
return patch
|
|
@@ -78,8 +70,10 @@ class HookGraphWiring:
|
|
|
78
70
|
def before_model_node(self, state: dict[str, Any], runtime: Any) -> dict[str, Any]:
|
|
79
71
|
result = self._execute_sync(HookEvent.BEFORE_MODEL, state)
|
|
80
72
|
patch = {"__hook_result__": _to_hook_result_dict(result)} if result is not None else {}
|
|
81
|
-
if result is not None
|
|
82
|
-
patch.update(
|
|
73
|
+
if result is not None:
|
|
74
|
+
patch.update(self._drain_hook_ui_events())
|
|
75
|
+
if result.state_patch:
|
|
76
|
+
patch.update(dict(result.state_patch))
|
|
83
77
|
if self.trace_lifecycle_collector is not None:
|
|
84
78
|
patch.update(self.trace_lifecycle_collector.before_model_node(state))
|
|
85
79
|
return patch
|
|
@@ -87,8 +81,10 @@ class HookGraphWiring:
|
|
|
87
81
|
def after_model_node(self, state: dict[str, Any], runtime: Any) -> dict[str, Any]:
|
|
88
82
|
result = self._execute_sync(HookEvent.AFTER_MODEL, state)
|
|
89
83
|
patch = {"__hook_result__": _to_hook_result_dict(result)} if result is not None else {}
|
|
90
|
-
if result is not None
|
|
91
|
-
patch.update(
|
|
84
|
+
if result is not None:
|
|
85
|
+
patch.update(self._drain_hook_ui_events())
|
|
86
|
+
if result.state_patch:
|
|
87
|
+
patch.update(dict(result.state_patch))
|
|
92
88
|
if self.session_memory is not None:
|
|
93
89
|
self.session_memory.maybe_trigger(state)
|
|
94
90
|
if self.trace_lifecycle_collector is not None:
|
|
@@ -118,6 +114,7 @@ class HookGraphWiring:
|
|
|
118
114
|
if result is None:
|
|
119
115
|
return {}
|
|
120
116
|
patch = {"__hook_result__": _to_hook_result_dict(result)}
|
|
117
|
+
patch.update(self._drain_hook_ui_events())
|
|
121
118
|
if result.state_patch:
|
|
122
119
|
patch.update(dict(result.state_patch))
|
|
123
120
|
return patch
|
|
@@ -125,8 +122,10 @@ class HookGraphWiring:
|
|
|
125
122
|
def loop_end_node(self, state: dict[str, Any], runtime: Any) -> dict[str, Any]:
|
|
126
123
|
result = self._execute_sync(HookEvent.LOOP_END, state)
|
|
127
124
|
patch = {"__hook_result__": _to_hook_result_dict(result)} if result is not None else {}
|
|
128
|
-
if result is not None
|
|
129
|
-
patch.update(
|
|
125
|
+
if result is not None:
|
|
126
|
+
patch.update(self._drain_hook_ui_events())
|
|
127
|
+
if result.state_patch:
|
|
128
|
+
patch.update(dict(result.state_patch))
|
|
130
129
|
if self.trace_lifecycle_collector is not None:
|
|
131
130
|
patch.update(self.trace_lifecycle_collector.loop_end_node(state))
|
|
132
131
|
return patch
|
|
@@ -137,5 +136,14 @@ class HookGraphWiring:
|
|
|
137
136
|
ctx = HookContext(event=event, state=state, session_id=state.get("_run_id"))
|
|
138
137
|
return self.hook_runner.run(self.hook_engine, ctx)
|
|
139
138
|
|
|
139
|
+
def _drain_hook_ui_events(self) -> dict[str, Any]:
|
|
140
|
+
emitter = getattr(self.hook_engine, "_event_emitter", None)
|
|
141
|
+
if emitter is None or not hasattr(emitter, "drain_ui_events"):
|
|
142
|
+
return {}
|
|
143
|
+
pending = emitter.drain_ui_events()
|
|
144
|
+
if not pending:
|
|
145
|
+
return {}
|
|
146
|
+
return {"_hook_ui_events": pending}
|
|
147
|
+
|
|
140
148
|
|
|
141
|
-
__all__ = ["HookGraphWiring"]
|
|
149
|
+
__all__ = ["HookGraphWiring", "_to_hook_result_dict", "derive_hook_outcome"]
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"""
|
|
2
|
+
hook_projection.py — Hook 结果到 LangchainAgent 事件的 SDK 侧投影(对齐 CC attachment / hook_response)。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
集中推导 outcome、attachment_type,并将 AggregatedHookResult / 单 hook 执行信息转为事件 data dict。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
graph_wiring、graph_edges、HookEventEmitter、langchain_agentx_event_adapter 共用。
|
|
9
|
+
|
|
10
|
+
当前裁剪范围:
|
|
11
|
+
仅结构化投影;不做 CLI 展示决策。
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Any
|
|
17
|
+
|
|
18
|
+
from .types import AggregatedHookResult, HookOutcome
|
|
19
|
+
|
|
20
|
+
AttachmentType = str
|
|
21
|
+
|
|
22
|
+
ATTACHMENT_HOOK_SUCCESS = "hook_success"
|
|
23
|
+
ATTACHMENT_HOOK_BLOCKING_ERROR = "hook_blocking_error"
|
|
24
|
+
ATTACHMENT_HOOK_NON_BLOCKING_ERROR = "hook_non_blocking_error"
|
|
25
|
+
ATTACHMENT_HOOK_STOPPED_CONTINUATION = "hook_stopped_continuation"
|
|
26
|
+
ATTACHMENT_HOOK_CANCELLED = "hook_cancelled"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def derive_hook_outcome(result: AggregatedHookResult) -> HookOutcome:
|
|
30
|
+
"""从聚合结果推导 outcome(与 HookEngine._emit_execution_record 语义对齐)。"""
|
|
31
|
+
if result.prevent_continuation or result.blocking_errors:
|
|
32
|
+
return "blocking"
|
|
33
|
+
if any(code != 0 for code in result.exit_codes):
|
|
34
|
+
return "non_blocking_error"
|
|
35
|
+
return "success"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def derive_attachment_type(
|
|
39
|
+
result: AggregatedHookResult,
|
|
40
|
+
outcome: HookOutcome | None = None,
|
|
41
|
+
) -> AttachmentType:
|
|
42
|
+
"""推导 CC 风格 attachment_type(CLI 仅据此选控件)。"""
|
|
43
|
+
resolved = outcome or derive_hook_outcome(result)
|
|
44
|
+
if result.prevent_continuation and not result.blocking_errors:
|
|
45
|
+
return ATTACHMENT_HOOK_STOPPED_CONTINUATION
|
|
46
|
+
if resolved == "blocking" or result.blocking_errors:
|
|
47
|
+
return ATTACHMENT_HOOK_BLOCKING_ERROR
|
|
48
|
+
if resolved == "non_blocking_error":
|
|
49
|
+
return ATTACHMENT_HOOK_NON_BLOCKING_ERROR
|
|
50
|
+
if resolved == "cancelled":
|
|
51
|
+
return ATTACHMENT_HOOK_CANCELLED
|
|
52
|
+
return ATTACHMENT_HOOK_SUCCESS
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def hook_display_name(hook_id: str, hook_event: str, config: dict[str, Any]) -> str:
|
|
56
|
+
"""对齐 CC ``hookEvent:matcher`` 展示名(config.name 优先)。"""
|
|
57
|
+
name = config.get("name")
|
|
58
|
+
if isinstance(name, str) and name.strip():
|
|
59
|
+
return name.strip()
|
|
60
|
+
return hook_id or hook_event
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def derive_attachment_type_for_hook(
|
|
64
|
+
*,
|
|
65
|
+
outcome: HookOutcome,
|
|
66
|
+
prevent_continuation: bool = False,
|
|
67
|
+
blocking_errors: list[str] | None = None,
|
|
68
|
+
exit_codes: list[int] | None = None,
|
|
69
|
+
) -> AttachmentType:
|
|
70
|
+
"""单条 hook 的 attachment_type(避免为 build_hook_info 构造假 AggregatedHookResult)。"""
|
|
71
|
+
blocking = list(blocking_errors or [])
|
|
72
|
+
if prevent_continuation and not blocking:
|
|
73
|
+
return ATTACHMENT_HOOK_STOPPED_CONTINUATION
|
|
74
|
+
if outcome == "blocking" or blocking:
|
|
75
|
+
return ATTACHMENT_HOOK_BLOCKING_ERROR
|
|
76
|
+
if outcome == "non_blocking_error" or any(
|
|
77
|
+
code != 0 for code in (exit_codes or [])
|
|
78
|
+
):
|
|
79
|
+
return ATTACHMENT_HOOK_NON_BLOCKING_ERROR
|
|
80
|
+
if outcome == "cancelled":
|
|
81
|
+
return ATTACHMENT_HOOK_CANCELLED
|
|
82
|
+
return ATTACHMENT_HOOK_SUCCESS
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def build_hook_info(
|
|
86
|
+
*,
|
|
87
|
+
hook_id: str,
|
|
88
|
+
hook_event: str,
|
|
89
|
+
config: dict[str, Any],
|
|
90
|
+
outcome: HookOutcome,
|
|
91
|
+
duration_ms: float,
|
|
92
|
+
stdout: str | None = None,
|
|
93
|
+
stderr: str | None = None,
|
|
94
|
+
exit_code: int | None = None,
|
|
95
|
+
prevent_continuation: bool = False,
|
|
96
|
+
blocking_errors: list[str] | None = None,
|
|
97
|
+
tool_call_id: str | None = None,
|
|
98
|
+
) -> dict[str, Any]:
|
|
99
|
+
"""单条 hook 执行明细(STOP 批次 summary / hook_infos[])。"""
|
|
100
|
+
return {
|
|
101
|
+
"hook_id": hook_id,
|
|
102
|
+
"hook_name": hook_display_name(hook_id, hook_event, config),
|
|
103
|
+
"hook_event": hook_event,
|
|
104
|
+
"outcome": outcome,
|
|
105
|
+
"duration_ms": duration_ms,
|
|
106
|
+
"stdout": stdout,
|
|
107
|
+
"stderr": stderr,
|
|
108
|
+
"exit_code": exit_code,
|
|
109
|
+
"prevent_continuation": prevent_continuation,
|
|
110
|
+
"blocking_errors": list(blocking_errors) if blocking_errors else None,
|
|
111
|
+
"tool_call_id": tool_call_id,
|
|
112
|
+
"attachment_type": derive_attachment_type_for_hook(
|
|
113
|
+
outcome=outcome,
|
|
114
|
+
prevent_continuation=prevent_continuation,
|
|
115
|
+
blocking_errors=blocking_errors,
|
|
116
|
+
exit_codes=[exit_code] if exit_code is not None else None,
|
|
117
|
+
),
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def hook_result_to_event_dict(
|
|
122
|
+
result: AggregatedHookResult,
|
|
123
|
+
*,
|
|
124
|
+
tool_call_id: str | None = None,
|
|
125
|
+
) -> dict[str, Any]:
|
|
126
|
+
"""将 AggregatedHookResult 转为 HOOK_FINISHED / 图节点 __hook_result__ 契约。"""
|
|
127
|
+
outcome = derive_hook_outcome(result)
|
|
128
|
+
payload: dict[str, Any] = {
|
|
129
|
+
"outcome": outcome,
|
|
130
|
+
"attachment_type": derive_attachment_type(result, outcome),
|
|
131
|
+
"prevent_continuation": result.prevent_continuation,
|
|
132
|
+
"blocking_errors": list(result.blocking_errors) or None,
|
|
133
|
+
"permission_behavior": result.permission_behavior,
|
|
134
|
+
"hook_permission_decision_reason": result.hook_permission_decision_reason,
|
|
135
|
+
"additional_contexts": list(result.additional_contexts) or None,
|
|
136
|
+
"updated_input": result.updated_input,
|
|
137
|
+
"state_patch": dict(result.state_patch) or None,
|
|
138
|
+
"stdouts": list(result.stdouts) or None,
|
|
139
|
+
"stderrs": list(result.stderrs) or None,
|
|
140
|
+
"exit_codes": list(result.exit_codes) or None,
|
|
141
|
+
"combined_stdout": result.combined_stdout or None,
|
|
142
|
+
"combined_stderr": result.combined_stderr or None,
|
|
143
|
+
"duration_ms": result.duration_ms if result.duration_ms > 0 else None,
|
|
144
|
+
"hook_infos": list(result.hook_infos) or None,
|
|
145
|
+
}
|
|
146
|
+
if tool_call_id:
|
|
147
|
+
payload["tool_call_id"] = tool_call_id
|
|
148
|
+
return payload
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
__all__ = [
|
|
152
|
+
"ATTACHMENT_HOOK_BLOCKING_ERROR",
|
|
153
|
+
"ATTACHMENT_HOOK_CANCELLED",
|
|
154
|
+
"ATTACHMENT_HOOK_NON_BLOCKING_ERROR",
|
|
155
|
+
"ATTACHMENT_HOOK_STOPPED_CONTINUATION",
|
|
156
|
+
"ATTACHMENT_HOOK_SUCCESS",
|
|
157
|
+
"AttachmentType",
|
|
158
|
+
"build_hook_info",
|
|
159
|
+
"derive_attachment_type",
|
|
160
|
+
"derive_attachment_type_for_hook",
|
|
161
|
+
"derive_hook_outcome",
|
|
162
|
+
"hook_display_name",
|
|
163
|
+
"hook_result_to_event_dict",
|
|
164
|
+
]
|
{langchain-agentx-python-0.5.1 → langchain-agentx-python-0.5.3}/langchain_agentx/loop/hook/types.py
RENAMED
|
@@ -57,6 +57,7 @@ class HookContext:
|
|
|
57
57
|
- tool_name: 工具名称
|
|
58
58
|
- tool_input: 工具输入参数
|
|
59
59
|
- tool_result: 工具执行结果
|
|
60
|
+
- tool_call_id: LangGraph / LLM 工具调用 ID(PRE/POST 工具 hook)
|
|
60
61
|
- workflow_id: Workflow ID(用于 Workflow 级事件)
|
|
61
62
|
- workflow_session_id: Workflow 唯一会话 ID(Phase 1 新增)
|
|
62
63
|
- workflow_path: Workflow 层级路径(Phase 1 新增)
|
|
@@ -81,6 +82,7 @@ class HookContext:
|
|
|
81
82
|
tool_name: str | None = None
|
|
82
83
|
tool_input: dict[str, Any] | None = None
|
|
83
84
|
tool_result: Any = None
|
|
85
|
+
tool_call_id: str | None = None
|
|
84
86
|
|
|
85
87
|
# === Workflow 级字段(Phase 1)===
|
|
86
88
|
workflow_id: str | None = None
|
|
@@ -107,6 +109,10 @@ class HookExecutionRecord:
|
|
|
107
109
|
outcome: HookOutcome
|
|
108
110
|
prevent_continuation: bool
|
|
109
111
|
duration_ms: float
|
|
112
|
+
tool_call_id: str | None = None
|
|
113
|
+
stdout: str | None = None
|
|
114
|
+
stderr: str | None = None
|
|
115
|
+
exit_code: int | None = None
|
|
110
116
|
|
|
111
117
|
|
|
112
118
|
@dataclass
|
|
@@ -145,6 +151,9 @@ class AggregatedHookResult:
|
|
|
145
151
|
# 合并后的完整输出(用于事件展示)
|
|
146
152
|
combined_stdout: str = ""
|
|
147
153
|
combined_stderr: str = ""
|
|
154
|
+
# 批次级:单 hook 明细(对齐 CC stop_hook_summary / hook_infos)
|
|
155
|
+
hook_infos: list[dict[str, Any]] = field(default_factory=list)
|
|
156
|
+
duration_ms: float = 0.0
|
|
148
157
|
|
|
149
158
|
|
|
150
159
|
__all__ = [
|