langchain-agentx-python 1.0.4__tar.gz → 1.0.5__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-1.0.4 → langchain-agentx-python-1.0.5}/PKG-INFO +1 -1
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/__init__.py +1 -1
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/__init__.py +10 -0
- langchain-agentx-python-1.0.5/langchain_agentx/loop/context/query_source.py +185 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/settings.py +3 -2
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/graph/factory.py +51 -1
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/graph_wiring.py +15 -2
- langchain-agentx-python-1.0.5/langchain_agentx/loop/hook/post_sample_hook.py +52 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/model_node.py +10 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/model_nodes.py +10 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/runtime/subagent_execution_paths.py +30 -2
- langchain-agentx-python-1.0.5/langchain_agentx/loop/stream/transcript_gate.py +151 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/__init__.py +12 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/context.py +178 -6
- langchain-agentx-python-1.0.5/langchain_agentx/loop/subagent/forked_runner.py +175 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/graph.py +12 -3
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/orchestrator.py +46 -7
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/runner.py +17 -9
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/transcript.py +13 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/cursor_store.py +127 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/extractor.py +563 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/fork_concurrency.py +94 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/gate.py +54 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/metrics.py +128 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/paths.py +1 -1
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/prompts/__init__.py +99 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/prompts/_shared.py +72 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/threshold.py +119 -0
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/tool_scope.py +74 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/collector.py +56 -5
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx_python.egg-info/PKG-INFO +1 -1
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx_python.egg-info/SOURCES.txt +12 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/pyproject.toml +1 -1
- langchain-agentx-python-1.0.4/langchain_agentx/memory/memdir/extractor.py +0 -319
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/LICENSE +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/README.md +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/builtin/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/builtin/clear.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/builtin/compact.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/builtin/memory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/context.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/dispatcher.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/registry.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/result.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/command/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/config/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/config/model_profiles.yaml +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/config/model_profiles.yaml.example +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/health/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/health/checks.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/health/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/health/preflight.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/benchmark_frozen_config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/agent_config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/loop_config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/runtime_settings.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/token_estimator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/config/tool_execution_engine_resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/blocking_guard.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/compaction_service.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/message_utils.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/pipeline.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/recovery_mode.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/base.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/collapse.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/noop.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/snip.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/context/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/exit/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/exit/exit_logic.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/exit/reason_codes.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/exit/resolution.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/exit/terminal.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/exit/withheld_error.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/graph/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/graph/graph_edges.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/graph/reactive_compact_node.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/graph/runtime_tools_node.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/engine.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/executors/agent.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/executors/command.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/executors/http.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/hook_projection.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/progress_payload.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/registry.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/trust.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/hook/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/injection/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/injection/dedup.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/loop_abort.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/retrier.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/retry_bridge.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/retry_events.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/retry_policy.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/retry_progress.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/schema_and_format.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/prompt/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/prompt/builder.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/prompt/builtin.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/prompt/compact.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/prompt/sections.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/prompt/session_context.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/runtime/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/runtime/context.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/runtime/context_factory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/stream/graph_driver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/stream/helpers.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/stream/loop_driver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/stream/result.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/stream/synthetic_events.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/async_runner.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/progress.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/loop/subagent/subagent_termination_classifier.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/instruction/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/instruction/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/instruction/resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/instruction/runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/instruction/sections.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/instruction/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/age.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/recall.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/scan.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/memdir/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/session/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/session/compact_bridge.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/session/prompts.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/memory/session/session_memory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/service.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/state.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/evaluation/store.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/events/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/events/finish_event_payload_composer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/events/finish_outcome.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/events/tool_call_id_resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/logging/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/logging/debug_burst.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/logging/logging_config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/logging/logging_contract.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/replay/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/replay/cli.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/replay/service.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/replay/store.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/replay/ui.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/event_emitter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/trace_callback.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/builtin.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/manifest.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/registries.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/plugin/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/anthropic.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/env.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/model_profile.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/openai.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/answer_assembler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/contracts.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/anthropic.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/anthropic_codec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/anthropic_finish_reason.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/anthropic_interpreter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/anthropic_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/compatible_openai.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/compatible_openai_codec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/compatible_openai_finish_reason.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/compatible_openai_interpreter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/compatible_openai_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/openai.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/openai_codec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/openai_finish_reason.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/openai_interpreter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/families/openai_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/finish_reason_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/message_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/profile.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/registry.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/request_codec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/stream_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/tool_call_interpreter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/provider/semantics/turn_accumulator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/agent_session.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/conversation_factory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/conversation_recovery.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/conversation_session.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/factory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/protocol.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/session/recovery.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/core/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/core/ids.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/core/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/output/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/output/sink.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/store/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/notifier.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/paths.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/reader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/allowlist.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/classifier/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/classifier/classifier.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/classifier/parser.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/classifier/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/classifier/schema.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/classifier/transcript.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/config_update.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/decision.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/events.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/factory.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/feedback.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/hook.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/rule_stripping.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/auto_mode/state.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/base.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/capabilities.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/errors.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/appliers/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/appliers/auto_approved.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/appliers/effort_override.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/appliers/model_override.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/appliers/set_cwd.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/appliers/stubs.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/callback_bridge.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/engine.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/message_adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/parity.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/payload_validator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/planner.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/policy.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/side_effect_collector.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/execution/side_effect_merge.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/failure_event_emitter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/loop_loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/loop_runtime_context.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/messages.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/override.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/path_safety.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/permission_context.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/permission_decision.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/pipeline.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/policy.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/policy_decorator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/process_loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/progress/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/progress/event.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/progress/sampler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/_abort.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/cli_interactive.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/handler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/headless.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/legacy_resolver_adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/messages.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/race.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/session_mode.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/prompt/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/read_ignore_patterns.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/read_permission.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/registry.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/session_hints.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/session_store.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/shell_error.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tool_runtime/tool_message_status.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/general.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/registry/config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/registry/registry.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/scope.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/agent/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/ast_security.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/auto_mode_adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/boundary_check.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/events.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/mode_validation.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/observability.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/output_tracker.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/output_utils.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/path_security.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/result_presenter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/security.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/sed_validation.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/semantics.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/shell_locator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/shell_quoting.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/task_runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/diff_generator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/quote_match.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/settings_validator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/staleness.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/edit/validator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/pagination.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/glob/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/grep/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/grep/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/grep/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/grep/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/grep/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/read/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/read/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/read/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/read/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/read/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/read/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/fork.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/policy.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/skill/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_create/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_create/hooks.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_create/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_create/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_create/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_create/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_get/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_get/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_get/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_get/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_list/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_list/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_list/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_list/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_update/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_update/hooks.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_update/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_update/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/task_update/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/summary.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/webfetch/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/events.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/loader.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/websearch/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/backend.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/limits.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/models.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/prompt.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/tool.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/tools/write/validator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/cwd.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/host_platform.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/path.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/path_hierarchy.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/path_user_input.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/rg_executable.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/subprocess_text.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/temp_paths.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/tool_paths.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/tool_result_storage.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/unc_path.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/win_reserved_paths.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/utils/windows_paths.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/base.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/batch.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/dag.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/event_adapter/types.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/node.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/patterns/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/patterns/chaining.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/patterns/routing.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/runtime.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workflow/state.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/__init__.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/boundary.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/capabilities.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/config.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/errors.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/grant.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/l3_root_grant.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/resolver.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/root_grant_manager.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/tool_boundary.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/validators.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx/workspace/view.py +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx_python.egg-info/requires.txt +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/langchain_agentx_python.egg-info/top_level.txt +0 -0
- {langchain-agentx-python-1.0.4 → langchain-agentx-python-1.0.5}/setup.cfg +0 -0
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from .blocking_guard import CompactionBlockingGuard, default_compaction_blocking_guard
|
|
6
|
+
from .query_source import (
|
|
7
|
+
LoopCompilationContext,
|
|
8
|
+
QuerySource,
|
|
9
|
+
QuerySourcePolicy,
|
|
10
|
+
default_query_source_policy,
|
|
11
|
+
)
|
|
6
12
|
from .compaction_service import LoopContextCompaction, default_loop_context_compaction
|
|
7
13
|
from .pipeline import ContextPipeline, DefaultCompactionStages
|
|
8
14
|
from .settings import (
|
|
@@ -59,8 +65,12 @@ __all__ = [
|
|
|
59
65
|
"get_compact_prompt",
|
|
60
66
|
"get_compact_user_summary_message",
|
|
61
67
|
"get_partial_compact_prompt",
|
|
68
|
+
"LoopCompilationContext",
|
|
62
69
|
"LoopContextCompaction",
|
|
63
70
|
"MicrocompactStage",
|
|
71
|
+
"QuerySource",
|
|
72
|
+
"QuerySourcePolicy",
|
|
73
|
+
"default_query_source_policy",
|
|
64
74
|
"set_active_compaction_settings",
|
|
65
75
|
"SnipCompactStage",
|
|
66
76
|
"StageResult",
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"""
|
|
2
|
+
query_source.py — Query Source 单一来源与 Loop 守卫策略
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
定义所有 query_source 官方常量,并提供 autocompact / microcompact /
|
|
6
|
+
token_blocking / persist_replacements 的统一跳过判定。
|
|
7
|
+
|
|
8
|
+
链路位置:
|
|
9
|
+
ForkedAgentRunner / Loop 编译 → QuerySourcePolicy.compile_loop_context()
|
|
10
|
+
→ ContextCompactionContext / CompactionSettings / model_node 守卫。
|
|
11
|
+
|
|
12
|
+
当前裁剪范围:
|
|
13
|
+
不实现 fork 执行与 Coordinator 触发;仅提供常量与策略判定基座。
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
from dataclasses import dataclass
|
|
19
|
+
from typing import Final, FrozenSet, Literal
|
|
20
|
+
|
|
21
|
+
CompactionGuardStage = Literal[
|
|
22
|
+
"autocompact",
|
|
23
|
+
"microcompact",
|
|
24
|
+
"token_blocking",
|
|
25
|
+
"persist_replacements",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
EmitterRoute = Literal["main", "sidechain", "drop"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class QuerySource:
|
|
32
|
+
"""官方 query_source 常量(禁止在业务代码散落字面量)。"""
|
|
33
|
+
|
|
34
|
+
MAIN_THREAD: Final[str] = "main_thread"
|
|
35
|
+
EXTRACT_MEMORIES: Final[str] = "extract_memories"
|
|
36
|
+
SESSION_MEMORY: Final[str] = "session_memory"
|
|
37
|
+
COMPACT: Final[str] = "compact"
|
|
38
|
+
AGENT_SUMMARY: Final[str] = "agent_summary"
|
|
39
|
+
AGENT_PREFIX: Final[str] = "agent:"
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def all_official(cls) -> FrozenSet[str]:
|
|
43
|
+
return frozenset(
|
|
44
|
+
{
|
|
45
|
+
cls.MAIN_THREAD,
|
|
46
|
+
cls.EXTRACT_MEMORIES,
|
|
47
|
+
cls.SESSION_MEMORY,
|
|
48
|
+
cls.COMPACT,
|
|
49
|
+
cls.AGENT_SUMMARY,
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def is_agent_subagent(cls, query_source: str | None) -> bool:
|
|
55
|
+
return isinstance(query_source, str) and query_source.startswith(cls.AGENT_PREFIX)
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def normalize(cls, query_source: str | None) -> str:
|
|
59
|
+
if isinstance(query_source, str) and query_source.strip():
|
|
60
|
+
return query_source.strip()
|
|
61
|
+
return cls.MAIN_THREAD
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# 后台 fork 任务:跳过 autocompact / microcompact
|
|
65
|
+
_BACKGROUND_COMPACTION_SKIP: Final[FrozenSet[str]] = frozenset(
|
|
66
|
+
{
|
|
67
|
+
QuerySource.EXTRACT_MEMORIES,
|
|
68
|
+
QuerySource.SESSION_MEMORY,
|
|
69
|
+
QuerySource.COMPACT,
|
|
70
|
+
QuerySource.AGENT_SUMMARY,
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# token_blocking 跳过(agent_summary 仍启用)
|
|
75
|
+
_TOKEN_BLOCKING_SKIP: Final[FrozenSet[str]] = frozenset(
|
|
76
|
+
{
|
|
77
|
+
QuerySource.EXTRACT_MEMORIES,
|
|
78
|
+
QuerySource.SESSION_MEMORY,
|
|
79
|
+
QuerySource.COMPACT,
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@dataclass(frozen=True)
|
|
85
|
+
class LoopCompilationContext:
|
|
86
|
+
"""子 Loop 编译时的 query_source 守卫快照。"""
|
|
87
|
+
|
|
88
|
+
query_source: str
|
|
89
|
+
skip_autocompact: bool
|
|
90
|
+
skip_microcompact: bool
|
|
91
|
+
skip_token_blocking: bool
|
|
92
|
+
persist_replacements: bool
|
|
93
|
+
|
|
94
|
+
@property
|
|
95
|
+
def skip_compaction_stages(self) -> bool:
|
|
96
|
+
return self.skip_autocompact or self.skip_microcompact
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class QuerySourcePolicy:
|
|
100
|
+
"""query_source 守卫策略(单一来源)。"""
|
|
101
|
+
|
|
102
|
+
@staticmethod
|
|
103
|
+
def microcompact_skip_sources() -> FrozenSet[str]:
|
|
104
|
+
return _BACKGROUND_COMPACTION_SKIP
|
|
105
|
+
|
|
106
|
+
@staticmethod
|
|
107
|
+
def autocompact_skip_sources() -> FrozenSet[str]:
|
|
108
|
+
return _BACKGROUND_COMPACTION_SKIP
|
|
109
|
+
|
|
110
|
+
@staticmethod
|
|
111
|
+
def token_blocking_skip_sources() -> FrozenSet[str]:
|
|
112
|
+
return _TOKEN_BLOCKING_SKIP
|
|
113
|
+
|
|
114
|
+
@staticmethod
|
|
115
|
+
def should_persist_replacements(query_source: str | None) -> bool:
|
|
116
|
+
normalized = QuerySource.normalize(query_source)
|
|
117
|
+
if QuerySource.is_agent_subagent(normalized):
|
|
118
|
+
return True
|
|
119
|
+
return normalized == QuerySource.MAIN_THREAD
|
|
120
|
+
|
|
121
|
+
@classmethod
|
|
122
|
+
def should_skip(cls, stage: CompactionGuardStage, query_source: str | None) -> bool:
|
|
123
|
+
normalized = QuerySource.normalize(query_source)
|
|
124
|
+
if stage == "autocompact":
|
|
125
|
+
return normalized in cls.autocompact_skip_sources()
|
|
126
|
+
if stage == "microcompact":
|
|
127
|
+
return normalized in cls.microcompact_skip_sources()
|
|
128
|
+
if stage == "token_blocking":
|
|
129
|
+
return normalized in cls.token_blocking_skip_sources()
|
|
130
|
+
if stage == "persist_replacements":
|
|
131
|
+
return not cls.should_persist_replacements(normalized)
|
|
132
|
+
raise ValueError(f"unknown compaction guard stage: {stage}")
|
|
133
|
+
|
|
134
|
+
@classmethod
|
|
135
|
+
def compile_loop_context(cls, query_source: str | None) -> LoopCompilationContext:
|
|
136
|
+
normalized = QuerySource.normalize(query_source)
|
|
137
|
+
return LoopCompilationContext(
|
|
138
|
+
query_source=normalized,
|
|
139
|
+
skip_autocompact=cls.should_skip("autocompact", normalized),
|
|
140
|
+
skip_microcompact=cls.should_skip("microcompact", normalized),
|
|
141
|
+
skip_token_blocking=cls.should_skip("token_blocking", normalized),
|
|
142
|
+
persist_replacements=cls.should_persist_replacements(normalized),
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
@classmethod
|
|
146
|
+
def default_ui_visible(cls, query_source: str | None) -> bool:
|
|
147
|
+
normalized = QuerySource.normalize(query_source)
|
|
148
|
+
if normalized == QuerySource.MAIN_THREAD:
|
|
149
|
+
return True
|
|
150
|
+
if QuerySource.is_agent_subagent(normalized):
|
|
151
|
+
return True
|
|
152
|
+
return False
|
|
153
|
+
|
|
154
|
+
@classmethod
|
|
155
|
+
def resolve_emitter_route(
|
|
156
|
+
cls,
|
|
157
|
+
*,
|
|
158
|
+
query_source: str | None,
|
|
159
|
+
skip_transcript: bool,
|
|
160
|
+
) -> EmitterRoute:
|
|
161
|
+
if skip_transcript:
|
|
162
|
+
return "drop"
|
|
163
|
+
if cls.default_ui_visible(query_source):
|
|
164
|
+
return "main"
|
|
165
|
+
return "sidechain"
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
_default_policy: QuerySourcePolicy | None = None
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def default_query_source_policy() -> QuerySourcePolicy:
|
|
172
|
+
global _default_policy
|
|
173
|
+
if _default_policy is None:
|
|
174
|
+
_default_policy = QuerySourcePolicy()
|
|
175
|
+
return _default_policy
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
__all__ = [
|
|
179
|
+
"CompactionGuardStage",
|
|
180
|
+
"EmitterRoute",
|
|
181
|
+
"LoopCompilationContext",
|
|
182
|
+
"QuerySource",
|
|
183
|
+
"QuerySourcePolicy",
|
|
184
|
+
"default_query_source_policy",
|
|
185
|
+
]
|
|
@@ -19,6 +19,7 @@ from dataclasses import dataclass, field
|
|
|
19
19
|
from typing import FrozenSet
|
|
20
20
|
|
|
21
21
|
from ..prompt.compact import AutocompactLlmPromptKind
|
|
22
|
+
from .query_source import QuerySourcePolicy
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
@dataclass(frozen=True)
|
|
@@ -52,13 +53,13 @@ class CompactionSettings:
|
|
|
52
53
|
snip_suffix: str = field(default="\n\n[... snipped by snip_compact ...]")
|
|
53
54
|
# --- microcompact(轻量规范化;递归压缩时跳过)---
|
|
54
55
|
microcompact_skip_query_sources: FrozenSet[str] = field(
|
|
55
|
-
default_factory=
|
|
56
|
+
default_factory=QuerySourcePolicy.microcompact_skip_sources
|
|
56
57
|
)
|
|
57
58
|
# --- context_collapse(重复 tool 结果治理)---
|
|
58
59
|
collapse_dedupe_consecutive_same_tool_call_id: bool = True
|
|
59
60
|
# --- autocompact(阈值触发;产品与 CC 对齐默认走 LLM 摘要,无 model 时回退 prune)---
|
|
60
61
|
autocompact_skip_query_sources: FrozenSet[str] = field(
|
|
61
|
-
default_factory=
|
|
62
|
+
default_factory=QuerySourcePolicy.autocompact_skip_sources
|
|
62
63
|
)
|
|
63
64
|
autocompact_use_llm_when_available: bool = True
|
|
64
65
|
autocompact_llm_excerpt_chars_per_message: int = 20_000
|
|
@@ -95,6 +95,8 @@ from ...memory.memdir.agent_memory import (
|
|
|
95
95
|
)
|
|
96
96
|
from ...memory.memdir.runtime import MemoryPromptBootstrap
|
|
97
97
|
from ...memory.memdir.extractor import MemoryExtractionCoordinator
|
|
98
|
+
from ...memory.memdir.paths import is_memory_enabled
|
|
99
|
+
from ..hook.post_sample_hook import PostSampleHook
|
|
98
100
|
# Session memory imports use lazy imports to avoid circular dependency
|
|
99
101
|
# SessionMemoryCompactBridge uses lazy import to avoid circular dependency with memory.session.session_memory
|
|
100
102
|
from ..prompt import SystemPromptSection, build_effective_system_prompt
|
|
@@ -547,16 +549,22 @@ class LoopGraphBuilder:
|
|
|
547
549
|
trust_checker=trust_checker,
|
|
548
550
|
)
|
|
549
551
|
container_type = self._config.container_type or "agent_session"
|
|
552
|
+
memory_extractor = self._build_memory_extraction_coordinator(
|
|
553
|
+
model=model,
|
|
554
|
+
session_store=session_store,
|
|
555
|
+
session_id=session_id or "",
|
|
556
|
+
)
|
|
550
557
|
self._hook_graph_wiring = HookGraphWiring(
|
|
551
558
|
hook_engine,
|
|
552
559
|
trace_lifecycle_collector=trace_lifecycle_collector,
|
|
553
560
|
session_memory=self._session_memory_manager,
|
|
554
|
-
memory_extractor=
|
|
561
|
+
memory_extractor=memory_extractor,
|
|
555
562
|
agent_memory_extractor=get_default_agent_memory_extraction_coordinator(),
|
|
556
563
|
workspace_cfg=self._workspace_cfg,
|
|
557
564
|
session_id=session_id or "",
|
|
558
565
|
container_type=container_type,
|
|
559
566
|
subagent_type=self._config.subagent.subagent_type,
|
|
567
|
+
post_sample_hook=PostSampleHook(memory_extractor=memory_extractor),
|
|
560
568
|
)
|
|
561
569
|
if self._config.trace.enabled:
|
|
562
570
|
self._trace_callback_handler = TraceCallbackHandler(
|
|
@@ -650,6 +658,48 @@ class LoopGraphBuilder:
|
|
|
650
658
|
if self._skill_runtime_tool is None and rt.__class__.__name__ == "SkillRuntimeTool":
|
|
651
659
|
self._skill_runtime_tool = rt
|
|
652
660
|
|
|
661
|
+
def _build_memory_extraction_coordinator(
|
|
662
|
+
self,
|
|
663
|
+
*,
|
|
664
|
+
model: Any,
|
|
665
|
+
session_store: Any,
|
|
666
|
+
session_id: str,
|
|
667
|
+
) -> MemoryExtractionCoordinator:
|
|
668
|
+
from ..subagent.context import ForkedParentRuntime
|
|
669
|
+
from ..subagent.forked_runner import ForkedAgentRunner
|
|
670
|
+
|
|
671
|
+
if (
|
|
672
|
+
self._is_subagent
|
|
673
|
+
or not is_memory_enabled(self._workspace_cfg)
|
|
674
|
+
or self._services.loader is None
|
|
675
|
+
or self._loop_loader is None
|
|
676
|
+
):
|
|
677
|
+
return MemoryExtractionCoordinator()
|
|
678
|
+
runtime_cwd = str(self._config.workspace.runtime_cwd or self._workspace_root)
|
|
679
|
+
parent_runtime = ForkedParentRuntime(
|
|
680
|
+
session_store=session_store,
|
|
681
|
+
tool_registry=self._loop_loader.registry,
|
|
682
|
+
tool_loader=self._services.loader,
|
|
683
|
+
model=model,
|
|
684
|
+
workspace_root=str(self._workspace_root),
|
|
685
|
+
agent_home_segment=self._workspace_cfg.agent_home_segment,
|
|
686
|
+
parent_run_id=session_id or None,
|
|
687
|
+
parent_conversation_session_id=session_id or None,
|
|
688
|
+
system_prompt=self._base_prompt,
|
|
689
|
+
capabilities=self._services.capabilities,
|
|
690
|
+
cwd=runtime_cwd,
|
|
691
|
+
)
|
|
692
|
+
from ...memory.memdir.metrics import default_memory_fork_metrics
|
|
693
|
+
|
|
694
|
+
metrics = default_memory_fork_metrics()
|
|
695
|
+
return MemoryExtractionCoordinator(
|
|
696
|
+
forked_runner=ForkedAgentRunner(
|
|
697
|
+
parent_runtime=parent_runtime,
|
|
698
|
+
metrics=metrics,
|
|
699
|
+
),
|
|
700
|
+
metrics=metrics,
|
|
701
|
+
)
|
|
702
|
+
|
|
653
703
|
def _resolve_workspace_config(self) -> None:
|
|
654
704
|
raw_workspace_root = self._config.workspace.workspace_root
|
|
655
705
|
if raw_workspace_root is None:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
graph_wiring.py — Hook 与 Loop
|
|
2
|
+
graph_wiring.py — Hook 与 Loop 图装配协作者。
|
|
3
3
|
|
|
4
4
|
职责:
|
|
5
5
|
封装 Hook 节点工厂与最小接线路径,避免 factory.py 继续膨胀。
|
|
@@ -8,7 +8,7 @@ graph_wiring.py — Hook 与 Loop 图装配协作者(Phase 2)。
|
|
|
8
8
|
由 loop/graph/factory.py 在构图阶段调用,产出 loop_start / stop_hooks 节点。
|
|
9
9
|
|
|
10
10
|
当前裁剪范围:
|
|
11
|
-
Phase
|
|
11
|
+
Phase 4:after_model 注入 PostSampleHook;stop_hooks 兜底触发 + drain。
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
14
|
from __future__ import annotations
|
|
@@ -20,6 +20,7 @@ from uuid import uuid4
|
|
|
20
20
|
from .async_hook_runner import AsyncHookRunner
|
|
21
21
|
from .engine import HookEngine
|
|
22
22
|
from .hook_projection import derive_hook_outcome, hook_result_to_event_dict
|
|
23
|
+
from .post_sample_hook import PostSampleHook
|
|
23
24
|
from .types import AggregatedHookResult, HookContext, HookEvent
|
|
24
25
|
|
|
25
26
|
|
|
@@ -46,6 +47,7 @@ class HookGraphWiring:
|
|
|
46
47
|
container_type: str = "interactive"
|
|
47
48
|
subagent_type: str | None = None
|
|
48
49
|
hook_runner: AsyncHookRunner = field(default_factory=AsyncHookRunner)
|
|
50
|
+
post_sample_hook: PostSampleHook | None = None
|
|
49
51
|
|
|
50
52
|
def loop_start_node(self, state: dict[str, Any], runtime: Any) -> dict[str, Any]:
|
|
51
53
|
run_id = state.get("_run_id")
|
|
@@ -87,6 +89,13 @@ class HookGraphWiring:
|
|
|
87
89
|
patch.update(dict(result.state_patch))
|
|
88
90
|
if self.session_memory is not None:
|
|
89
91
|
self.session_memory.maybe_trigger(state)
|
|
92
|
+
if self.post_sample_hook is not None:
|
|
93
|
+
self.post_sample_hook.fire_and_forget(
|
|
94
|
+
state=state,
|
|
95
|
+
workspace_cfg=self.workspace_cfg,
|
|
96
|
+
session_id=self.session_id or str(state.get("_session_id") or ""),
|
|
97
|
+
container_type=self.container_type,
|
|
98
|
+
)
|
|
90
99
|
if self.trace_lifecycle_collector is not None:
|
|
91
100
|
patch.update(self.trace_lifecycle_collector.after_model_node(state))
|
|
92
101
|
return patch
|
|
@@ -106,7 +115,11 @@ class HookGraphWiring:
|
|
|
106
115
|
workspace_cfg=self.workspace_cfg,
|
|
107
116
|
session_id=self.session_id or str(state.get("_session_id") or ""),
|
|
108
117
|
container_type=self.container_type,
|
|
118
|
+
force=True,
|
|
109
119
|
)
|
|
120
|
+
drain = getattr(self.memory_extractor, "drain_on_stop", None)
|
|
121
|
+
if callable(drain):
|
|
122
|
+
drain()
|
|
110
123
|
if self.agent_memory_extractor is not None and self.workspace_cfg is not None:
|
|
111
124
|
self.agent_memory_extractor.trigger_from_state(
|
|
112
125
|
state=state,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""
|
|
2
|
+
post_sample_hook.py — after_model 非阻塞 post-sampling 挂钩。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
对齐 CC executePostSamplingHooks:fire-and-forget 委托 Coordinator.trigger_after_sample()。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
HookGraphWiring.after_model_node() → PostSampleHook.fire_and_forget()。
|
|
9
|
+
|
|
10
|
+
当前裁剪范围:
|
|
11
|
+
仅接入 memdir 记忆抽取;session_memory 仍由 SessionMemoryManager.maybe_trigger 处理。
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import logging
|
|
17
|
+
from typing import Any
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class PostSampleHook:
|
|
23
|
+
"""after_model 后台任务触发器(非阻塞)。"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, memory_extractor: Any | None = None) -> None:
|
|
26
|
+
self._memory_extractor = memory_extractor
|
|
27
|
+
|
|
28
|
+
def fire_and_forget(
|
|
29
|
+
self,
|
|
30
|
+
*,
|
|
31
|
+
state: dict[str, Any],
|
|
32
|
+
workspace_cfg: Any,
|
|
33
|
+
session_id: str,
|
|
34
|
+
container_type: str,
|
|
35
|
+
) -> None:
|
|
36
|
+
if self._memory_extractor is None or workspace_cfg is None:
|
|
37
|
+
return
|
|
38
|
+
trigger = getattr(self._memory_extractor, "trigger_after_sample", None)
|
|
39
|
+
if not callable(trigger):
|
|
40
|
+
return
|
|
41
|
+
try:
|
|
42
|
+
trigger(
|
|
43
|
+
state=state,
|
|
44
|
+
workspace_cfg=workspace_cfg,
|
|
45
|
+
session_id=session_id,
|
|
46
|
+
container_type=container_type,
|
|
47
|
+
)
|
|
48
|
+
except Exception as exc:
|
|
49
|
+
logger.warning("post_sample memory hook failed: %s", exc)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
__all__ = ["PostSampleHook"]
|
|
@@ -167,15 +167,19 @@ def _model_response_if_context_token_blocked(
|
|
|
167
167
|
initial_response_format: ResponseFormat[Any] | None,
|
|
168
168
|
structured_output_tools: Dict[str, Any],
|
|
169
169
|
compaction_settings: CompactionSettings | None,
|
|
170
|
+
query_source: str | None = None,
|
|
170
171
|
) -> Any | None:
|
|
171
172
|
"""若主上下文启发式已超过 CompactionSettings 顶线,返回合成 ModelResponse,否则 None。"""
|
|
172
173
|
from langchain_agentx.loop.context.blocking_guard import CompactionBlockingGuard
|
|
174
|
+
from langchain_agentx.loop.context.query_source import QuerySourcePolicy
|
|
173
175
|
from langchain_agentx.loop.context.types import ContextCompactionContext
|
|
174
176
|
from langchain.agents.middleware.types import ModelResponse as _ModelResponse
|
|
175
177
|
|
|
176
178
|
s = compaction_settings or get_active_compaction_settings()
|
|
177
179
|
if not s.enable_main_model_context_token_block:
|
|
178
180
|
return None
|
|
181
|
+
if QuerySourcePolicy.should_skip("token_blocking", query_source):
|
|
182
|
+
return None
|
|
179
183
|
guard = CompactionBlockingGuard(settings=s)
|
|
180
184
|
est = guard.estimate_messages_tokens(state_messages)
|
|
181
185
|
if not guard.should_block(ContextCompactionContext(), estimated_tokens=est):
|
|
@@ -318,6 +322,9 @@ class ModelNode(Runnable):
|
|
|
318
322
|
initial_response_format=self._initial_response_format,
|
|
319
323
|
structured_output_tools=self._structured_output_tools,
|
|
320
324
|
compaction_settings=self._compaction_settings,
|
|
325
|
+
query_source=state.get("query_source")
|
|
326
|
+
if isinstance(state.get("query_source"), str)
|
|
327
|
+
else None,
|
|
321
328
|
)
|
|
322
329
|
if synth is not None:
|
|
323
330
|
model_response = synth
|
|
@@ -341,6 +348,9 @@ class ModelNode(Runnable):
|
|
|
341
348
|
initial_response_format=self._initial_response_format,
|
|
342
349
|
structured_output_tools=self._structured_output_tools,
|
|
343
350
|
compaction_settings=self._compaction_settings,
|
|
351
|
+
query_source=state.get("query_source")
|
|
352
|
+
if isinstance(state.get("query_source"), str)
|
|
353
|
+
else None,
|
|
344
354
|
)
|
|
345
355
|
if synth is not None:
|
|
346
356
|
model_response = synth
|
|
@@ -108,15 +108,19 @@ def _model_response_if_context_token_blocked(
|
|
|
108
108
|
initial_response_format: ResponseFormat[Any] | None,
|
|
109
109
|
structured_output_tools: Dict[str, Any],
|
|
110
110
|
compaction_settings: CompactionSettings | None,
|
|
111
|
+
query_source: str | None = None,
|
|
111
112
|
) -> Any | None:
|
|
112
113
|
"""若主上下文启发式已超过 `CompactionSettings` 顶线,返回合成 `ModelResponse`,否则 None。"""
|
|
113
114
|
from langchain_agentx.loop.context.blocking_guard import CompactionBlockingGuard
|
|
115
|
+
from langchain_agentx.loop.context.query_source import QuerySourcePolicy
|
|
114
116
|
from langchain_agentx.loop.context.types import ContextCompactionContext
|
|
115
117
|
from langchain.agents.middleware.types import ModelResponse as _ModelResponse
|
|
116
118
|
|
|
117
119
|
s = compaction_settings or get_active_compaction_settings()
|
|
118
120
|
if not s.enable_main_model_context_token_block:
|
|
119
121
|
return None
|
|
122
|
+
if QuerySourcePolicy.should_skip("token_blocking", query_source):
|
|
123
|
+
return None
|
|
120
124
|
guard = CompactionBlockingGuard(settings=s)
|
|
121
125
|
est = guard.estimate_messages_tokens(state_messages)
|
|
122
126
|
if not guard.should_block(ContextCompactionContext(), estimated_tokens=est):
|
|
@@ -371,6 +375,9 @@ class _ModelNodeBuilder:
|
|
|
371
375
|
initial_response_format=self._initial_response_format,
|
|
372
376
|
structured_output_tools=self._structured_output_tools,
|
|
373
377
|
compaction_settings=self._compaction_settings,
|
|
378
|
+
query_source=state.get("query_source")
|
|
379
|
+
if isinstance(state.get("query_source"), str)
|
|
380
|
+
else None,
|
|
374
381
|
)
|
|
375
382
|
if synth is not None:
|
|
376
383
|
return synth, []
|
|
@@ -420,6 +427,9 @@ class _ModelNodeBuilder:
|
|
|
420
427
|
initial_response_format=self._initial_response_format,
|
|
421
428
|
structured_output_tools=self._structured_output_tools,
|
|
422
429
|
compaction_settings=self._compaction_settings,
|
|
430
|
+
query_source=state.get("query_source")
|
|
431
|
+
if isinstance(state.get("query_source"), str)
|
|
432
|
+
else None,
|
|
423
433
|
)
|
|
424
434
|
if synth is not None:
|
|
425
435
|
return synth, []
|
|
@@ -24,6 +24,30 @@ from langchain_agentx.loop.runtime.context import SubagentContextOverrides
|
|
|
24
24
|
from langchain_agentx.workspace import resolve_agent_state_config
|
|
25
25
|
|
|
26
26
|
|
|
27
|
+
def resolve_subagent_workspace_root(parent_ctx: Any, *, context: str = "subagent") -> str:
|
|
28
|
+
"""解析父上下文 workspace_root;禁止回退进程 cwd。"""
|
|
29
|
+
workspace_root = str(getattr(parent_ctx, "workspace_root", None) or "").strip()
|
|
30
|
+
if not workspace_root:
|
|
31
|
+
raise ValueError(
|
|
32
|
+
f"parent workspace_root is required for {context} path resolution; "
|
|
33
|
+
"supply AgentWorkspaceConfig.workspace_root, not os.getcwd()"
|
|
34
|
+
)
|
|
35
|
+
return workspace_root
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def resolve_subagent_effective_cwd(
|
|
39
|
+
*,
|
|
40
|
+
override_cwd: str | None,
|
|
41
|
+
parent_cwd: str | None,
|
|
42
|
+
workspace_root: str,
|
|
43
|
+
) -> str:
|
|
44
|
+
"""解析子代理 effective_cwd;最终回退 workspace_root,不回退进程 cwd。"""
|
|
45
|
+
for candidate in (override_cwd, parent_cwd):
|
|
46
|
+
if isinstance(candidate, str) and candidate.strip():
|
|
47
|
+
return candidate.strip()
|
|
48
|
+
return workspace_root
|
|
49
|
+
|
|
50
|
+
|
|
27
51
|
@dataclass(frozen=True)
|
|
28
52
|
class PreparedSubagentPaths:
|
|
29
53
|
"""``SubagentExecutionPaths.prepare`` 的输出:最终 cwd 与可选 worktree 目录。"""
|
|
@@ -46,7 +70,7 @@ class SubagentExecutionPaths:
|
|
|
46
70
|
顺序对齐 CC:**显式 ``overrides.cwd`` 优先于 worktree 目录**(``cwd ?? worktreePath``)。
|
|
47
71
|
"""
|
|
48
72
|
parent_cwd = getattr(parent_ctx, "cwd", None)
|
|
49
|
-
parent_workspace_root =
|
|
73
|
+
parent_workspace_root = resolve_subagent_workspace_root(parent_ctx)
|
|
50
74
|
# P0-1 修复:从 agent_home 改为 agent_home_segment(对齐 ToolExecutionContext / SubagentContext 正式字段名)
|
|
51
75
|
parent_agent_home = getattr(parent_ctx, "agent_home_segment", ".langchain_agentx")
|
|
52
76
|
raw = overrides.cwd
|
|
@@ -65,5 +89,9 @@ class SubagentExecutionPaths:
|
|
|
65
89
|
effective = override_cwd or worktree_dir
|
|
66
90
|
return PreparedSubagentPaths(effective_cwd=effective, worktree_dir=worktree_dir)
|
|
67
91
|
|
|
68
|
-
base =
|
|
92
|
+
base = resolve_subagent_effective_cwd(
|
|
93
|
+
override_cwd=override_cwd,
|
|
94
|
+
parent_cwd=parent_cwd if isinstance(parent_cwd, str) else None,
|
|
95
|
+
workspace_root=parent_workspace_root,
|
|
96
|
+
)
|
|
69
97
|
return PreparedSubagentPaths(effective_cwd=base, worktree_dir=None)
|