langchain-agentx-python 1.1.0__tar.gz → 1.1.2__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.1.0/langchain_agentx_python.egg-info → langchain-agentx-python-1.1.2}/PKG-INFO +1 -1
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/__init__.py +1 -1
- langchain-agentx-python-1.1.2/langchain_agentx/command/allowed_tools.py +106 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/builtin/__init__.py +5 -1
- langchain-agentx-python-1.1.2/langchain_agentx/command/builtin/commit.py +96 -0
- langchain-agentx-python-1.1.2/langchain_agentx/command/builtin/commit_push_pr.py +106 -0
- langchain-agentx-python-1.1.2/langchain_agentx/command/builtin/git_prompt_common.py +48 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/dispatcher.py +52 -5
- langchain-agentx-python-1.1.2/langchain_agentx/command/fork_executor.py +107 -0
- langchain-agentx-python-1.1.2/langchain_agentx/command/git_settings.py +7 -0
- langchain-agentx-python-1.1.2/langchain_agentx/command/prompt_shell.py +123 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/registry.py +1 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/result.py +2 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/types.py +3 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/loop_config.py +1 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/graph/factory.py +148 -56
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/graph_wiring.py +31 -9
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/__init__.py +2 -8
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/builtin.py +4 -31
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/session_context.py +21 -10
- langchain-agentx-python-1.1.2/langchain_agentx/loop/prompt/session_guidance.py +55 -0
- langchain-agentx-python-1.1.2/langchain_agentx/loop/prompt/static_system_prompt.py +109 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/extractor.py +14 -1
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/trace_callback.py +8 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/agent_session.py +43 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/conversation_session.py +70 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/permission_context.py +50 -0
- langchain-agentx-python-1.1.2/langchain_agentx/tools/bash/command_allow_rules.py +92 -0
- langchain-agentx-python-1.1.2/langchain_agentx/tools/bash/prompt.py +211 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/tool.py +34 -2
- langchain-agentx-python-1.1.2/langchain_agentx/utils/agent_settings.py +42 -0
- langchain-agentx-python-1.1.2/langchain_agentx/utils/git_settings.py +68 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2/langchain_agentx_python.egg-info}/PKG-INFO +1 -1
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx_python.egg-info/SOURCES.txt +12 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/pyproject.toml +1 -1
- langchain-agentx-python-1.1.0/langchain_agentx/tools/bash/prompt.py +0 -83
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/LICENSE +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/README.md +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/builtin/clear.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/builtin/compact.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/builtin/memory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/command/context.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/config/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/config/model_profiles.yaml +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/config/model_profiles.yaml.example +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/health/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/health/checks.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/health/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/health/preflight.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/benchmark_frozen_config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/agent_config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/runtime_settings.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/token_estimator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/config/tool_execution_engine_resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/blocking_guard.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/compaction_service.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/message_utils.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/pipeline.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/query_source.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/recovery_mode.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/settings.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/base.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/collapse.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/noop.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/snip.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/context/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/exit_logic.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/query_source.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/reason_codes.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/resolution.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/terminal.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/exit/withheld_error.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/graph/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/graph/graph_edges.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/graph/reactive_compact_node.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/graph/runtime_tools_node.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/engine.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/executors/agent.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/executors/command.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/executors/http.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/hook_projection.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/progress_payload.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/registry.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/trust.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/hook/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/injection/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/injection/dedup.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/loop_abort.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/model_node.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/model_nodes.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/retrier.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/retry_bridge.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/retry_events.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/retry_policy.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/retry_progress.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/schema_and_format.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/builder.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/compact.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/sections.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/tool_aware_sections.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/prompt/using_your_tools.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/runtime/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/runtime/context.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/runtime/context_factory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/stream/graph_driver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/stream/helpers.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/stream/loop_driver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/stream/result.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/stream/synthetic_events.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/stream/transcript_gate.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/async_runner.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/context.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/fork_boilerplate.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/fork_ports.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/forked_runner.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/graph.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/orchestrator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/progress.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/runner.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/subagent_termination_classifier.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/loop/subagent/transcript.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/exclusion.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/external_includes.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/sections.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/instruction/worktree_skip.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/_deprecated/agent_memory/agent_memory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/age.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/attachments.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/cursor_store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/entrypoint_context.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/fork_concurrency.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/gate.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/memory_saved.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/metrics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/prefetch.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/prompts/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/prompts/_shared.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/prompts/select_memories.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/recall.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/recall_service.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/scan.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/side_query.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/tool_scope.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/memdir/written_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/migrate_layout.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/session/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/session/compact_bridge.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/session/extractor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/session/prompts.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/session/session_memory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/memory/session/tool_scope.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/service.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/state.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/evaluation/store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/events/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/events/finish_event_payload_composer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/events/finish_outcome.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/events/tool_call_id_resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/logging/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/logging/debug_burst.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/logging/logging_config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/logging/logging_contract.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/replay/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/replay/cli.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/replay/service.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/replay/store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/replay/ui.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/collector.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/event_emitter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/builtin.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/manifest.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/registries.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/plugin/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/anthropic.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/env.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/model_profile.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/openai.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/answer_assembler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/contracts.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/anthropic.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/anthropic_codec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/anthropic_finish_reason.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/anthropic_interpreter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/anthropic_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/compatible_openai.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/compatible_openai_codec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/compatible_openai_finish_reason.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/compatible_openai_interpreter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/compatible_openai_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/openai.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/openai_codec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/openai_finish_reason.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/openai_interpreter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/families/openai_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/finish_reason_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/message_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/profile.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/registry.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/request_codec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/stream_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/tool_call_interpreter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/provider/semantics/turn_accumulator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/conversation_factory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/conversation_recovery.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/factory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/protocol.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/session/recovery.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/core/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/core/ids.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/core/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/output/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/output/sink.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/store/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/notifier.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/reader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/allowlist.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/classifier/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/classifier/classifier.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/classifier/parser.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/classifier/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/classifier/schema.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/classifier/transcript.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/config_update.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/decision.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/events.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/factory.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/feedback.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/hook.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/rule_stripping.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/auto_mode/state.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/base.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/capabilities.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/errors.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/appliers/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/appliers/auto_approved.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/appliers/effort_override.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/appliers/model_override.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/appliers/set_cwd.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/appliers/stubs.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/callback_bridge.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/engine.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/message_adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/parity.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/payload_validator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/planner.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/policy.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/side_effect_collector.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/execution/side_effect_merge.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/failure_event_emitter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/loop_loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/loop_runtime_context.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/messages.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/override.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/path_safety.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/permission_decision.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/permission_snapshot.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/pipeline.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/policy.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/policy_decorator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/process_loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/progress/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/progress/event.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/progress/sampler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/_abort.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/cli_interactive.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/handler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/headless.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/legacy_resolver_adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/messages.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/race.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/session_mode.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/prompt_context.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/read_ignore_patterns.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/read_permission.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/registry.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/session_hints.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/session_store.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/shell_error.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/tool_message_status.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tool_runtime/tool_schema_cache.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/general.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/memory_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/memory_prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/memory_snapshot.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/prompt_scope.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/registry/config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/registry/registry.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/scope.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/agent/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/ast_security.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/auto_mode_adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/boundary_check.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/events.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/mode_validation.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/observability.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/output_tracker.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/output_utils.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/path_security.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/result_presenter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/security.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/sed_validation.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/semantics.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/shell_locator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/shell_quoting.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/task_runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/diff_generator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/quote_match.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/settings_validator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/staleness.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/edit/validator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/pagination.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/glob/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/grep/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/grep/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/grep/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/grep/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/grep/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/read/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/read/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/read/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/read/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/read/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/read/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/fork.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/policy.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/skill/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_create/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_create/hooks.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_create/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_create/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_create/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_create/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_get/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_get/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_get/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_get/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_list/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_list/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_list/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_list/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_update/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_update/hooks.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_update/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_update/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/task_update/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/summary.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/webfetch/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/events.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/loader.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/websearch/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/backend.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/limits.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/models.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/prompt.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/tool.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/tools/write/validator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/cwd.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/git_roots.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/host_platform.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/path.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/path_hierarchy.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/path_user_input.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/rg_executable.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/subprocess_text.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/temp_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/tool_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/tool_result_storage.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/unc_path.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/win_reserved_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/utils/windows_paths.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/base.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/batch.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/dag.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/event_adapter/types.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/memory_drain_registry.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/memory_session_policy.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/node.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/patterns/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/patterns/chaining.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/patterns/routing.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/runtime.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workflow/state.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/__init__.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/boundary.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/capabilities.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/config.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/errors.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/grant.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/l3_root_grant.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/project_key.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/project_memory_layout.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/resolver.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/root_grant_manager.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/tool_boundary.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/validators.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx/workspace/view.py +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx_python.egg-info/requires.txt +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/langchain_agentx_python.egg-info/top_level.txt +0 -0
- {langchain-agentx-python-1.1.0 → langchain-agentx-python-1.1.2}/setup.cfg +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""
|
|
2
|
+
command/allowed_tools.py — CC 风格 allowed_tools 解析与应用。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
解析 Bash(git add:*) / read_file 等条目,写入 session 权限上下文。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
Session run_slash_command → apply_command_tool_scope。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import re
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
from ..tool_runtime.permission_context import (
|
|
18
|
+
clear_command_tool_scope,
|
|
19
|
+
merge_auto_approved_union,
|
|
20
|
+
set_command_bash_allow_rules,
|
|
21
|
+
)
|
|
22
|
+
from ..tool_runtime.session_store import AgentSessionStore
|
|
23
|
+
|
|
24
|
+
_ALLOWED_TOOL_RE = re.compile(r"^([A-Za-z][A-Za-z0-9_-]*)(?:\((.*)\))?$")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@dataclass(frozen=True)
|
|
28
|
+
class ParsedAllowedToolRule:
|
|
29
|
+
raw: str
|
|
30
|
+
tool_name: str
|
|
31
|
+
rule_content: str | None = None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def parse_allowed_tool_rule(entry: str) -> ParsedAllowedToolRule | None:
|
|
35
|
+
text = entry.strip()
|
|
36
|
+
if not text:
|
|
37
|
+
return None
|
|
38
|
+
match = _ALLOWED_TOOL_RE.fullmatch(text)
|
|
39
|
+
if match is None:
|
|
40
|
+
return None
|
|
41
|
+
tool_name = match.group(1).lower()
|
|
42
|
+
raw_content = match.group(2)
|
|
43
|
+
rule_content = None if raw_content is None else raw_content.strip()
|
|
44
|
+
if rule_content == "" or rule_content == "*":
|
|
45
|
+
rule_content = None
|
|
46
|
+
return ParsedAllowedToolRule(raw=text, tool_name=tool_name, rule_content=rule_content)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def partition_allowed_tools(
|
|
50
|
+
entries: list[str] | tuple[str, ...] | None,
|
|
51
|
+
) -> tuple[list[str], list[str]]:
|
|
52
|
+
"""返回 (tool_names_for_auto_approve, bash_rule_patterns)。"""
|
|
53
|
+
tool_names: list[str] = []
|
|
54
|
+
bash_patterns: list[str] = []
|
|
55
|
+
seen_tools: set[str] = set()
|
|
56
|
+
seen_patterns: set[str] = set()
|
|
57
|
+
|
|
58
|
+
for entry in entries or []:
|
|
59
|
+
parsed = parse_allowed_tool_rule(entry)
|
|
60
|
+
if parsed is None:
|
|
61
|
+
continue
|
|
62
|
+
if parsed.tool_name == "bash":
|
|
63
|
+
if parsed.rule_content is not None:
|
|
64
|
+
key = parsed.rule_content.lower()
|
|
65
|
+
if key not in seen_patterns:
|
|
66
|
+
seen_patterns.add(key)
|
|
67
|
+
bash_patterns.append(parsed.rule_content)
|
|
68
|
+
elif "bash" not in seen_tools:
|
|
69
|
+
seen_tools.add("bash")
|
|
70
|
+
tool_names.append("bash")
|
|
71
|
+
else:
|
|
72
|
+
if parsed.tool_name not in seen_tools:
|
|
73
|
+
seen_tools.add(parsed.tool_name)
|
|
74
|
+
tool_names.append(parsed.tool_name)
|
|
75
|
+
|
|
76
|
+
return tool_names, bash_patterns
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def apply_command_tool_scope(
|
|
80
|
+
session_store: AgentSessionStore | None,
|
|
81
|
+
allowed_tools: list[str] | tuple[str, ...] | None,
|
|
82
|
+
) -> None:
|
|
83
|
+
if session_store is None or not allowed_tools:
|
|
84
|
+
return
|
|
85
|
+
tool_names, bash_patterns = partition_allowed_tools(list(allowed_tools))
|
|
86
|
+
if tool_names:
|
|
87
|
+
merge_auto_approved_union(session_store, tool_names)
|
|
88
|
+
if bash_patterns:
|
|
89
|
+
set_command_bash_allow_rules(session_store, bash_patterns)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def reset_command_tool_scope(session_store: AgentSessionStore | None) -> None:
|
|
93
|
+
clear_command_tool_scope(session_store)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def session_store_from_graph(graph: Any) -> AgentSessionStore | None:
|
|
97
|
+
config = getattr(graph, "config", None)
|
|
98
|
+
if not isinstance(config, dict):
|
|
99
|
+
return None
|
|
100
|
+
configurable = config.get("configurable")
|
|
101
|
+
if not isinstance(configurable, dict):
|
|
102
|
+
return None
|
|
103
|
+
store = configurable.get("session_store")
|
|
104
|
+
if store is None:
|
|
105
|
+
return None
|
|
106
|
+
return store
|
|
@@ -8,16 +8,20 @@ command/builtin/__init__.py — 内置命令工厂导出。
|
|
|
8
8
|
被 session/agent_session.py 与 session/conversation_session.py 依赖。
|
|
9
9
|
|
|
10
10
|
当前裁剪范围:
|
|
11
|
-
仅导出 P1
|
|
11
|
+
仅导出 P1 阶段内置命令(含 CC 对齐 /commit)。
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
14
|
from .clear import make_clear_command
|
|
15
|
+
from .commit import make_commit_command
|
|
16
|
+
from .commit_push_pr import make_commit_push_pr_command
|
|
15
17
|
from .compact import make_compact_command
|
|
16
18
|
from .memory import make_memory_command
|
|
17
19
|
from .reload_plugins import make_reload_plugins_command
|
|
18
20
|
|
|
19
21
|
__all__ = [
|
|
20
22
|
"make_clear_command",
|
|
23
|
+
"make_commit_command",
|
|
24
|
+
"make_commit_push_pr_command",
|
|
21
25
|
"make_compact_command",
|
|
22
26
|
"make_memory_command",
|
|
23
27
|
"make_reload_plugins_command",
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""
|
|
2
|
+
command/builtin/commit.py — 内置 /commit 命令。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
对齐 CC commands/commit.ts:预执行 git 上下文 + Git Safety Protocol + 专用任务流程。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
由 CommandRegistry 注册;用户输入 /commit 时由 dispatcher 注入 prompt。
|
|
9
|
+
|
|
10
|
+
当前裁剪范围:
|
|
11
|
+
allowed_tools 为 CC 风格 Bash(git *:*) pattern;由 Session.run_slash_command 写入 command scope。
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from ..context import CommandContext
|
|
17
|
+
from ..git_settings import should_include_git_instructions
|
|
18
|
+
from ..prompt_shell import execute_shell_commands_in_prompt
|
|
19
|
+
from ..result import CommandResult
|
|
20
|
+
from ..types import CommandDefinition
|
|
21
|
+
from .git_prompt_common import (
|
|
22
|
+
COMMIT_ALLOWED_TOOLS,
|
|
23
|
+
GIT_SAFETY_PROTOCOL_SECTION,
|
|
24
|
+
commit_attribution_suffix,
|
|
25
|
+
)
|
|
26
|
+
from ..allowed_tools import partition_allowed_tools
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _commit_prompt_template() -> str:
|
|
30
|
+
attribution = commit_attribution_suffix()
|
|
31
|
+
attribution_block = f"\n\n{attribution}" if attribution else ""
|
|
32
|
+
return f"""## Context
|
|
33
|
+
|
|
34
|
+
- Current git status: !`git status`
|
|
35
|
+
- Current git diff (staged and unstaged changes): !`git diff HEAD`
|
|
36
|
+
- Current branch: !`git branch --show-current`
|
|
37
|
+
- Recent commits: !`git log --oneline -10`
|
|
38
|
+
|
|
39
|
+
{GIT_SAFETY_PROTOCOL_SECTION}
|
|
40
|
+
|
|
41
|
+
## Your task
|
|
42
|
+
|
|
43
|
+
Based on the above changes, create a single git commit:
|
|
44
|
+
|
|
45
|
+
1. Analyze all staged changes and draft a commit message:
|
|
46
|
+
- Look at the recent commits above to follow this repository's commit message style
|
|
47
|
+
- Summarize the nature of the changes (new feature, enhancement, bug fix, refactoring, test, docs, etc.)
|
|
48
|
+
- Ensure the message accurately reflects the changes and their purpose (i.e. "add" means a wholly new feature, "update" means an enhancement to an existing feature, "fix" means a bug fix, etc.)
|
|
49
|
+
- Draft a concise (1-2 sentences) commit message that focuses on the "why" rather than the "what"
|
|
50
|
+
|
|
51
|
+
2. Stage relevant files and create the commit using HEREDOC syntax:
|
|
52
|
+
```
|
|
53
|
+
git commit -m "$(cat <<'EOF'
|
|
54
|
+
Commit message here.{attribution_block}
|
|
55
|
+
EOF
|
|
56
|
+
)"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
You have the capability to call multiple tools in a single response. Stage and create the commit using a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.
|
|
60
|
+
|
|
61
|
+
{{args}}"""
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
async def _handle_commit(ctx: CommandContext) -> CommandResult:
|
|
65
|
+
if not should_include_git_instructions(ctx.workspace_cfg):
|
|
66
|
+
return CommandResult(
|
|
67
|
+
error="[command/execute] /commit: git instructions are disabled "
|
|
68
|
+
"(LANGCHAIN_AGENTX_DISABLE_GIT_INSTRUCTIONS=1 or settings.json)",
|
|
69
|
+
)
|
|
70
|
+
args = str(ctx.extra.get("args", "")).strip()
|
|
71
|
+
template = _commit_prompt_template()
|
|
72
|
+
_tool_names, bash_patterns = partition_allowed_tools(COMMIT_ALLOWED_TOOLS)
|
|
73
|
+
rendered = await execute_shell_commands_in_prompt(
|
|
74
|
+
template,
|
|
75
|
+
cwd=str(ctx.workspace_cfg.workspace_root),
|
|
76
|
+
bash_allow_rules=bash_patterns,
|
|
77
|
+
)
|
|
78
|
+
if args:
|
|
79
|
+
rendered = f"{rendered.rstrip()}\n\nUser args: {args}"
|
|
80
|
+
return CommandResult(
|
|
81
|
+
should_query=True,
|
|
82
|
+
injected_prompt=rendered,
|
|
83
|
+
allowed_tools=list(COMMIT_ALLOWED_TOOLS),
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def make_commit_command() -> CommandDefinition:
|
|
88
|
+
return CommandDefinition(
|
|
89
|
+
name="commit",
|
|
90
|
+
description="Create a git commit",
|
|
91
|
+
command_type="prompt",
|
|
92
|
+
handler=_handle_commit,
|
|
93
|
+
source="builtin",
|
|
94
|
+
allowed_tools=COMMIT_ALLOWED_TOOLS,
|
|
95
|
+
execution_context="fork",
|
|
96
|
+
)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""
|
|
2
|
+
command/builtin/commit_push_pr.py — 内置 /commit-push-pr 命令。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
对齐 CC commands/commit-push-pr.ts:commit + push + gh pr create/edit。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
由 CommandRegistry 注册;用户显式调用 /commit-push-pr 时注入 prompt。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from ..context import CommandContext
|
|
14
|
+
from ..git_settings import should_include_git_instructions
|
|
15
|
+
from ..prompt_shell import execute_shell_commands_in_prompt
|
|
16
|
+
from ..result import CommandResult
|
|
17
|
+
from ..types import CommandDefinition
|
|
18
|
+
from .git_prompt_common import (
|
|
19
|
+
COMMIT_PUSH_PR_ALLOWED_TOOLS,
|
|
20
|
+
GIT_SAFETY_PROTOCOL_SECTION,
|
|
21
|
+
commit_attribution_suffix,
|
|
22
|
+
pr_attribution_suffix,
|
|
23
|
+
)
|
|
24
|
+
from ..allowed_tools import partition_allowed_tools
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _commit_push_pr_prompt_template() -> str:
|
|
28
|
+
commit_attr = commit_attribution_suffix()
|
|
29
|
+
pr_attr = pr_attribution_suffix()
|
|
30
|
+
commit_attr_block = f"\n\n{commit_attr}" if commit_attr else ""
|
|
31
|
+
pr_attr_block = f"\n\n{pr_attr}" if pr_attr else ""
|
|
32
|
+
return f"""## Context
|
|
33
|
+
|
|
34
|
+
- `git status`: !`git status`
|
|
35
|
+
- `git diff HEAD`: !`git diff HEAD`
|
|
36
|
+
- `git branch --show-current`: !`git branch --show-current`
|
|
37
|
+
- `default branch`: !`git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main`
|
|
38
|
+
- `git diff against default`: !`git diff $(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)...HEAD`
|
|
39
|
+
- `existing PR`: !`gh pr view --json number,url 2>/dev/null || true`
|
|
40
|
+
|
|
41
|
+
{GIT_SAFETY_PROTOCOL_SECTION}
|
|
42
|
+
|
|
43
|
+
## Your task
|
|
44
|
+
|
|
45
|
+
Analyze all changes that will be included in the pull request, making sure to look at all relevant commits (NOT just the latest commit, but ALL commits that will be included in the pull request).
|
|
46
|
+
|
|
47
|
+
Based on the above changes:
|
|
48
|
+
1. Create a new branch if you are on the default branch
|
|
49
|
+
2. Create a single commit with an appropriate message using heredoc syntax:
|
|
50
|
+
```
|
|
51
|
+
git commit -m "$(cat <<'EOF'
|
|
52
|
+
Commit message here.{commit_attr_block}
|
|
53
|
+
EOF
|
|
54
|
+
)"
|
|
55
|
+
```
|
|
56
|
+
3. Push the branch to origin with -u if needed
|
|
57
|
+
4. If a PR already exists for this branch, update it with `gh pr edit`. Otherwise create one:
|
|
58
|
+
```
|
|
59
|
+
gh pr create --title "Short, descriptive title" --body "$(cat <<'EOF'
|
|
60
|
+
## Summary
|
|
61
|
+
<1-3 bullet points>
|
|
62
|
+
|
|
63
|
+
## Test plan
|
|
64
|
+
[Bulleted markdown checklist of TODOs for testing the pull request...]{pr_attr_block}
|
|
65
|
+
EOF
|
|
66
|
+
)"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message.
|
|
70
|
+
Return the PR URL when you're done, so the user can see it.
|
|
71
|
+
|
|
72
|
+
{{args}}"""
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
async def _handle_commit_push_pr(ctx: CommandContext) -> CommandResult:
|
|
76
|
+
if not should_include_git_instructions(ctx.workspace_cfg):
|
|
77
|
+
return CommandResult(
|
|
78
|
+
error="[command/execute] /commit-push-pr: git instructions are disabled "
|
|
79
|
+
"(LANGCHAIN_AGENTX_DISABLE_GIT_INSTRUCTIONS=1 or settings.json)",
|
|
80
|
+
)
|
|
81
|
+
args = str(ctx.extra.get("args", "")).strip()
|
|
82
|
+
template = _commit_push_pr_prompt_template()
|
|
83
|
+
_tool_names, bash_patterns = partition_allowed_tools(COMMIT_PUSH_PR_ALLOWED_TOOLS)
|
|
84
|
+
rendered = await execute_shell_commands_in_prompt(
|
|
85
|
+
template,
|
|
86
|
+
cwd=str(ctx.workspace_cfg.workspace_root),
|
|
87
|
+
bash_allow_rules=bash_patterns,
|
|
88
|
+
)
|
|
89
|
+
if args:
|
|
90
|
+
rendered = f"{rendered.rstrip()}\n\nUser args: {args}"
|
|
91
|
+
return CommandResult(
|
|
92
|
+
should_query=True,
|
|
93
|
+
injected_prompt=rendered,
|
|
94
|
+
allowed_tools=list(COMMIT_PUSH_PR_ALLOWED_TOOLS),
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def make_commit_push_pr_command() -> CommandDefinition:
|
|
99
|
+
return CommandDefinition(
|
|
100
|
+
name="commit-push-pr",
|
|
101
|
+
description="Commit, push, and open a pull request",
|
|
102
|
+
command_type="prompt",
|
|
103
|
+
handler=_handle_commit_push_pr,
|
|
104
|
+
source="builtin",
|
|
105
|
+
allowed_tools=COMMIT_PUSH_PR_ALLOWED_TOOLS,
|
|
106
|
+
)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""
|
|
2
|
+
command/builtin/git_prompt_common.py — Git builtin 命令共享文案与 allowed_tools。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
为 /commit、/commit-push-pr 提供 CC 对齐的 Git Safety 与工具白名单常量。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
被 command/builtin/commit*.py 引用。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from ...utils.git_settings import commit_attribution_suffix, pr_attribution_suffix
|
|
14
|
+
|
|
15
|
+
COMMIT_ALLOWED_TOOLS: tuple[str, ...] = (
|
|
16
|
+
"Bash(git add:*)",
|
|
17
|
+
"Bash(git status:*)",
|
|
18
|
+
"Bash(git commit:*)",
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
COMMIT_PUSH_PR_ALLOWED_TOOLS: tuple[str, ...] = (
|
|
22
|
+
"Bash(git add:*)",
|
|
23
|
+
"Bash(git status:*)",
|
|
24
|
+
"Bash(git commit:*)",
|
|
25
|
+
"Bash(git push:*)",
|
|
26
|
+
"Bash(gh pr create:*)",
|
|
27
|
+
"Bash(gh pr edit:*)",
|
|
28
|
+
"Bash(gh pr view:*)",
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
GIT_SAFETY_PROTOCOL_SECTION = """## Git Safety Protocol
|
|
32
|
+
|
|
33
|
+
- NEVER update the git config
|
|
34
|
+
- NEVER skip hooks (--no-verify, --no-gpg-sign, etc) unless the user explicitly requests it
|
|
35
|
+
- CRITICAL: ALWAYS create NEW commits. NEVER use git commit --amend, unless the user explicitly requests it
|
|
36
|
+
- NEVER run destructive git commands (push --force, reset --hard, checkout ., restore ., clean -f, branch -D) unless the user explicitly requests them
|
|
37
|
+
- NEVER run force push to main/master; warn the user if they request it
|
|
38
|
+
- Do not commit files that likely contain secrets (.env, credentials.json, etc). Warn the user if they specifically request to commit those files
|
|
39
|
+
- If there are no changes to commit (i.e., no untracked files and no modifications), do not create an empty commit
|
|
40
|
+
- Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported"""
|
|
41
|
+
|
|
42
|
+
__all__ = [
|
|
43
|
+
"COMMIT_ALLOWED_TOOLS",
|
|
44
|
+
"COMMIT_PUSH_PR_ALLOWED_TOOLS",
|
|
45
|
+
"GIT_SAFETY_PROTOCOL_SECTION",
|
|
46
|
+
"commit_attribution_suffix",
|
|
47
|
+
"pr_attribution_suffix",
|
|
48
|
+
]
|
|
@@ -82,7 +82,7 @@ class CommandDispatcher:
|
|
|
82
82
|
context: CommandContext,
|
|
83
83
|
) -> CommandResult:
|
|
84
84
|
if command.command_type == "prompt":
|
|
85
|
-
return self._execute_prompt(command, args)
|
|
85
|
+
return await self._execute_prompt(command, args, context)
|
|
86
86
|
return await self._execute_local(command, context)
|
|
87
87
|
|
|
88
88
|
async def _execute_local(
|
|
@@ -108,17 +108,64 @@ class CommandDispatcher:
|
|
|
108
108
|
logger.error("command /%s execution failed: %s", command.name, exc, exc_info=True)
|
|
109
109
|
return CommandResult(error=self._format_error("execute", f"/{command.name} failed: {exc}"))
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
async def _execute_prompt(
|
|
112
|
+
self,
|
|
113
|
+
command: CommandDefinition,
|
|
114
|
+
args: str,
|
|
115
|
+
context: CommandContext,
|
|
116
|
+
) -> CommandResult:
|
|
117
|
+
if command.handler is not None:
|
|
118
|
+
try:
|
|
119
|
+
result = command.handler(context)
|
|
120
|
+
if inspect.isawaitable(result):
|
|
121
|
+
result = await result
|
|
122
|
+
if not isinstance(result, CommandResult):
|
|
123
|
+
return CommandResult(
|
|
124
|
+
error=self._format_error(
|
|
125
|
+
"execute",
|
|
126
|
+
f"/{command.name}: prompt handler returned unexpected type",
|
|
127
|
+
)
|
|
128
|
+
)
|
|
129
|
+
if result.allowed_tools is None and command.allowed_tools:
|
|
130
|
+
result = CommandResult(
|
|
131
|
+
should_query=result.should_query,
|
|
132
|
+
output=result.output,
|
|
133
|
+
injected_prompt=result.injected_prompt,
|
|
134
|
+
error=result.error,
|
|
135
|
+
allowed_tools=list(command.allowed_tools),
|
|
136
|
+
execution_context=command.execution_context,
|
|
137
|
+
)
|
|
138
|
+
elif result.execution_context == "main" and command.execution_context != "main":
|
|
139
|
+
result = CommandResult(
|
|
140
|
+
should_query=result.should_query,
|
|
141
|
+
output=result.output,
|
|
142
|
+
injected_prompt=result.injected_prompt,
|
|
143
|
+
error=result.error,
|
|
144
|
+
allowed_tools=result.allowed_tools,
|
|
145
|
+
execution_context=command.execution_context,
|
|
146
|
+
)
|
|
147
|
+
return result
|
|
148
|
+
except Exception as exc: # pragma: no cover - defensive path
|
|
149
|
+
logger.error("command /%s prompt failed: %s", command.name, exc, exc_info=True)
|
|
150
|
+
return CommandResult(
|
|
151
|
+
error=self._format_error("execute", f"/{command.name} failed: {exc}")
|
|
152
|
+
)
|
|
153
|
+
|
|
113
154
|
if command.prompt_template is None:
|
|
114
155
|
return CommandResult(
|
|
115
|
-
error=
|
|
156
|
+
error=self._format_error(
|
|
116
157
|
"execute",
|
|
117
158
|
f"/{command.name}: prompt_template not set",
|
|
118
159
|
)
|
|
119
160
|
)
|
|
120
161
|
rendered = command.prompt_template.replace("{args}", args)
|
|
121
|
-
|
|
162
|
+
allowed = list(command.allowed_tools) if command.allowed_tools else None
|
|
163
|
+
return CommandResult(
|
|
164
|
+
should_query=True,
|
|
165
|
+
injected_prompt=rendered,
|
|
166
|
+
allowed_tools=allowed,
|
|
167
|
+
execution_context=command.execution_context,
|
|
168
|
+
)
|
|
122
169
|
|
|
123
170
|
def _find_plugin_command(
|
|
124
171
|
self,
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""
|
|
2
|
+
command/fork_executor.py — slash 命令 fork 子 loop 执行(对齐 CC executeForkedSlashCommand)。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
在隔离子 agent 中执行 prompt 类 slash 命令,不污染主 session messages。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
AgentSession.run_slash_command → run_forked_slash_command。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
from langchain_agentx.command.allowed_tools import apply_command_tool_scope, reset_command_tool_scope
|
|
16
|
+
from langchain_agentx.tool_runtime.models import ToolExecutionContext
|
|
17
|
+
from langchain_agentx.tools.agent.builtin_subagent_loader import DefaultSubagentRegistryProvider
|
|
18
|
+
from langchain_agentx.tools.agent.models import AgentToolInput
|
|
19
|
+
from dataclasses import replace
|
|
20
|
+
from langchain_agentx.workspace.config import ResolvedAgentStateConfig
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _bash_only_tool_filter(all_tools: list[Any]) -> list[Any]:
|
|
24
|
+
return [tool for tool in all_tools if getattr(tool, "name", "") == "bash"]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _commit_fork_subagent_config() -> SubagentConfig:
|
|
28
|
+
base = DefaultSubagentRegistryProvider.get().get("general-purpose")
|
|
29
|
+
return replace(
|
|
30
|
+
base,
|
|
31
|
+
name="slash-command-fork",
|
|
32
|
+
description="Isolated slash-command fork worker",
|
|
33
|
+
when_to_use="Internal fork execution for slash commands",
|
|
34
|
+
tool_filter=_bash_only_tool_filter,
|
|
35
|
+
tools_description="bash",
|
|
36
|
+
default_max_steps=8,
|
|
37
|
+
allow_async=False,
|
|
38
|
+
tags={"fork", "slash-command"},
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _build_ctx_from_graph(
|
|
43
|
+
graph: Any,
|
|
44
|
+
*,
|
|
45
|
+
workspace_cfg: ResolvedAgentStateConfig,
|
|
46
|
+
session_id: str,
|
|
47
|
+
) -> ToolExecutionContext:
|
|
48
|
+
config = getattr(graph, "config", None)
|
|
49
|
+
configurable: dict[str, Any] = {}
|
|
50
|
+
if isinstance(config, dict):
|
|
51
|
+
raw = config.get("configurable")
|
|
52
|
+
if isinstance(raw, dict):
|
|
53
|
+
configurable = raw
|
|
54
|
+
loop_config = configurable.get("loop_config")
|
|
55
|
+
model = getattr(loop_config, "model", None) if loop_config is not None else None
|
|
56
|
+
workspace_root = str(workspace_cfg.workspace_root)
|
|
57
|
+
return ToolExecutionContext(
|
|
58
|
+
tool_name="slash_command_fork",
|
|
59
|
+
tool_call_id="slash-fork",
|
|
60
|
+
input_args={},
|
|
61
|
+
state={"messages": [], "cwd": workspace_root},
|
|
62
|
+
model=model,
|
|
63
|
+
available_tools=list(configurable.get("available_tools") or []),
|
|
64
|
+
session_id=session_id,
|
|
65
|
+
session_store=configurable.get("session_store"),
|
|
66
|
+
tool_loader=configurable.get("tool_loader"),
|
|
67
|
+
tool_registry=configurable.get("tool_registry"),
|
|
68
|
+
workspace_root=workspace_root,
|
|
69
|
+
agent_home_segment=workspace_cfg.agent_home_segment,
|
|
70
|
+
cwd=workspace_root,
|
|
71
|
+
original_cwd=workspace_root,
|
|
72
|
+
runnable_config=config,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def run_forked_slash_command(
|
|
77
|
+
*,
|
|
78
|
+
prompt: str,
|
|
79
|
+
allowed_tools: list[str],
|
|
80
|
+
graph: Any,
|
|
81
|
+
workspace_cfg: ResolvedAgentStateConfig,
|
|
82
|
+
session_id: str,
|
|
83
|
+
) -> str:
|
|
84
|
+
from langchain_agentx.loop.subagent.orchestrator import SubagentOrchestrator
|
|
85
|
+
|
|
86
|
+
ctx = _build_ctx_from_graph(graph, workspace_cfg=workspace_cfg, session_id=session_id)
|
|
87
|
+
store = ctx.session_store
|
|
88
|
+
try:
|
|
89
|
+
apply_command_tool_scope(store, allowed_tools)
|
|
90
|
+
orchestrator = SubagentOrchestrator(mode="fork")
|
|
91
|
+
inp = AgentToolInput(
|
|
92
|
+
prompt=prompt,
|
|
93
|
+
description="slash command fork",
|
|
94
|
+
subagent_type="general-purpose",
|
|
95
|
+
run_in_background=False,
|
|
96
|
+
)
|
|
97
|
+
out = orchestrator.invoke_subagent(
|
|
98
|
+
inp,
|
|
99
|
+
ctx,
|
|
100
|
+
_commit_fork_subagent_config(),
|
|
101
|
+
skill_allowed_tools=allowed_tools or None,
|
|
102
|
+
force_sync=True,
|
|
103
|
+
)
|
|
104
|
+
text = (out.content or "").strip()
|
|
105
|
+
return text or "Slash command fork completed."
|
|
106
|
+
finally:
|
|
107
|
+
reset_command_tool_scope(store)
|