langchain-agentx-python 1.0.5__tar.gz → 1.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/PKG-INFO +1 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/__init__.py +1 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/loop_config.py +1 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/query_source.py +14 -38
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/exit/exit_logic.py +4 -0
- langchain-agentx-python-1.0.8/langchain_agentx/loop/exit/query_source.py +54 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/graph/factory.py +228 -65
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/graph_wiring.py +5 -10
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +12 -19
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/prompt/builtin.py +6 -3
- langchain-agentx-python-1.0.8/langchain_agentx/loop/prompt/tool_aware_sections.py +124 -0
- langchain-agentx-python-1.0.8/langchain_agentx/loop/prompt/using_your_tools.py +126 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/__init__.py +13 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/context.py +29 -1
- langchain-agentx-python-1.0.8/langchain_agentx/loop/subagent/fork_boilerplate.py +125 -0
- langchain-agentx-python-1.0.8/langchain_agentx/loop/subagent/fork_ports.py +48 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/forked_runner.py +20 -22
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/orchestrator.py +112 -10
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/runner.py +1 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/instruction/exclusion.py +73 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/instruction/external_includes.py +62 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/instruction/loader.py +60 -9
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/instruction/runtime.py +12 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/instruction/types.py +2 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/instruction/worktree_skip.py +58 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/__init__.py +0 -24
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/attachments.py +66 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/extractor.py +60 -8
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/gate.py +82 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/loader.py +81 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/memory_saved.py +52 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/prefetch.py +254 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/prompts/select_memories.py +24 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/recall.py +84 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/recall_service.py +462 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/scan.py +41 -15
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/side_query.py +101 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/written_paths.py +147 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/session/__init__.py +17 -0
- langchain-agentx-python-1.0.8/langchain_agentx/memory/session/extractor.py +85 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/session/prompts.py +13 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/session/session_memory.py +80 -20
- langchain-agentx-python-1.0.8/langchain_agentx/memory/session/tool_scope.py +53 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/agent_session.py +0 -2
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/conversation_session.py +0 -2
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/__init__.py +19 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/adapter.py +20 -2
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/base.py +58 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/models.py +40 -0
- langchain-agentx-python-1.0.8/langchain_agentx/tool_runtime/permission_snapshot.py +53 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/pipeline.py +1 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/types.py +2 -0
- langchain-agentx-python-1.0.8/langchain_agentx/tool_runtime/prompt_context.py +91 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/registry.py +9 -1
- langchain-agentx-python-1.0.8/langchain_agentx/tool_runtime/tool_schema_cache.py +116 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/backend.py +41 -2
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/loader.py +58 -1
- langchain-agentx-python-1.0.8/langchain_agentx/tools/agent/memory_paths.py +102 -0
- langchain-agentx-python-1.0.8/langchain_agentx/tools/agent/memory_prompt.py +74 -0
- langchain-agentx-python-1.0.8/langchain_agentx/tools/agent/memory_snapshot.py +410 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/prompt.py +59 -24
- langchain-agentx-python-1.0.8/langchain_agentx/tools/agent/prompt_scope.py +78 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/registry/config.py +14 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/tool.py +22 -7
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/tool.py +9 -3
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/prompt.py +5 -2
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/semantics.py +10 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/tool.py +18 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/tool.py +6 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/tool.py +6 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/grep/tool.py +7 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/read/tool.py +5 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/fork.py +9 -3
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/tool.py +6 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_create/tool.py +6 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/prompt.py +14 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/tool.py +13 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/prompt.py +2 -2
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/tool.py +15 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/tool.py +6 -1
- langchain-agentx-python-1.0.8/langchain_agentx/utils/git_roots.py +142 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/base.py +3 -7
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/config.py +34 -7
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/tool_boundary.py +24 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx_python.egg-info/PKG-INFO +1 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx_python.egg-info/SOURCES.txt +26 -1
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/pyproject.toml +1 -1
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/gate.py +0 -54
- langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir/recall.py +0 -45
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/LICENSE +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/README.md +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/builtin/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/builtin/clear.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/builtin/compact.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/builtin/memory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/context.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/dispatcher.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/registry.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/result.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/command/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/config/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/config/model_profiles.yaml +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/config/model_profiles.yaml.example +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/health/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/health/checks.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/health/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/health/preflight.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/benchmark_frozen_config.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/agent_config.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/runtime_settings.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/token_estimator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/config/tool_execution_engine_resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/blocking_guard.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/compaction_service.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/message_utils.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/pipeline.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/recovery_mode.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/settings.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/base.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/collapse.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/noop.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/snip.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/context/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/exit/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/exit/reason_codes.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/exit/resolution.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/exit/terminal.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/exit/withheld_error.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/graph/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/graph/graph_edges.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/graph/reactive_compact_node.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/graph/runtime_tools_node.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/config.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/engine.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/executors/agent.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/executors/command.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/executors/http.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/hook_projection.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/post_sample_hook.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/progress_payload.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/registry.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/trust.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/hook/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/injection/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/injection/dedup.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/loop_abort.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/model_node.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/model_nodes.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/retrier.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/retry_bridge.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/retry_events.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/retry_policy.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/retry_progress.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/schema_and_format.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/prompt/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/prompt/builder.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/prompt/compact.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/prompt/sections.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/prompt/session_context.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/runtime/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/runtime/context.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/runtime/context_factory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/stream/graph_driver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/stream/helpers.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/stream/loop_driver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/stream/result.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/stream/synthetic_events.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/stream/transcript_gate.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/async_runner.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/graph.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/progress.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/subagent_termination_classifier.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/loop/subagent/transcript.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/instruction/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/instruction/resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/instruction/sections.py +0 -0
- {langchain-agentx-python-1.0.5/langchain_agentx/memory/memdir → langchain-agentx-python-1.0.8/langchain_agentx/memory/memdir/_deprecated/agent_memory}/agent_memory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/age.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/cursor_store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/fork_concurrency.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/metrics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/prompts/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/prompts/_shared.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/runtime.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/threshold.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/tool_scope.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/memdir/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/memory/session/compact_bridge.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/service.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/state.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/evaluation/store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/events/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/events/finish_event_payload_composer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/events/finish_outcome.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/events/tool_call_id_resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/logging/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/logging/debug_burst.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/logging/logging_config.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/logging/logging_contract.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/replay/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/replay/cli.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/replay/service.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/replay/store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/replay/ui.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/collector.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/event_emitter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/trace_callback.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/builtin.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/config.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/manifest.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/registries.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/plugin/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/anthropic.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/env.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/model_profile.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/openai.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/answer_assembler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/contracts.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/anthropic.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/anthropic_codec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/anthropic_finish_reason.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/anthropic_interpreter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/anthropic_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/compatible_openai.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/compatible_openai_codec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/compatible_openai_finish_reason.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/compatible_openai_interpreter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/compatible_openai_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/openai.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/openai_codec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/openai_finish_reason.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/openai_interpreter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/families/openai_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/finish_reason_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/message_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/profile.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/registry.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/request_codec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/runtime.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/stream_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/tool_call_interpreter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/provider/semantics/turn_accumulator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/conversation_factory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/conversation_recovery.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/factory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/protocol.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/session/recovery.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/core/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/core/ids.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/core/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/output/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/output/sink.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/store/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/notifier.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/reader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/allowlist.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/classifier/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/classifier/classifier.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/classifier/parser.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/classifier/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/classifier/schema.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/classifier/transcript.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/config.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/config_update.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/decision.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/events.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/factory.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/feedback.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/hook.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/rule_stripping.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/auto_mode/state.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/capabilities.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/errors.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/appliers/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/appliers/auto_approved.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/appliers/effort_override.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/appliers/model_override.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/appliers/set_cwd.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/appliers/stubs.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/callback_bridge.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/engine.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/message_adapter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/parity.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/payload_validator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/planner.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/policy.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/side_effect_collector.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/execution/side_effect_merge.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/failure_event_emitter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/loop_loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/loop_runtime_context.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/messages.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/override.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/path_safety.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/permission_context.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/permission_decision.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/policy.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/policy_decorator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/process_loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/progress/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/progress/event.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/progress/sampler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/_abort.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/cli_interactive.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/handler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/headless.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/legacy_resolver_adapter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/messages.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/race.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/prompt/session_mode.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/read_ignore_patterns.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/read_permission.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/session_hints.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/session_store.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/shell_error.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tool_runtime/tool_message_status.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/general.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/registry/registry.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/agent/scope.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/ast_security.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/auto_mode_adapter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/boundary_check.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/events.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/mode_validation.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/observability.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/output_tracker.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/output_utils.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/path_security.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/result_presenter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/security.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/sed_validation.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/shell_locator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/shell_quoting.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/task_runtime.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/diff_generator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/quote_match.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/settings_validator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/staleness.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/edit/validator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/pagination.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/grep/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/grep/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/grep/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/grep/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/read/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/read/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/read/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/read/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/read/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/policy.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/skill/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_create/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_create/hooks.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_create/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_create/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_create/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_get/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_get/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_get/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_get/tool.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_list/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_list/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_list/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_list/tool.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_update/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_update/hooks.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_update/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_update/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/task_update/tool.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/webfetch/summary.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/events.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/loader.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/websearch/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/backend.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/limits.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/models.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/prompt.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/tools/write/validator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/cwd.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/host_platform.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/path.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/path_hierarchy.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/path_user_input.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/rg_executable.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/subprocess_text.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/temp_paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/tool_paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/tool_result_storage.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/unc_path.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/win_reserved_paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/utils/windows_paths.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/batch.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/dag.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/event_adapter/types.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/node.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/patterns/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/patterns/chaining.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/patterns/routing.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/runtime.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workflow/state.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/__init__.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/boundary.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/capabilities.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/errors.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/grant.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/l3_root_grant.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/resolver.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/root_grant_manager.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/validators.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx/workspace/view.py +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx_python.egg-info/requires.txt +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/langchain_agentx_python.egg-info/top_level.txt +0 -0
- {langchain-agentx-python-1.0.5 → langchain-agentx-python-1.0.8}/setup.cfg +0 -0
|
@@ -251,6 +251,7 @@ class AgentLoopConfig:
|
|
|
251
251
|
# -----------------------------------------------------------------------
|
|
252
252
|
task_notification_max_priority: QueuePriority = QueuePriority.NEXT
|
|
253
253
|
managed_rules: str | None = None
|
|
254
|
+
claude_md_excludes: tuple[str, ...] = ()
|
|
254
255
|
|
|
255
256
|
# -----------------------------------------------------------------------
|
|
256
257
|
# 模型 profile
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"""
|
|
2
|
-
query_source
|
|
2
|
+
query_source 守卫策略(Compaction / Fork / UI 路由)。
|
|
3
3
|
|
|
4
4
|
职责:
|
|
5
|
-
|
|
6
|
-
token_blocking / persist_replacements 的统一跳过判定。
|
|
5
|
+
autocompact / microcompact / token_blocking / persist_replacements 的统一跳过判定。
|
|
7
6
|
|
|
8
7
|
链路位置:
|
|
9
8
|
ForkedAgentRunner / Loop 编译 → QuerySourcePolicy.compile_loop_context()
|
|
10
9
|
→ ContextCompactionContext / CompactionSettings / model_node 守卫。
|
|
11
10
|
|
|
12
11
|
当前裁剪范围:
|
|
13
|
-
|
|
12
|
+
常量定义在 loop.exit.query_source(对齐 CC constants/querySource.ts);
|
|
13
|
+
本模块仅承载与 compaction 相关的策略类。
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
from __future__ import annotations
|
|
@@ -18,6 +18,8 @@ from __future__ import annotations
|
|
|
18
18
|
from dataclasses import dataclass
|
|
19
19
|
from typing import Final, FrozenSet, Literal
|
|
20
20
|
|
|
21
|
+
from langchain_agentx.loop.exit.query_source import QuerySource
|
|
22
|
+
|
|
21
23
|
CompactionGuardStage = Literal[
|
|
22
24
|
"autocompact",
|
|
23
25
|
"microcompact",
|
|
@@ -27,40 +29,6 @@ CompactionGuardStage = Literal[
|
|
|
27
29
|
|
|
28
30
|
EmitterRoute = Literal["main", "sidechain", "drop"]
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
class QuerySource:
|
|
32
|
-
"""官方 query_source 常量(禁止在业务代码散落字面量)。"""
|
|
33
|
-
|
|
34
|
-
MAIN_THREAD: Final[str] = "main_thread"
|
|
35
|
-
EXTRACT_MEMORIES: Final[str] = "extract_memories"
|
|
36
|
-
SESSION_MEMORY: Final[str] = "session_memory"
|
|
37
|
-
COMPACT: Final[str] = "compact"
|
|
38
|
-
AGENT_SUMMARY: Final[str] = "agent_summary"
|
|
39
|
-
AGENT_PREFIX: Final[str] = "agent:"
|
|
40
|
-
|
|
41
|
-
@classmethod
|
|
42
|
-
def all_official(cls) -> FrozenSet[str]:
|
|
43
|
-
return frozenset(
|
|
44
|
-
{
|
|
45
|
-
cls.MAIN_THREAD,
|
|
46
|
-
cls.EXTRACT_MEMORIES,
|
|
47
|
-
cls.SESSION_MEMORY,
|
|
48
|
-
cls.COMPACT,
|
|
49
|
-
cls.AGENT_SUMMARY,
|
|
50
|
-
}
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
@classmethod
|
|
54
|
-
def is_agent_subagent(cls, query_source: str | None) -> bool:
|
|
55
|
-
return isinstance(query_source, str) and query_source.startswith(cls.AGENT_PREFIX)
|
|
56
|
-
|
|
57
|
-
@classmethod
|
|
58
|
-
def normalize(cls, query_source: str | None) -> str:
|
|
59
|
-
if isinstance(query_source, str) and query_source.strip():
|
|
60
|
-
return query_source.strip()
|
|
61
|
-
return cls.MAIN_THREAD
|
|
62
|
-
|
|
63
|
-
|
|
64
32
|
# 后台 fork 任务:跳过 autocompact / microcompact
|
|
65
33
|
_BACKGROUND_COMPACTION_SKIP: Final[FrozenSet[str]] = frozenset(
|
|
66
34
|
{
|
|
@@ -142,6 +110,14 @@ class QuerySourcePolicy:
|
|
|
142
110
|
persist_replacements=cls.should_persist_replacements(normalized),
|
|
143
111
|
)
|
|
144
112
|
|
|
113
|
+
@classmethod
|
|
114
|
+
def is_main_repl_thread(cls, query_source: str | None) -> bool:
|
|
115
|
+
"""对齐 CC querySource === 'repl_main_thread';缺省 / None 视为 main。"""
|
|
116
|
+
normalized = QuerySource.normalize(query_source)
|
|
117
|
+
if normalized == QuerySource.MAIN_THREAD:
|
|
118
|
+
return True
|
|
119
|
+
return normalized == "repl_main_thread" or normalized.startswith("repl_main_thread:")
|
|
120
|
+
|
|
145
121
|
@classmethod
|
|
146
122
|
def default_ui_visible(cls, query_source: str | None) -> bool:
|
|
147
123
|
normalized = QuerySource.normalize(query_source)
|
|
@@ -25,6 +25,8 @@ from typing import Any, NotRequired, TypedDict
|
|
|
25
25
|
|
|
26
26
|
from langchain_core.messages import AIMessage
|
|
27
27
|
|
|
28
|
+
from .query_source import QuerySource
|
|
29
|
+
|
|
28
30
|
from .resolution import LoopResolution
|
|
29
31
|
from .terminal import LoopTerminal
|
|
30
32
|
|
|
@@ -219,6 +221,7 @@ def create_initial_state(
|
|
|
219
221
|
"finish_reason": None,
|
|
220
222
|
"finish_reasons": [],
|
|
221
223
|
"section_cache": {},
|
|
224
|
+
"query_source": QuerySource.MAIN_THREAD,
|
|
222
225
|
}
|
|
223
226
|
|
|
224
227
|
|
|
@@ -264,6 +267,7 @@ class AgentLoopState(TypedDict):
|
|
|
264
267
|
finish_reason: str | None # Provider 协议层:这一轮 completion 为何停
|
|
265
268
|
finish_reasons: list[str] # finish_reason 历史(观测用)
|
|
266
269
|
section_cache: dict[str, str | None] # SystemPromptSection session 级缓存(key=name, value=compute() 结果)
|
|
270
|
+
query_source: NotRequired[str] # Loop 来源标签;主 REPL 为 main_thread,Fork 子图透传
|
|
267
271
|
|
|
268
272
|
|
|
269
273
|
# 状态字段契约别名(对外统一使用 LoopAgentStateFields)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""
|
|
2
|
+
query_source 官方常量(对齐 CC constants/querySource.ts)。
|
|
3
|
+
|
|
4
|
+
职责:
|
|
5
|
+
Loop 来源标签的单一字面量来源;与 compaction / fork 策略解耦。
|
|
6
|
+
|
|
7
|
+
链路位置:
|
|
8
|
+
AgentLoopState 默认值(exit_logic)与各层通过 query_source 字段透传。
|
|
9
|
+
|
|
10
|
+
当前裁剪范围:
|
|
11
|
+
仅常量与 normalize;守卫策略见 loop.context.query_source.QuerySourcePolicy。
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Final, FrozenSet
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class QuerySource:
|
|
20
|
+
"""官方 query_source 常量(禁止在业务代码散落字面量)。"""
|
|
21
|
+
|
|
22
|
+
MAIN_THREAD: Final[str] = "main_thread"
|
|
23
|
+
EXTRACT_MEMORIES: Final[str] = "extract_memories"
|
|
24
|
+
SESSION_MEMORY: Final[str] = "session_memory"
|
|
25
|
+
COMPACT: Final[str] = "compact"
|
|
26
|
+
AGENT_SUMMARY: Final[str] = "agent_summary"
|
|
27
|
+
MEMDIR_RELEVANCE: Final[str] = "memdir_relevance"
|
|
28
|
+
AGENT_PREFIX: Final[str] = "agent:"
|
|
29
|
+
|
|
30
|
+
@classmethod
|
|
31
|
+
def all_official(cls) -> FrozenSet[str]:
|
|
32
|
+
return frozenset(
|
|
33
|
+
{
|
|
34
|
+
cls.MAIN_THREAD,
|
|
35
|
+
cls.EXTRACT_MEMORIES,
|
|
36
|
+
cls.SESSION_MEMORY,
|
|
37
|
+
cls.COMPACT,
|
|
38
|
+
cls.AGENT_SUMMARY,
|
|
39
|
+
cls.MEMDIR_RELEVANCE,
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
@classmethod
|
|
44
|
+
def is_agent_subagent(cls, query_source: str | None) -> bool:
|
|
45
|
+
return isinstance(query_source, str) and query_source.startswith(cls.AGENT_PREFIX)
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def normalize(cls, query_source: str | None) -> str:
|
|
49
|
+
if isinstance(query_source, str) and query_source.strip():
|
|
50
|
+
return query_source.strip()
|
|
51
|
+
return cls.MAIN_THREAD
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
__all__ = ["QuerySource"]
|
|
@@ -89,10 +89,6 @@ from ...memory.instruction.runtime import (
|
|
|
89
89
|
CallbackActiveFilesProvider,
|
|
90
90
|
InstructionMemoryBootstrap,
|
|
91
91
|
)
|
|
92
|
-
from ...memory.memdir.agent_memory import (
|
|
93
|
-
AgentMemoryPromptBootstrap,
|
|
94
|
-
get_default_agent_memory_extraction_coordinator,
|
|
95
|
-
)
|
|
96
92
|
from ...memory.memdir.runtime import MemoryPromptBootstrap
|
|
97
93
|
from ...memory.memdir.extractor import MemoryExtractionCoordinator
|
|
98
94
|
from ...memory.memdir.paths import is_memory_enabled
|
|
@@ -101,7 +97,6 @@ from ..hook.post_sample_hook import PostSampleHook
|
|
|
101
97
|
# SessionMemoryCompactBridge uses lazy import to avoid circular dependency with memory.session.session_memory
|
|
102
98
|
from ..prompt import SystemPromptSection, build_effective_system_prompt
|
|
103
99
|
from ..prompt.session_context import get_default_session_context_sections
|
|
104
|
-
from ...tools.agent.prompt import build_explore_plan_guidance
|
|
105
100
|
from ..config import ModelContextResolver
|
|
106
101
|
from ..config.loop_config import (
|
|
107
102
|
AgentLoopConfig,
|
|
@@ -352,6 +347,7 @@ class LoopGraphBuilder:
|
|
|
352
347
|
self._state_schema = state_schema
|
|
353
348
|
self._context_schema = context_schema
|
|
354
349
|
self._prepared = False
|
|
350
|
+
self._memory_prefetch_coordinator: Any | None = None
|
|
355
351
|
|
|
356
352
|
def _prepare_compile_context(self) -> None:
|
|
357
353
|
if self._prepared:
|
|
@@ -369,7 +365,16 @@ class LoopGraphBuilder:
|
|
|
369
365
|
self._dynamic_sections: list[SystemPromptSection] = list(self._config.prompt.dynamic_sections)
|
|
370
366
|
append_system_prompt = self._config.prompt.append_system
|
|
371
367
|
self._resolve_workspace_config()
|
|
372
|
-
self._setup_loader_tools(
|
|
368
|
+
self._setup_loader_tools(
|
|
369
|
+
session_store=session_store,
|
|
370
|
+
model=model,
|
|
371
|
+
schema_cache_namespace=session_id or "",
|
|
372
|
+
)
|
|
373
|
+
from ...loop.prompt.tool_aware_sections import (
|
|
374
|
+
build_tool_aware_prompt_sections,
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
runtime_tools = getattr(self, "_runtime_tools", None) or []
|
|
373
378
|
# P0-3: 初始化 session_store.cwd
|
|
374
379
|
# 从 config.workspace.runtime_cwd 或回退到 workspace_root
|
|
375
380
|
if session_store is not None and hasattr(session_store, "set_cwd"):
|
|
@@ -405,10 +410,20 @@ class LoopGraphBuilder:
|
|
|
405
410
|
from ...memory.session.compact_bridge import SessionMemoryCompactBridge
|
|
406
411
|
|
|
407
412
|
session_memory_path = self._workspace_cfg.session_memory_path(session_id)
|
|
413
|
+
session_memory_extractor = None
|
|
414
|
+
if not self._config.subagent.is_subagent:
|
|
415
|
+
session_memory_extractor = self._build_session_memory_extractor(
|
|
416
|
+
model=model,
|
|
417
|
+
session_store=session_store,
|
|
418
|
+
session_id=session_id or "",
|
|
419
|
+
session_memory_path=session_memory_path,
|
|
420
|
+
base_prompt=base_prompt,
|
|
421
|
+
)
|
|
408
422
|
self._session_memory_manager = SessionMemoryManager(
|
|
409
423
|
session_memory_path=session_memory_path,
|
|
410
424
|
llm=model,
|
|
411
425
|
is_subagent=self._config.subagent.is_subagent,
|
|
426
|
+
extractor=session_memory_extractor,
|
|
412
427
|
)
|
|
413
428
|
self._session_memory_compact_bridge = SessionMemoryCompactBridge(
|
|
414
429
|
session_memory_path=session_memory_path,
|
|
@@ -432,6 +447,7 @@ class LoopGraphBuilder:
|
|
|
432
447
|
workspace_root=Path(self._workspace_root),
|
|
433
448
|
agent_home_segment=self._agent_home_segment,
|
|
434
449
|
managed_rules=self._config.managed_rules,
|
|
450
|
+
claude_md_excludes=self._config.claude_md_excludes,
|
|
435
451
|
active_files_provider=(
|
|
436
452
|
CallbackActiveFilesProvider(self._services.active_files_getter)
|
|
437
453
|
if self._services.active_files_getter is not None
|
|
@@ -446,14 +462,15 @@ class LoopGraphBuilder:
|
|
|
446
462
|
available_tools=self._loader_tools,
|
|
447
463
|
).build_sections()
|
|
448
464
|
)
|
|
449
|
-
self.
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
465
|
+
if not self._config.subagent.is_subagent:
|
|
466
|
+
self._dynamic_sections.extend(
|
|
467
|
+
build_tool_aware_prompt_sections(
|
|
468
|
+
self._enabled_tool_names,
|
|
469
|
+
runtime_tools=runtime_tools,
|
|
470
|
+
include_session_memory_mechanics=self._config.enable_session_memory,
|
|
471
|
+
is_subagent=False,
|
|
472
|
+
)
|
|
473
|
+
)
|
|
457
474
|
system_message = self._build_system_message(
|
|
458
475
|
base_prompt=base_prompt,
|
|
459
476
|
append_system_prompt=append_system_prompt,
|
|
@@ -467,12 +484,6 @@ class LoopGraphBuilder:
|
|
|
467
484
|
self._built_in_tools = []
|
|
468
485
|
self._available_tools = list(self._loader_tools)
|
|
469
486
|
|
|
470
|
-
if not self._config.subagent.is_subagent:
|
|
471
|
-
append_system_prompt, system_message = self._apply_explore_guidance(
|
|
472
|
-
append_system_prompt=append_system_prompt,
|
|
473
|
-
base_prompt=base_prompt,
|
|
474
|
-
)
|
|
475
|
-
|
|
476
487
|
# 使用已有的 config(frozen,不可修改),但需要添加运行时计算的值
|
|
477
488
|
# 运行时需要的额外值存储在 self._* 字段中
|
|
478
489
|
|
|
@@ -553,17 +564,21 @@ class LoopGraphBuilder:
|
|
|
553
564
|
model=model,
|
|
554
565
|
session_store=session_store,
|
|
555
566
|
session_id=session_id or "",
|
|
567
|
+
trace_collector=collector,
|
|
568
|
+
)
|
|
569
|
+
self._memory_prefetch_coordinator = self._build_memory_prefetch_coordinator(
|
|
570
|
+
model=model,
|
|
571
|
+
session_store=session_store,
|
|
556
572
|
)
|
|
557
573
|
self._hook_graph_wiring = HookGraphWiring(
|
|
558
574
|
hook_engine,
|
|
559
575
|
trace_lifecycle_collector=trace_lifecycle_collector,
|
|
560
576
|
session_memory=self._session_memory_manager,
|
|
561
577
|
memory_extractor=memory_extractor,
|
|
562
|
-
|
|
578
|
+
memory_prefetch_coordinator=self._memory_prefetch_coordinator,
|
|
563
579
|
workspace_cfg=self._workspace_cfg,
|
|
564
580
|
session_id=session_id or "",
|
|
565
581
|
container_type=container_type,
|
|
566
|
-
subagent_type=self._config.subagent.subagent_type,
|
|
567
582
|
post_sample_hook=PostSampleHook(memory_extractor=memory_extractor),
|
|
568
583
|
)
|
|
569
584
|
if self._config.trace.enabled:
|
|
@@ -632,8 +647,17 @@ class LoopGraphBuilder:
|
|
|
632
647
|
if self._services.prompt_handler is not None:
|
|
633
648
|
loader.set_prompt_handler(self._services.prompt_handler)
|
|
634
649
|
|
|
635
|
-
def _setup_loader_tools(
|
|
650
|
+
def _setup_loader_tools(
|
|
651
|
+
self,
|
|
652
|
+
*,
|
|
653
|
+
session_store: Any | None = None,
|
|
654
|
+
model: Any | None = None,
|
|
655
|
+
schema_cache_namespace: str | None = None,
|
|
656
|
+
) -> None:
|
|
636
657
|
self._loader_tools = []
|
|
658
|
+
self._runtime_tools = []
|
|
659
|
+
self._tool_prompt_ctx = None
|
|
660
|
+
self._enabled_tool_names = frozenset()
|
|
637
661
|
self._skill_runtime_tool = None
|
|
638
662
|
self._loop_loader = None
|
|
639
663
|
if self._services.loader is not None:
|
|
@@ -653,20 +677,76 @@ class LoopGraphBuilder:
|
|
|
653
677
|
for tool in self._services.loader.registry.list():
|
|
654
678
|
if tool.name not in self._loop_loader.registry._tools:
|
|
655
679
|
self._loop_loader.register(tool)
|
|
656
|
-
self.
|
|
657
|
-
|
|
680
|
+
self._runtime_tools = self._loop_loader.registry.list()
|
|
681
|
+
from ...loop.prompt.tool_aware_sections import collect_enabled_tool_names
|
|
682
|
+
|
|
683
|
+
self._enabled_tool_names = collect_enabled_tool_names(self._runtime_tools)
|
|
684
|
+
self._tool_prompt_ctx = self._build_tool_prompt_context(
|
|
685
|
+
session_store=session_store,
|
|
686
|
+
model=model,
|
|
687
|
+
schema_cache_namespace=schema_cache_namespace,
|
|
688
|
+
)
|
|
689
|
+
self._loader_tools = self._loop_loader.registry.to_langchain_tools(
|
|
690
|
+
prompt_ctx=self._tool_prompt_ctx,
|
|
691
|
+
)
|
|
692
|
+
for rt in self._runtime_tools:
|
|
658
693
|
if self._skill_runtime_tool is None and rt.__class__.__name__ == "SkillRuntimeTool":
|
|
659
694
|
self._skill_runtime_tool = rt
|
|
660
695
|
|
|
696
|
+
def _resolve_policy_config(self) -> Any | None:
|
|
697
|
+
loader = self._loop_loader or self._services.loader
|
|
698
|
+
if loader is None:
|
|
699
|
+
return None
|
|
700
|
+
policy_cfg = getattr(loader, "policy_config", None)
|
|
701
|
+
if policy_cfg is None and hasattr(loader, "_process"):
|
|
702
|
+
policy_cfg = getattr(loader._process, "policy_config", None)
|
|
703
|
+
return policy_cfg
|
|
704
|
+
|
|
705
|
+
def _snapshot_permission_context(
|
|
706
|
+
self,
|
|
707
|
+
*,
|
|
708
|
+
session_store: Any | None = None,
|
|
709
|
+
) -> Any:
|
|
710
|
+
from ...tool_runtime.permission_snapshot import build_permission_snapshot
|
|
711
|
+
|
|
712
|
+
return build_permission_snapshot(
|
|
713
|
+
permission_mode=self._config.permission_mode,
|
|
714
|
+
policy_config=self._resolve_policy_config(),
|
|
715
|
+
session_store=session_store,
|
|
716
|
+
)
|
|
717
|
+
|
|
718
|
+
def _build_tool_prompt_context(
|
|
719
|
+
self,
|
|
720
|
+
*,
|
|
721
|
+
session_store: Any | None = None,
|
|
722
|
+
model: Any | None = None,
|
|
723
|
+
schema_cache_namespace: str | None = None,
|
|
724
|
+
) -> Any:
|
|
725
|
+
from ...tool_runtime.prompt_context import build_tool_prompt_context
|
|
726
|
+
|
|
727
|
+
resolved_model = model if model is not None else self._config.model
|
|
728
|
+
model_name = getattr(resolved_model, "model_name", None)
|
|
729
|
+
return build_tool_prompt_context(
|
|
730
|
+
runtime_tools=self._runtime_tools,
|
|
731
|
+
enabled_tool_names=self._enabled_tool_names,
|
|
732
|
+
permission_snapshot=self._snapshot_permission_context(session_store=session_store),
|
|
733
|
+
workspace_cfg=getattr(self, "_workspace_cfg", None),
|
|
734
|
+
headless=self._config.headless,
|
|
735
|
+
model_name=model_name,
|
|
736
|
+
schema_cache_namespace=schema_cache_namespace,
|
|
737
|
+
)
|
|
738
|
+
|
|
661
739
|
def _build_memory_extraction_coordinator(
|
|
662
740
|
self,
|
|
663
741
|
*,
|
|
664
742
|
model: Any,
|
|
665
743
|
session_store: Any,
|
|
666
744
|
session_id: str,
|
|
745
|
+
trace_collector: Any | None = None,
|
|
667
746
|
) -> MemoryExtractionCoordinator:
|
|
668
747
|
from ..subagent.context import ForkedParentRuntime
|
|
669
748
|
from ..subagent.forked_runner import ForkedAgentRunner
|
|
749
|
+
from ...memory.memdir.extractor import build_trace_memory_saved_callback
|
|
670
750
|
|
|
671
751
|
if (
|
|
672
752
|
self._is_subagent
|
|
@@ -689,6 +769,7 @@ class LoopGraphBuilder:
|
|
|
689
769
|
capabilities=self._services.capabilities,
|
|
690
770
|
cwd=runtime_cwd,
|
|
691
771
|
)
|
|
772
|
+
from ...memory.memdir.fork_concurrency import default_fork_concurrency_limiter
|
|
692
773
|
from ...memory.memdir.metrics import default_memory_fork_metrics
|
|
693
774
|
|
|
694
775
|
metrics = default_memory_fork_metrics()
|
|
@@ -696,9 +777,100 @@ class LoopGraphBuilder:
|
|
|
696
777
|
forked_runner=ForkedAgentRunner(
|
|
697
778
|
parent_runtime=parent_runtime,
|
|
698
779
|
metrics=metrics,
|
|
780
|
+
concurrency_limiter=default_fork_concurrency_limiter(),
|
|
699
781
|
),
|
|
700
782
|
metrics=metrics,
|
|
783
|
+
on_memory_saved=build_trace_memory_saved_callback(trace_collector, session_id),
|
|
784
|
+
)
|
|
785
|
+
|
|
786
|
+
def _build_session_memory_extractor(
|
|
787
|
+
self,
|
|
788
|
+
*,
|
|
789
|
+
model: Any,
|
|
790
|
+
session_store: Any,
|
|
791
|
+
session_id: str,
|
|
792
|
+
session_memory_path: Any,
|
|
793
|
+
base_prompt: str,
|
|
794
|
+
) -> Any | None:
|
|
795
|
+
"""为 L3 Session Memory 组装 Fork 抽取器(对齐 memdir coordinator 构造)。"""
|
|
796
|
+
from pathlib import Path as StdPath
|
|
797
|
+
|
|
798
|
+
from ..subagent.context import ForkedParentRuntime
|
|
799
|
+
from ..subagent.forked_runner import ForkedAgentRunner
|
|
800
|
+
from ...memory.memdir.fork_concurrency import default_fork_concurrency_limiter
|
|
801
|
+
from ...memory.session.extractor import SessionMemoryExtractor
|
|
802
|
+
|
|
803
|
+
if self._services.loader is None or self._loop_loader is None:
|
|
804
|
+
return None
|
|
805
|
+
|
|
806
|
+
runtime_cwd = str(self._config.workspace.runtime_cwd or self._workspace_root)
|
|
807
|
+
parent_runtime = ForkedParentRuntime(
|
|
808
|
+
session_store=session_store,
|
|
809
|
+
tool_registry=self._loop_loader.registry,
|
|
810
|
+
tool_loader=self._services.loader,
|
|
811
|
+
model=model,
|
|
812
|
+
workspace_root=str(self._workspace_root),
|
|
813
|
+
agent_home_segment=self._workspace_cfg.agent_home_segment,
|
|
814
|
+
parent_run_id=session_id or None,
|
|
815
|
+
parent_conversation_session_id=session_id or None,
|
|
816
|
+
system_prompt=base_prompt,
|
|
817
|
+
capabilities=self._services.capabilities,
|
|
818
|
+
cwd=runtime_cwd,
|
|
819
|
+
)
|
|
820
|
+
forked_runner = ForkedAgentRunner(
|
|
821
|
+
parent_runtime=parent_runtime,
|
|
822
|
+
concurrency_limiter=default_fork_concurrency_limiter(),
|
|
823
|
+
)
|
|
824
|
+
return SessionMemoryExtractor(
|
|
825
|
+
forked_runner=forked_runner,
|
|
826
|
+
parent_runtime=parent_runtime,
|
|
827
|
+
session_memory_path=StdPath(session_memory_path),
|
|
828
|
+
)
|
|
829
|
+
|
|
830
|
+
def _build_memory_prefetch_coordinator(
|
|
831
|
+
self,
|
|
832
|
+
*,
|
|
833
|
+
model: Any,
|
|
834
|
+
session_store: Any,
|
|
835
|
+
) -> Any | None:
|
|
836
|
+
from ...memory.memdir.gate import is_memory_prefetch_enabled
|
|
837
|
+
from ...memory.memdir.prefetch import MemoryPrefetchCoordinator
|
|
838
|
+
from ...memory.memdir.recall_service import MemoryRecallService
|
|
839
|
+
|
|
840
|
+
if self._is_subagent or not is_memory_enabled(self._workspace_cfg):
|
|
841
|
+
return None
|
|
842
|
+
if not is_memory_prefetch_enabled(self._workspace_cfg):
|
|
843
|
+
return None
|
|
844
|
+
recall_service = MemoryRecallService(
|
|
845
|
+
workspace_cfg=self._workspace_cfg,
|
|
846
|
+
model=model,
|
|
701
847
|
)
|
|
848
|
+
return MemoryPrefetchCoordinator(
|
|
849
|
+
recall_service=recall_service,
|
|
850
|
+
workspace_cfg=self._workspace_cfg,
|
|
851
|
+
session_store=session_store,
|
|
852
|
+
)
|
|
853
|
+
|
|
854
|
+
def _consume_memory_prefetch_attachment_messages(self, state: dict[str, Any]) -> list[dict[str, Any]]:
|
|
855
|
+
coordinator = self._memory_prefetch_coordinator
|
|
856
|
+
if coordinator is None:
|
|
857
|
+
return []
|
|
858
|
+
iteration = int(state.get("turn_count", 0) or 0)
|
|
859
|
+
return coordinator.consume_attachment_messages(state, iteration=iteration)
|
|
860
|
+
|
|
861
|
+
def _patch_messages_with_memory_prefetch(
|
|
862
|
+
self,
|
|
863
|
+
state: dict[str, Any],
|
|
864
|
+
patch: dict[str, Any],
|
|
865
|
+
) -> dict[str, Any]:
|
|
866
|
+
memory_attachments = self._consume_memory_prefetch_attachment_messages(state)
|
|
867
|
+
if not memory_attachments:
|
|
868
|
+
return patch
|
|
869
|
+
messages = list(patch.get("messages") or state.get("messages") or [])
|
|
870
|
+
messages.extend(memory_attachments)
|
|
871
|
+
patch = dict(patch)
|
|
872
|
+
patch["messages"] = messages
|
|
873
|
+
return patch
|
|
702
874
|
|
|
703
875
|
def _resolve_workspace_config(self) -> None:
|
|
704
876
|
raw_workspace_root = self._config.workspace.workspace_root
|
|
@@ -803,28 +975,6 @@ class LoopGraphBuilder:
|
|
|
803
975
|
structured_output_tools[structured_tool_info.tool.name] = structured_tool_info
|
|
804
976
|
return initial_response_format, tool_strategy_for_setup, structured_output_tools
|
|
805
977
|
|
|
806
|
-
def _apply_explore_guidance(
|
|
807
|
-
self,
|
|
808
|
-
*,
|
|
809
|
-
append_system_prompt: str | None,
|
|
810
|
-
base_prompt: str | None,
|
|
811
|
-
) -> tuple[str | None, SystemMessage | None]:
|
|
812
|
-
explore_guidance = build_explore_plan_guidance(self._available_tools)
|
|
813
|
-
if not explore_guidance:
|
|
814
|
-
return append_system_prompt, self._build_system_message(
|
|
815
|
-
base_prompt=base_prompt,
|
|
816
|
-
append_system_prompt=append_system_prompt,
|
|
817
|
-
)
|
|
818
|
-
updated_append_prompt = (
|
|
819
|
-
f"{append_system_prompt}\n\n{explore_guidance}"
|
|
820
|
-
if append_system_prompt
|
|
821
|
-
else explore_guidance
|
|
822
|
-
)
|
|
823
|
-
return updated_append_prompt, self._build_system_message(
|
|
824
|
-
base_prompt=base_prompt,
|
|
825
|
-
append_system_prompt=updated_append_prompt,
|
|
826
|
-
)
|
|
827
|
-
|
|
828
978
|
def _build_tool_node(self) -> Any:
|
|
829
979
|
self._prepare_compile_context()
|
|
830
980
|
need_tool_node = bool(self._available_tools)
|
|
@@ -870,7 +1020,7 @@ class LoopGraphBuilder:
|
|
|
870
1020
|
model = self._model
|
|
871
1021
|
if self._config.enable_tool_call_degradation_fix and not isinstance(model, ToolCallDegradationCorrector):
|
|
872
1022
|
allowed_tool_names = _build_allowed_tool_names_for_degradation_correction(
|
|
873
|
-
|
|
1023
|
+
enabled_tool_names=set(self._enabled_tool_names),
|
|
874
1024
|
built_in_tools=self._built_in_tools,
|
|
875
1025
|
structured_output_tools=self._structured_output_tools,
|
|
876
1026
|
)
|
|
@@ -1066,7 +1216,10 @@ class LoopGraphBuilder:
|
|
|
1066
1216
|
loop_entry_node = "hook_before_model"
|
|
1067
1217
|
raw_loop_entry_node = "hook_before_model"
|
|
1068
1218
|
provider_chain, has_skill_tool = self._build_provider_chain(tool_node)
|
|
1069
|
-
|
|
1219
|
+
wire_task_event_nodes = bool(provider_chain) or (
|
|
1220
|
+
self._memory_prefetch_coordinator is not None and tool_node is not None
|
|
1221
|
+
)
|
|
1222
|
+
if wire_task_event_nodes:
|
|
1070
1223
|
loop_entry_node = self._wire_task_event_nodes(
|
|
1071
1224
|
graph_inner=graph_inner,
|
|
1072
1225
|
provider_chain=provider_chain,
|
|
@@ -1092,6 +1245,7 @@ class LoopGraphBuilder:
|
|
|
1092
1245
|
"loop_exit_node": "model",
|
|
1093
1246
|
"exit_node": "hook_loop_end",
|
|
1094
1247
|
"provider_chain": provider_chain,
|
|
1248
|
+
"wire_task_event_nodes": wire_task_event_nodes,
|
|
1095
1249
|
}
|
|
1096
1250
|
|
|
1097
1251
|
def _build_provider_chain(self, tool_node: Any) -> tuple[list[QueuedCommandProvider], bool]:
|
|
@@ -1241,11 +1395,14 @@ class LoopGraphBuilder:
|
|
|
1241
1395
|
"agent_id": event.scope.agent_id,
|
|
1242
1396
|
}
|
|
1243
1397
|
)
|
|
1244
|
-
return
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1398
|
+
return self._patch_messages_with_memory_prefetch(
|
|
1399
|
+
state,
|
|
1400
|
+
{
|
|
1401
|
+
"pending_task_batch_id": None,
|
|
1402
|
+
"pending_task_command_ids": [],
|
|
1403
|
+
"task_events": task_events,
|
|
1404
|
+
},
|
|
1405
|
+
)
|
|
1249
1406
|
messages = list(state.get("messages") or [])
|
|
1250
1407
|
# 冻结契约:task 通知附件仅经本节点注入;按 command_id 与已有 messages 去重
|
|
1251
1408
|
# (见 docs/design-docs/loop/agent-loop/post-tools-injection-contract.md)
|
|
@@ -1309,14 +1466,17 @@ class LoopGraphBuilder:
|
|
|
1309
1466
|
"agent_id": event.scope.agent_id,
|
|
1310
1467
|
}
|
|
1311
1468
|
)
|
|
1312
|
-
return
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1469
|
+
return self._patch_messages_with_memory_prefetch(
|
|
1470
|
+
state,
|
|
1471
|
+
{
|
|
1472
|
+
"messages": messages,
|
|
1473
|
+
"pending_task_batch_id": encode_provider_batch_id(
|
|
1474
|
+
provider_index, batch.batch_id
|
|
1475
|
+
),
|
|
1476
|
+
"pending_task_command_ids": list(batch.command_ids),
|
|
1477
|
+
"task_events": task_events,
|
|
1478
|
+
},
|
|
1479
|
+
)
|
|
1320
1480
|
except Exception:
|
|
1321
1481
|
if batch is not None and batch.batch_id:
|
|
1322
1482
|
if 0 <= provider_index < len(provider_chain):
|
|
@@ -1415,6 +1575,7 @@ class LoopGraphBuilder:
|
|
|
1415
1575
|
loop_exit_node = routing["loop_exit_node"]
|
|
1416
1576
|
exit_node = routing["exit_node"]
|
|
1417
1577
|
provider_chain = routing["provider_chain"]
|
|
1578
|
+
wire_task_event_nodes = routing["wire_task_event_nodes"]
|
|
1418
1579
|
if tool_node is not None:
|
|
1419
1580
|
self._wire_main_edges_with_tools(
|
|
1420
1581
|
graph_inner=graph_inner,
|
|
@@ -1423,6 +1584,7 @@ class LoopGraphBuilder:
|
|
|
1423
1584
|
loop_exit_node=loop_exit_node,
|
|
1424
1585
|
exit_node=exit_node,
|
|
1425
1586
|
provider_chain=provider_chain,
|
|
1587
|
+
wire_task_event_nodes=wire_task_event_nodes,
|
|
1426
1588
|
)
|
|
1427
1589
|
return
|
|
1428
1590
|
if len(self._structured_output_tools) > 0:
|
|
@@ -1446,8 +1608,9 @@ class LoopGraphBuilder:
|
|
|
1446
1608
|
loop_exit_node: str,
|
|
1447
1609
|
exit_node: str,
|
|
1448
1610
|
provider_chain: list[QueuedCommandProvider],
|
|
1611
|
+
wire_task_event_nodes: bool,
|
|
1449
1612
|
) -> None:
|
|
1450
|
-
if
|
|
1613
|
+
if wire_task_event_nodes:
|
|
1451
1614
|
tools_model_destination = loop_entry_node
|
|
1452
1615
|
tools_to_model_destinations = [loop_entry_node, exit_node]
|
|
1453
1616
|
else:
|
|
@@ -1467,7 +1630,7 @@ class LoopGraphBuilder:
|
|
|
1467
1630
|
),
|
|
1468
1631
|
tools_to_model_destinations,
|
|
1469
1632
|
)
|
|
1470
|
-
if not
|
|
1633
|
+
if not wire_task_event_nodes:
|
|
1471
1634
|
graph_inner.add_edge("prune_and_compress", loop_entry_node)
|
|
1472
1635
|
graph_inner.add_edge(loop_exit_node, "hook_after_model")
|
|
1473
1636
|
graph_inner.add_edge("hook_after_model", "hook_stop")
|
|
@@ -1494,7 +1657,7 @@ class LoopGraphBuilder:
|
|
|
1494
1657
|
)
|
|
1495
1658
|
|
|
1496
1659
|
loop_controller_destinations = ["tools", loop_entry_node, exit_node, "reactive_compact"]
|
|
1497
|
-
if
|
|
1660
|
+
if wire_task_event_nodes and "task_event_commit_ack" not in loop_controller_destinations:
|
|
1498
1661
|
loop_controller_destinations.append("task_event_commit_ack")
|
|
1499
1662
|
graph_inner.add_conditional_edges(
|
|
1500
1663
|
"loop_controller",
|