langchain-agentx-python 0.8.6__tar.gz → 0.9.0__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.
Files changed (564) hide show
  1. {langchain-agentx-python-0.8.6/langchain_agentx_python.egg-info → langchain-agentx-python-0.9.0}/PKG-INFO +1 -1
  2. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/__init__.py +1 -1
  3. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/config/loop_config.py +68 -10
  4. langchain-agentx-python-0.9.0/langchain_agentx/loop/config/tool_execution_engine_resolver.py +52 -0
  5. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/graph/builtin_loop_control.py +10 -3
  6. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/graph/factory.py +42 -31
  7. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/graph/graph_edges.py +42 -20
  8. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/graph/runtime_tools_node.py +26 -5
  9. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/model_node.py +41 -4
  10. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/context.py +18 -1
  11. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/graph.py +1 -0
  12. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/orchestrator.py +126 -31
  13. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/adapter.py +37 -2
  14. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/base.py +38 -5
  15. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/execution/__init__.py +17 -1
  16. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/appliers/__init__.py +13 -0
  17. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/appliers/auto_approved.py +78 -0
  18. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/appliers/effort_override.py +84 -0
  19. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/appliers/model_override.py +84 -0
  20. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/appliers/set_cwd.py +87 -0
  21. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/appliers/stubs.py +48 -0
  22. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/callback_bridge.py +185 -0
  23. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/execution/engine.py +247 -16
  24. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/execution/message_adapter.py +13 -1
  25. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/execution/models.py +30 -5
  26. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/execution/parity.py +2 -2
  27. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/payload_validator.py +55 -0
  28. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/policy.py +35 -0
  29. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/side_effect_collector.py +56 -0
  30. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/execution/side_effect_merge.py +77 -0
  31. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/loader.py +7 -2
  32. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/loop_runtime_context.py +111 -0
  33. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/models.py +10 -0
  34. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/permission_context.py +37 -0
  35. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/pipeline.py +28 -2
  36. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/prompt/session_mode.py +59 -0
  37. langchain-agentx-python-0.9.0/langchain_agentx/tool_runtime/session_hints.py +96 -0
  38. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/state_bridge.py +17 -0
  39. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/builtin_subagent_loader.py +5 -1
  40. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/scope.py +40 -1
  41. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/backend.py +11 -83
  42. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/bash_runtime_contract.py +3 -7
  43. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/models.py +6 -0
  44. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/prompt.py +2 -2
  45. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/tool.py +29 -11
  46. langchain-agentx-python-0.9.0/langchain_agentx/tools/skill/fork.py +117 -0
  47. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/models.py +4 -0
  48. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/tool.py +182 -21
  49. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/view.py +17 -0
  50. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0/langchain_agentx_python.egg-info}/PKG-INFO +1 -1
  51. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx_python.egg-info/SOURCES.txt +13 -2
  52. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/pyproject.toml +2 -1
  53. langchain-agentx-python-0.8.6/langchain_agentx/tool_runtime/execution/callback_bridge.py +0 -109
  54. langchain-agentx-python-0.8.6/langchain_agentx/tool_runtime/execution/policy.py +0 -51
  55. langchain-agentx-python-0.8.6/langchain_agentx/tool_runtime/prompt/session_mode.py +0 -28
  56. langchain-agentx-python-0.8.6/langchain_agentx/tools/bash/session_manager.py +0 -205
  57. langchain-agentx-python-0.8.6/langchain_agentx/tools/bash/session_runtime.py +0 -291
  58. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/LICENSE +0 -0
  59. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/README.md +0 -0
  60. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/__init__.py +0 -0
  61. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/builtin/__init__.py +0 -0
  62. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/builtin/clear.py +0 -0
  63. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/builtin/compact.py +0 -0
  64. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/builtin/memory.py +0 -0
  65. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
  66. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/context.py +0 -0
  67. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/dispatcher.py +0 -0
  68. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/registry.py +0 -0
  69. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/result.py +0 -0
  70. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/command/types.py +0 -0
  71. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/config/__init__.py +0 -0
  72. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/config/model_profiles.yaml +0 -0
  73. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/config/model_profiles.yaml.example +0 -0
  74. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/health/__init__.py +0 -0
  75. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/health/checks.py +0 -0
  76. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/health/models.py +0 -0
  77. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/health/preflight.py +0 -0
  78. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/__init__.py +0 -0
  79. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/benchmark_frozen_config.py +0 -0
  80. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/config/__init__.py +0 -0
  81. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/config/agent_config.py +0 -0
  82. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
  83. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/config/runtime_settings.py +0 -0
  84. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/config/token_estimator.py +0 -0
  85. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/__init__.py +0 -0
  86. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/blocking_guard.py +0 -0
  87. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/compaction_service.py +0 -0
  88. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/message_utils.py +0 -0
  89. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/pipeline.py +0 -0
  90. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/settings.py +0 -0
  91. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/__init__.py +0 -0
  92. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
  93. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/base.py +0 -0
  94. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/collapse.py +0 -0
  95. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
  96. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/noop.py +0 -0
  97. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/snip.py +0 -0
  98. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
  99. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/context/types.py +0 -0
  100. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/exit/__init__.py +0 -0
  101. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/exit/exit_logic.py +0 -0
  102. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/exit/reason_codes.py +0 -0
  103. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/graph/__init__.py +0 -0
  104. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/__init__.py +0 -0
  105. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
  106. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/config.py +0 -0
  107. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/engine.py +0 -0
  108. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
  109. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/executors/agent.py +0 -0
  110. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/executors/command.py +0 -0
  111. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/executors/http.py +0 -0
  112. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
  113. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/graph_wiring.py +0 -0
  114. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/hook_projection.py +0 -0
  115. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/registry.py +0 -0
  116. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/trust.py +0 -0
  117. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/hook/types.py +0 -0
  118. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/injection/__init__.py +0 -0
  119. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/injection/dedup.py +0 -0
  120. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/loop_abort.py +0 -0
  121. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/__init__.py +0 -0
  122. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/model_nodes.py +0 -0
  123. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
  124. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/retrier.py +0 -0
  125. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/retry_bridge.py +0 -0
  126. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/retry_events.py +0 -0
  127. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/retry_policy.py +0 -0
  128. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/schema_and_format.py +0 -0
  129. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
  130. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
  131. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
  132. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/prompt/__init__.py +0 -0
  133. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/prompt/builder.py +0 -0
  134. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/prompt/builtin.py +0 -0
  135. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/prompt/compact.py +0 -0
  136. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/prompt/sections.py +0 -0
  137. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/prompt/session_context.py +0 -0
  138. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/runtime/__init__.py +0 -0
  139. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/runtime/context.py +0 -0
  140. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/runtime/context_factory.py +0 -0
  141. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
  142. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/__init__.py +0 -0
  143. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/async_runner.py +0 -0
  144. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
  145. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/progress.py +0 -0
  146. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/prompt.py +0 -0
  147. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/runner.py +0 -0
  148. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/loop/subagent/transcript.py +0 -0
  149. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/__init__.py +0 -0
  150. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/instruction/__init__.py +0 -0
  151. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/instruction/loader.py +0 -0
  152. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/instruction/resolver.py +0 -0
  153. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/instruction/runtime.py +0 -0
  154. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/instruction/sections.py +0 -0
  155. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/instruction/types.py +0 -0
  156. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/__init__.py +0 -0
  157. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/age.py +0 -0
  158. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
  159. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/extractor.py +0 -0
  160. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/loader.py +0 -0
  161. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/paths.py +0 -0
  162. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/recall.py +0 -0
  163. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/runtime.py +0 -0
  164. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/scan.py +0 -0
  165. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/memdir/types.py +0 -0
  166. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/session/__init__.py +0 -0
  167. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/session/compact_bridge.py +0 -0
  168. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/session/prompts.py +0 -0
  169. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/memory/session/session_memory.py +0 -0
  170. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/__init__.py +0 -0
  171. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/__init__.py +0 -0
  172. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
  173. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
  174. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
  175. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
  176. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
  177. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
  178. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
  179. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
  180. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/service.py +0 -0
  181. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/state.py +0 -0
  182. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/evaluation/store.py +0 -0
  183. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/events/__init__.py +0 -0
  184. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
  185. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/logging/__init__.py +0 -0
  186. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/logging/debug_burst.py +0 -0
  187. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/logging/logging_config.py +0 -0
  188. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/logging/logging_contract.py +0 -0
  189. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/replay/__init__.py +0 -0
  190. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/replay/cli.py +0 -0
  191. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/replay/service.py +0 -0
  192. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/replay/store.py +0 -0
  193. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/replay/ui.py +0 -0
  194. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/__init__.py +0 -0
  195. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/collector.py +0 -0
  196. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/event_emitter.py +0 -0
  197. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
  198. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/models.py +0 -0
  199. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
  200. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/trace_callback.py +0 -0
  201. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
  202. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/__init__.py +0 -0
  203. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/builtin.py +0 -0
  204. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/config.py +0 -0
  205. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/loader.py +0 -0
  206. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/manifest.py +0 -0
  207. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/registries.py +0 -0
  208. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/plugin/types.py +0 -0
  209. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/__init__.py +0 -0
  210. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/anthropic.py +0 -0
  211. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
  212. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/env.py +0 -0
  213. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/model_profile.py +0 -0
  214. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/openai.py +0 -0
  215. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/__init__.py +0 -0
  216. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/answer_assembler.py +0 -0
  217. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/contracts.py +0 -0
  218. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/__init__.py +0 -0
  219. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/anthropic.py +0 -0
  220. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/anthropic_codec.py +0 -0
  221. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/anthropic_interpreter.py +0 -0
  222. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/anthropic_normalizer.py +0 -0
  223. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/compatible_openai.py +0 -0
  224. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/compatible_openai_codec.py +0 -0
  225. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/compatible_openai_interpreter.py +0 -0
  226. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/compatible_openai_normalizer.py +0 -0
  227. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/openai.py +0 -0
  228. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/openai_codec.py +0 -0
  229. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/openai_interpreter.py +0 -0
  230. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/families/openai_normalizer.py +0 -0
  231. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/message_normalizer.py +0 -0
  232. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/profile.py +0 -0
  233. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/registry.py +0 -0
  234. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/request_codec.py +0 -0
  235. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/runtime.py +0 -0
  236. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/stream_normalizer.py +0 -0
  237. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/tool_call_interpreter.py +0 -0
  238. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/provider/semantics/turn_accumulator.py +0 -0
  239. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/__init__.py +0 -0
  240. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/agent_session.py +0 -0
  241. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/conversation_factory.py +0 -0
  242. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/conversation_recovery.py +0 -0
  243. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/conversation_session.py +0 -0
  244. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/factory.py +0 -0
  245. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/session/protocol.py +0 -0
  246. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/__init__.py +0 -0
  247. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/core/__init__.py +0 -0
  248. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/core/ids.py +0 -0
  249. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
  250. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
  251. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/core/types.py +0 -0
  252. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
  253. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
  254. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
  255. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
  256. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
  257. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
  258. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
  259. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
  260. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
  261. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
  262. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/output/__init__.py +0 -0
  263. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/output/sink.py +0 -0
  264. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
  265. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
  266. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
  267. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
  268. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
  269. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
  270. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
  271. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
  272. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/store/__init__.py +0 -0
  273. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
  274. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
  275. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
  276. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
  277. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
  278. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
  279. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
  280. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
  281. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
  282. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
  283. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
  284. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
  285. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
  286. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
  287. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
  288. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
  289. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
  290. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
  291. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
  292. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
  293. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
  294. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
  295. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
  296. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
  297. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
  298. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
  299. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
  300. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
  301. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
  302. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
  303. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
  304. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
  305. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
  306. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
  307. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
  308. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
  309. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
  310. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
  311. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
  312. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
  313. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
  314. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
  315. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
  316. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
  317. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
  318. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
  319. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
  320. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
  321. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
  322. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
  323. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
  324. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
  325. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
  326. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/__init__.py +0 -0
  327. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/__init__.py +0 -0
  328. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/allowlist.py +0 -0
  329. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/classifier/__init__.py +0 -0
  330. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/classifier/classifier.py +0 -0
  331. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/classifier/parser.py +0 -0
  332. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/classifier/prompt.py +0 -0
  333. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/classifier/schema.py +0 -0
  334. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/classifier/transcript.py +0 -0
  335. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/config.py +0 -0
  336. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/config_update.py +0 -0
  337. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/decision.py +0 -0
  338. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/events.py +0 -0
  339. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/factory.py +0 -0
  340. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/feedback.py +0 -0
  341. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/hook.py +0 -0
  342. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/rule_stripping.py +0 -0
  343. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/auto_mode/state.py +0 -0
  344. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/capabilities.py +0 -0
  345. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/errors.py +0 -0
  346. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/execution/planner.py +0 -0
  347. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/failure_event_emitter.py +0 -0
  348. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
  349. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/limits.py +0 -0
  350. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/loop_loader.py +0 -0
  351. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/messages.py +0 -0
  352. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/override.py +0 -0
  353. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/path_safety.py +0 -0
  354. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/permission_decision.py +0 -0
  355. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/policy.py +0 -0
  356. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/policy_decorator.py +0 -0
  357. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/process_loader.py +0 -0
  358. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/__init__.py +0 -0
  359. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/_abort.py +0 -0
  360. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/cli_interactive.py +0 -0
  361. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/handler.py +0 -0
  362. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/headless.py +0 -0
  363. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/legacy_resolver_adapter.py +0 -0
  364. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/messages.py +0 -0
  365. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/race.py +0 -0
  366. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/prompt/types.py +0 -0
  367. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/read_ignore_patterns.py +0 -0
  368. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/read_permission.py +0 -0
  369. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/registry.py +0 -0
  370. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
  371. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
  372. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
  373. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
  374. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
  375. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
  376. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/session_store.py +0 -0
  377. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/shell_error.py +0 -0
  378. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
  379. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tool_runtime/tool_message_status.py +0 -0
  380. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/__init__.py +0 -0
  381. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/__init__.py +0 -0
  382. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/backend.py +0 -0
  383. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
  384. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
  385. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
  386. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/general.py +0 -0
  387. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
  388. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
  389. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
  390. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
  391. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/limits.py +0 -0
  392. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/loader.py +0 -0
  393. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/models.py +0 -0
  394. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/prompt.py +0 -0
  395. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
  396. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/registry/config.py +0 -0
  397. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/registry/registry.py +0 -0
  398. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/agent/tool.py +0 -0
  399. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
  400. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
  401. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
  402. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/models.py +0 -0
  403. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
  404. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
  405. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
  406. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/__init__.py +0 -0
  407. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/ast_security.py +0 -0
  408. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/auto_mode_adapter.py +0 -0
  409. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
  410. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/boundary_check.py +0 -0
  411. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
  412. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/events.py +0 -0
  413. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/limits.py +0 -0
  414. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/mode_validation.py +0 -0
  415. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/observability.py +0 -0
  416. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/output_utils.py +0 -0
  417. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/path_security.py +0 -0
  418. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
  419. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/result_presenter.py +0 -0
  420. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
  421. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/security.py +0 -0
  422. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
  423. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/sed_validation.py +0 -0
  424. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/semantics.py +0 -0
  425. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/shell_locator.py +0 -0
  426. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/shell_quoting.py +0 -0
  427. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/task_runtime.py +0 -0
  428. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
  429. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/__init__.py +0 -0
  430. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/backend.py +0 -0
  431. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/diff_generator.py +0 -0
  432. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
  433. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/limits.py +0 -0
  434. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/models.py +0 -0
  435. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/prompt.py +0 -0
  436. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/quote_match.py +0 -0
  437. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
  438. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/settings_validator.py +0 -0
  439. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/staleness.py +0 -0
  440. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/tool.py +0 -0
  441. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/edit/validator.py +0 -0
  442. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/__init__.py +0 -0
  443. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/models.py +0 -0
  444. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/pagination.py +0 -0
  445. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/prompt.py +0 -0
  446. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
  447. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
  448. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/glob/tool.py +0 -0
  449. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/grep/__init__.py +0 -0
  450. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/grep/backend.py +0 -0
  451. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/grep/models.py +0 -0
  452. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/grep/prompt.py +0 -0
  453. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
  454. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/grep/tool.py +0 -0
  455. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/read/__init__.py +0 -0
  456. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/read/backend.py +0 -0
  457. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/read/limits.py +0 -0
  458. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/read/models.py +0 -0
  459. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/read/prompt.py +0 -0
  460. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/read/tool.py +0 -0
  461. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
  462. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/__init__.py +0 -0
  463. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
  464. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/loader.py +0 -0
  465. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/policy.py +0 -0
  466. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/skill/prompt.py +0 -0
  467. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_create/__init__.py +0 -0
  468. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_create/hooks.py +0 -0
  469. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_create/limits.py +0 -0
  470. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_create/models.py +0 -0
  471. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_create/prompt.py +0 -0
  472. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_create/tool.py +0 -0
  473. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_get/__init__.py +0 -0
  474. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_get/models.py +0 -0
  475. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_get/prompt.py +0 -0
  476. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_get/tool.py +0 -0
  477. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_list/__init__.py +0 -0
  478. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_list/models.py +0 -0
  479. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_list/prompt.py +0 -0
  480. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_list/tool.py +0 -0
  481. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_update/__init__.py +0 -0
  482. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_update/hooks.py +0 -0
  483. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_update/models.py +0 -0
  484. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_update/prompt.py +0 -0
  485. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/task_update/tool.py +0 -0
  486. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/user_message/__init__.py +0 -0
  487. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/user_message/attachments.py +0 -0
  488. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/user_message/models.py +0 -0
  489. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/user_message/prompt.py +0 -0
  490. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/user_message/runtime_config.py +0 -0
  491. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/user_message/tool.py +0 -0
  492. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/__init__.py +0 -0
  493. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/backend.py +0 -0
  494. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/limits.py +0 -0
  495. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/loader.py +0 -0
  496. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/models.py +0 -0
  497. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
  498. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/prompt.py +0 -0
  499. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/summary.py +0 -0
  500. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/webfetch/tool.py +0 -0
  501. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/__init__.py +0 -0
  502. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/backend.py +0 -0
  503. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/events.py +0 -0
  504. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/limits.py +0 -0
  505. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/loader.py +0 -0
  506. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/models.py +0 -0
  507. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/prompt.py +0 -0
  508. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/websearch/tool.py +0 -0
  509. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/__init__.py +0 -0
  510. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/backend.py +0 -0
  511. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/limits.py +0 -0
  512. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/models.py +0 -0
  513. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/prompt.py +0 -0
  514. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/tool.py +0 -0
  515. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/tools/write/validator.py +0 -0
  516. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/__init__.py +0 -0
  517. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/cwd.py +0 -0
  518. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/host_platform.py +0 -0
  519. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/path_hierarchy.py +0 -0
  520. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/path_user_input.py +0 -0
  521. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/rg_executable.py +0 -0
  522. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/subprocess_text.py +0 -0
  523. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/temp_paths.py +0 -0
  524. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/unc_path.py +0 -0
  525. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/utils/win_reserved_paths.py +0 -0
  526. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/__init__.py +0 -0
  527. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/base.py +0 -0
  528. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/batch.py +0 -0
  529. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/dag.py +0 -0
  530. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
  531. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
  532. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
  533. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
  534. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
  535. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
  536. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
  537. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
  538. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/event_adapter/types.py +0 -0
  539. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/node.py +0 -0
  540. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/patterns/__init__.py +0 -0
  541. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/patterns/chaining.py +0 -0
  542. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
  543. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
  544. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
  545. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/patterns/routing.py +0 -0
  546. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/runtime.py +0 -0
  547. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workflow/state.py +0 -0
  548. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/__init__.py +0 -0
  549. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/boundary.py +0 -0
  550. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/capabilities.py +0 -0
  551. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/config.py +0 -0
  552. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/errors.py +0 -0
  553. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/grant.py +0 -0
  554. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/l3_root_grant.py +0 -0
  555. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
  556. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/resolver.py +0 -0
  557. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/root_grant_manager.py +0 -0
  558. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/tool_boundary.py +0 -0
  559. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx/workspace/validators.py +0 -0
  560. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
  561. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
  562. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx_python.egg-info/requires.txt +0 -0
  563. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/langchain_agentx_python.egg-info/top_level.txt +0 -0
  564. {langchain-agentx-python-0.8.6 → langchain-agentx-python-0.9.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain-agentx-python
3
- Version: 0.8.6
3
+ Version: 0.9.0
4
4
  Summary: LangChain/LangGraph-based agent utilities for CodeBaseX.
5
5
  Author-email: GoodMood2008 <GoodMood2008@users.noreply.github.com>
6
6
  License: Apache License
@@ -11,7 +11,7 @@ from langchain_agentx import create_loop_agent
11
11
  ```
12
12
  """
13
13
 
14
- __version__ = "0.8.6"
14
+ __version__ = "0.9.0"
15
15
 
16
16
  from .loop import ( # noqa: F401
17
17
  create_loop_agent,
@@ -99,19 +99,77 @@ class SubagentLinkage:
99
99
  parent_agent_id: str | None = None
100
100
 
101
101
 
102
- @dataclass(frozen=True)
102
+ @dataclass(frozen=True, init=False)
103
103
  class ToolExecutionEngineConfig:
104
- """工具执行引擎模式(A20)。
104
+ """工具执行引擎并发配置(Phase B/C:仅 max_parallelism;CC env 对齐)。
105
+
106
+ 紧急全串行回滚:``max_parallelism=1``。
107
+ 省略 ``max_parallelism``(``None``)时由 env / 默认 10 解析,见
108
+ ``resolve_effective_max_parallelism`` 与 ``resolved_max_parallelism()``。
105
109
 
106
- mode:
107
- readonly_parallel — 默认;安全批受控并发(A20 Phase 5)
108
- serial_safe 新引擎全串行(保守灰度)
109
- toolnode — LangGraph ToolNode(长期回滚路径)
110
+ 优先级(Phase C):显式 ``max_parallelism`` > env
111
+ ``LANGCHAIN_AGENTX_MAX_TOOL_PARALLELISM`` >
112
+ ``CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`` > 默认 10(对齐 CC)。
110
113
  """
111
- mode: str = "readonly_parallel"
112
- max_parallelism: int = 4
113
- enable_parity_probe: bool = False
114
- fallback_to_toolnode: bool = True
114
+ max_parallelism: int | None
115
+ enable_parity_probe: bool
116
+
117
+ def __post_init__(self) -> None:
118
+ if self.max_parallelism is None:
119
+ return
120
+ if self.max_parallelism < 1:
121
+ raise ValueError(
122
+ f"tool_execution_engine.max_parallelism={self.max_parallelism!r} is invalid; "
123
+ "expected an integer >= 1."
124
+ )
125
+
126
+ def resolved_max_parallelism(self) -> int:
127
+ """effective max_parallelism(含 env 与默认值)。"""
128
+ from .tool_execution_engine_resolver import resolve_effective_max_parallelism
129
+
130
+ return resolve_effective_max_parallelism(self)
131
+
132
+ @classmethod
133
+ def _reject_legacy_mode_kwarg(cls, **kwargs: object) -> None:
134
+ """Phase B 迁移:旧 mode= 构造须显式改为 max_parallelism。"""
135
+ mode = kwargs.get("mode")
136
+ if mode is None:
137
+ return
138
+ normalized = str(mode).strip().lower()
139
+ if normalized == "toolnode":
140
+ raise ValueError(
141
+ "tool_execution_engine.mode='toolnode' was removed in v0.9.0; "
142
+ "use ToolExecutionEngineConfig(max_parallelism=1) for all-serial execution."
143
+ )
144
+ if normalized == "serial_safe":
145
+ raise ValueError(
146
+ "tool_execution_engine.mode='serial_safe' was removed in Phase B; "
147
+ "use ToolExecutionEngineConfig(max_parallelism=1)."
148
+ )
149
+ if normalized == "readonly_parallel":
150
+ raise ValueError(
151
+ "tool_execution_engine.mode='readonly_parallel' was removed in Phase B; "
152
+ "use ToolExecutionEngineConfig(max_parallelism=10) or omit for default."
153
+ )
154
+ raise ValueError(
155
+ f"tool_execution_engine.mode={mode!r} is invalid; "
156
+ "mode was removed — use max_parallelism only."
157
+ )
158
+
159
+ def __init__(
160
+ self,
161
+ max_parallelism: int | None = None,
162
+ enable_parity_probe: bool = False,
163
+ **kwargs: object,
164
+ ) -> None:
165
+ self._reject_legacy_mode_kwarg(**kwargs)
166
+ if kwargs:
167
+ raise TypeError(
168
+ f"ToolExecutionEngineConfig() got unexpected keyword arguments: {sorted(kwargs)!r}"
169
+ )
170
+ object.__setattr__(self, "max_parallelism", max_parallelism)
171
+ object.__setattr__(self, "enable_parity_probe", enable_parity_probe)
172
+ self.__post_init__()
115
173
 
116
174
 
117
175
  # ============================================================================
@@ -0,0 +1,52 @@
1
+ """tool_execution_engine_resolver.py — 工具并发 max_parallelism 解析(Phase C)
2
+
3
+ 职责:
4
+ 按优先级链解析 effective max_parallelism:显式 config > env > SDK 默认 10(对齐 CC)。
5
+
6
+ 链路位置:
7
+ LoopGraphBuilder._build_tool_node → resolve_effective_max_parallelism
8
+
9
+ CC 对照:
10
+ getMaxToolUseConcurrency() · CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY(默认 10)。
11
+
12
+ 当前裁剪范围:
13
+ 仅解析整数并发上限,不读取 enable_parity_probe。
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ from langchain_agentx.provider.env import get_env_first, parse_positive_int
19
+
20
+ from .loop_config import ToolExecutionEngineConfig
21
+
22
+ _DEFAULT_MAX_PARALLELISM = 10
23
+
24
+ _ENV_KEYS = (
25
+ "LANGCHAIN_AGENTX_MAX_TOOL_PARALLELISM",
26
+ "CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY",
27
+ )
28
+
29
+
30
+ def parse_env_max_tool_parallelism() -> int | None:
31
+ """读取 env 并发上限;SDK env 优先于 CC env。"""
32
+ raw = get_env_first(*_ENV_KEYS)
33
+ return parse_positive_int(raw)
34
+
35
+
36
+ def resolve_effective_max_parallelism(cfg: ToolExecutionEngineConfig) -> int:
37
+ """解析 effective max_parallelism(显式 config > env > 默认 10)。"""
38
+ if cfg.max_parallelism is not None:
39
+ return cfg.max_parallelism
40
+ env_val = parse_env_max_tool_parallelism()
41
+ if env_val is not None:
42
+ return env_val
43
+ return _DEFAULT_MAX_PARALLELISM
44
+
45
+
46
+ __all__ = [
47
+ "DEFAULT_MAX_TOOL_PARALLELISM",
48
+ "parse_env_max_tool_parallelism",
49
+ "resolve_effective_max_parallelism",
50
+ ]
51
+
52
+ DEFAULT_MAX_TOOL_PARALLELISM = _DEFAULT_MAX_PARALLELISM
@@ -22,7 +22,7 @@ from ..exit.reason_codes import (
22
22
  )
23
23
  from ..loop_abort import LoopAbortSignal
24
24
  from ..model.orphan_tool_results import synthetic_tool_messages_for_orphan_tool_calls
25
- from ...tool_runtime.permission_context import rotate_auto_approved_window
25
+ from ...tool_runtime.permission_context import clear_auto_approved_window
26
26
  from ...tool_runtime.tool_message_status import apply_tool_message_status_to_result
27
27
 
28
28
  logger = logging.getLogger(__name__)
@@ -52,7 +52,7 @@ class _LoopBuiltinModelControl:
52
52
  """内部单例:捕获模型侧的 ``LoopAbortSignal``。"""
53
53
 
54
54
  def wrap_model_call(self, request: Any, handler: Any) -> Any:
55
- rotate_auto_approved_window(_session_store_from_request(request))
55
+ clear_auto_approved_window(_session_store_from_request(request))
56
56
  try:
57
57
  return handler(request)
58
58
  except LoopAbortSignal as sig:
@@ -71,7 +71,7 @@ class _LoopBuiltinModelControl:
71
71
  )
72
72
 
73
73
  async def awrap_model_call(self, request: Any, handler: Any) -> Any:
74
- rotate_auto_approved_window(_session_store_from_request(request))
74
+ clear_auto_approved_window(_session_store_from_request(request))
75
75
  try:
76
76
  return await handler(request)
77
77
  except LoopAbortSignal as sig:
@@ -107,6 +107,13 @@ def _model_for_agent_tool(state: Any) -> Any | None:
107
107
  except Exception as exc:
108
108
  logger.debug("failed to fetch langgraph config for loop model: %s", exc)
109
109
  config = None
110
+ if isinstance(config, dict):
111
+ configurable = config.get("configurable", {}) or {}
112
+ from langchain_agentx.tool_runtime.loop_runtime_context import get_model_override
113
+
114
+ override = get_model_override(configurable.get("session_store"))
115
+ if override:
116
+ return override
110
117
  loop_config = config.get("configurable", {}).get("loop_config") if config else None
111
118
  model = getattr(loop_config, "model", None)
112
119
  if isinstance(model, str):
@@ -40,7 +40,6 @@ from langchain_core.runnables import RunnableConfig
40
40
  from langgraph._internal._runnable import RunnableCallable
41
41
  from langgraph.constants import END, START
42
42
  from langgraph.graph.state import StateGraph
43
- from langgraph.prebuilt.tool_node import ToolNode
44
43
  import asyncio
45
44
  import dataclasses
46
45
  import logging
@@ -169,10 +168,14 @@ def _sanity_check_config(
169
168
  检查失败立即报错或 warning。
170
169
  """
171
170
  # headless + prompt_handler 组合
171
+ effective_headless = infer_session_headless(
172
+ headless=config.headless,
173
+ container_type=config.container_type,
174
+ )
172
175
  if config.headless and services.prompt_handler is not None:
173
176
  # 允许:headless 仍可挂 hook 链,prompt_handler 在 race 入口被跳过
174
177
  pass
175
- if not config.headless and services.prompt_handler is None:
178
+ if not effective_headless and services.prompt_handler is None:
176
179
  # warning:非 headless 缺 UI 通道
177
180
  logger.warning(
178
181
  "headless=False but prompt_handler=None; "
@@ -772,33 +775,30 @@ class LoopGraphBuilder:
772
775
  def _build_tool_node(self) -> Any:
773
776
  self._prepare_compile_context()
774
777
  need_tool_node = bool(self._available_tools)
775
- tool_node: ToolNode | None = None
778
+ tool_node: Any | None = None
776
779
  if need_tool_node:
777
- engine_cfg = self._config.tool_execution_engine
778
- if engine_cfg.mode == "toolnode":
779
- tool_node = ToolNode(tools=self._available_tools)
780
- else:
781
- from .runtime_tools_node import RuntimeToolsNode
782
- from ...tool_runtime.execution import EngineConfig
780
+ from .runtime_tools_node import RuntimeToolsNode
781
+ from ...tool_runtime.execution import EngineConfig
782
+ from ..config.tool_execution_engine_resolver import resolve_effective_max_parallelism
783
783
 
784
- if self._loop_loader is None:
785
- raise RuntimeError(
786
- "serial_safe / readonly_parallel require loader with loop_loader"
787
- )
788
- process = self._loop_loader.process
789
- tool_node = RuntimeToolsNode(
790
- tools=self._available_tools,
791
- registry=self._loop_loader.registry,
792
- adapter=process.adapter,
793
- pipeline=process.pipeline,
794
- engine_config=EngineConfig(
795
- mode=engine_cfg.mode,
796
- max_parallelism=engine_cfg.max_parallelism,
797
- enable_parity_probe=engine_cfg.enable_parity_probe,
798
- fallback_to_toolnode=engine_cfg.fallback_to_toolnode,
799
- ),
800
- unknown_tool_error_template=DYNAMIC_TOOL_ERROR_TEMPLATE,
784
+ engine_cfg = self._config.tool_execution_engine
785
+ if self._loop_loader is None:
786
+ raise RuntimeError(
787
+ "RuntimeToolsNode requires loader with loop_loader"
801
788
  )
789
+ process = self._loop_loader.process
790
+ effective_max_parallelism = resolve_effective_max_parallelism(engine_cfg)
791
+ tool_node = RuntimeToolsNode(
792
+ tools=self._available_tools,
793
+ registry=self._loop_loader.registry,
794
+ adapter=process.adapter,
795
+ pipeline=process.pipeline,
796
+ engine_config=EngineConfig(
797
+ max_parallelism=effective_max_parallelism,
798
+ enable_parity_probe=engine_cfg.enable_parity_probe,
799
+ ),
800
+ unknown_tool_error_template=DYNAMIC_TOOL_ERROR_TEMPLATE,
801
+ )
802
802
  if self._trace_tool_callback_handler is not None:
803
803
  tool_node = tool_node.with_config(
804
804
  {"callbacks": [self._trace_tool_callback_handler]}
@@ -807,14 +807,17 @@ class LoopGraphBuilder:
807
807
 
808
808
  def _prepare_for_model_nodes(self, tool_node: Any) -> None:
809
809
  """在 make_model_nodes 之前设置 default_tools、模型包装与图节点所需字段。"""
810
- if tool_node:
811
- default_tools = list(tool_node.tools_by_name.values()) + self._built_in_tools
810
+ from .runtime_tools_node import resolve_runtime_tools_node
811
+
812
+ runtime_tools_node = resolve_runtime_tools_node(tool_node)
813
+ if runtime_tools_node:
814
+ default_tools = list(runtime_tools_node.tools_by_name.values()) + self._built_in_tools
812
815
  else:
813
816
  default_tools = list(self._built_in_tools)
814
817
  model = self._model
815
818
  if self._config.enable_tool_call_degradation_fix and not isinstance(model, ToolCallDegradationCorrector):
816
819
  allowed_tool_names = _build_allowed_tool_names_for_degradation_correction(
817
- tool_node=tool_node,
820
+ tool_node=runtime_tools_node,
818
821
  built_in_tools=self._built_in_tools,
819
822
  structured_output_tools=self._structured_output_tools,
820
823
  )
@@ -830,8 +833,11 @@ class LoopGraphBuilder:
830
833
 
831
834
  def _build_model_nodes(self, tool_node: Any) -> ModelNode:
832
835
  """构建 model 节点,返回 ModelNode(Runnable) 实例,供 LangGraph 直接注册。"""
836
+ from .runtime_tools_node import resolve_runtime_tools_node
837
+
833
838
  self._prepare_compile_context()
834
839
  self._prepare_for_model_nodes(tool_node)
840
+ runtime_tools_node = resolve_runtime_tools_node(tool_node)
835
841
  return ModelNode(
836
842
  model=self._model,
837
843
  default_tools=self._default_tools,
@@ -848,7 +854,7 @@ class LoopGraphBuilder:
848
854
  structured_output_tools=self._structured_output_tools,
849
855
  tool_strategy_for_setup=self._tool_strategy_for_setup,
850
856
  retrier=self._model_retrier,
851
- tool_node=tool_node,
857
+ tool_node=runtime_tools_node,
852
858
  dynamic_tool_error_template=DYNAMIC_TOOL_ERROR_TEMPLATE,
853
859
  fallback_model=self._config.fallback_model,
854
860
  llm_callback_handler=self._trace_callback_handler,
@@ -1036,8 +1042,13 @@ class LoopGraphBuilder:
1036
1042
  }
1037
1043
 
1038
1044
  def _build_provider_chain(self, tool_node: Any) -> tuple[list[QueuedCommandProvider], bool]:
1045
+ from .runtime_tools_node import resolve_runtime_tools_node
1046
+
1039
1047
  provider_chain: list[QueuedCommandProvider] = list(self._queued_command_providers)
1040
- has_skill_tool = bool(tool_node and SKILL_TOOL_NAME in tool_node.tools_by_name)
1048
+ runtime_tools_node = resolve_runtime_tools_node(tool_node)
1049
+ has_skill_tool = bool(
1050
+ runtime_tools_node and SKILL_TOOL_NAME in runtime_tools_node.tools_by_name
1051
+ )
1041
1052
  has_skill_prefetch_provider = any(
1042
1053
  isinstance(item, SkillPrefetchProvider) for item in provider_chain
1043
1054
  )
@@ -32,8 +32,7 @@ from langchain.agents.structured_output import OutputToolBinding
32
32
  from langchain_core.messages import AIMessage, AnyMessage, HumanMessage, ToolMessage
33
33
  from langgraph._internal._runnable import RunnableCallable
34
34
  from langgraph.graph.state import StateGraph
35
- from langgraph.prebuilt.tool_node import ToolCallWithContext, ToolNode
36
- from langgraph.types import Send
35
+ from langgraph.prebuilt.tool_node import ToolNode
37
36
  from ..hook.async_hook_runner import AsyncHookRunner
38
37
  from ..hook.hook_projection import hook_result_to_event_dict
39
38
  from ..hook.types import HookContext, HookEvent
@@ -225,7 +224,7 @@ class LoopControllerEdge:
225
224
  else DEFAULT_TOKEN_BUDGET_MAX_CONTINUATIONS
226
225
  )
227
226
 
228
- def __call__(self, state: dict[str, Any]) -> str | List[Send] | None:
227
+ def __call__(self, state: dict[str, Any]) -> str | None:
229
228
  jump_result = self._handle_jump(state)
230
229
  if jump_result is not None:
231
230
  return jump_result
@@ -605,7 +604,7 @@ class LoopControllerEdge:
605
604
  )
606
605
  return self._model_destination
607
606
 
608
- def _handle_continue(self, state: dict[str, Any]) -> str | List[Send]:
607
+ def _handle_continue(self, state: dict[str, Any]) -> str:
609
608
  last_ai_message, tool_messages = _fetch_last_ai_and_tool_messages(state["messages"])
610
609
  no_message_result = self._handle_missing_last_ai_message(state, last_ai_message)
611
610
  if no_message_result is not None:
@@ -654,28 +653,26 @@ class LoopControllerEdge:
654
653
  self,
655
654
  state: dict[str, Any],
656
655
  pending_tool_calls: list[dict[str, Any]],
657
- ) -> str | list[Send] | None:
656
+ ) -> str | None:
658
657
  if not pending_tool_calls:
659
658
  return None
660
- sends: list[Send] = []
661
659
  blocked_tool_messages: list[ToolMessage] = []
660
+ allowed_tool_calls: list[dict[str, Any]] = []
661
+ patched_by_id: dict[str, dict[str, Any]] = {}
662
662
  for tool_call in pending_tool_calls:
663
663
  hook_handled = self._prepare_single_tool_dispatch(state, tool_call)
664
664
  if hook_handled["blocked_message"] is not None:
665
665
  blocked_tool_messages.append(hook_handled["blocked_message"])
666
666
  continue
667
- sends.append(
668
- Send(
669
- self._tools_destination,
670
- ToolCallWithContext(
671
- __type="tool_call_with_context",
672
- tool_call=hook_handled["tool_call"],
673
- state=state,
674
- ),
675
- )
676
- )
667
+ allowed_tool_call = hook_handled["tool_call"]
668
+ allowed_tool_calls.append(allowed_tool_call)
669
+ tool_call_id = str(allowed_tool_call.get("id") or "")
670
+ if tool_call_id:
671
+ patched_by_id[tool_call_id] = allowed_tool_call
677
672
  if blocked_tool_messages:
678
673
  state["messages"] = list(state.get("messages") or []) + blocked_tool_messages
674
+ if patched_by_id:
675
+ _patch_last_ai_tool_calls(state, patched_by_id)
679
676
  emit_loop_decision_event(
680
677
  state=state,
681
678
  decision="tool_dispatch",
@@ -683,11 +680,14 @@ class LoopControllerEdge:
683
680
  reason_code="pending_tool_calls",
684
681
  evidence={
685
682
  "pending_count": len(pending_tool_calls),
683
+ "allowed_count": len(allowed_tool_calls),
686
684
  "tool_names": [c.get("name") for c in pending_tool_calls],
687
685
  "step": state.get("step", 0),
688
686
  },
689
687
  )
690
- return sends if sends else self._end_destination
688
+ if not allowed_tool_calls:
689
+ return self._end_destination
690
+ return self._tools_destination
691
691
 
692
692
  def _prepare_single_tool_dispatch(
693
693
  self,
@@ -751,6 +751,28 @@ class LoopControllerEdge:
751
751
  return self._task_reconcile_destination
752
752
 
753
753
 
754
+ def _patch_last_ai_tool_calls(
755
+ state: dict[str, Any],
756
+ patched_by_id: dict[str, dict[str, Any]],
757
+ ) -> None:
758
+ """将 PRE_TOOL_USE hook 改写后的 tool_call 写回最后一条 AIMessage。"""
759
+ messages = list(state.get("messages") or [])
760
+ for idx in range(len(messages) - 1, -1, -1):
761
+ msg = messages[idx]
762
+ if not isinstance(msg, AIMessage) or not msg.tool_calls:
763
+ continue
764
+ updated_tool_calls: list[Any] = []
765
+ for tool_call in msg.tool_calls:
766
+ if not isinstance(tool_call, dict):
767
+ updated_tool_calls.append(tool_call)
768
+ continue
769
+ tool_call_id = str(tool_call.get("id") or "")
770
+ updated_tool_calls.append(patched_by_id.get(tool_call_id, tool_call))
771
+ messages[idx] = msg.model_copy(update={"tool_calls": updated_tool_calls})
772
+ state["messages"] = messages
773
+ return
774
+
775
+
754
776
  def _make_loop_controller_edge(
755
777
  *,
756
778
  model_destination: str,
@@ -761,7 +783,7 @@ def _make_loop_controller_edge(
761
783
  task_reconcile_destination: str | None = None,
762
784
  has_pending_task_notifications: Callable[[dict[str, Any]], bool] | None = None,
763
785
  token_budget_max_continuations: int | None = None,
764
- ) -> Callable[[dict[str, Any]], str | List[Send] | None]:
786
+ ) -> Callable[[dict[str, Any]], str | None]:
765
787
  """LangChain AgentX 的 loop_controller 条件边工厂。"""
766
788
  return LoopControllerEdge(
767
789
  model_destination=model_destination,
@@ -779,12 +801,12 @@ def _make_model_to_model_edge(
779
801
  *,
780
802
  model_destination: str,
781
803
  end_destination: str,
782
- ) -> Callable[[dict[str, Any]], str | List[Send] | None]:
804
+ ) -> Callable[[dict[str, Any]], str | None]:
783
805
  """model → model/END 条件边,用于仅依赖结构化输出的场景。"""
784
806
 
785
807
  def model_to_model(
786
808
  state: dict[str, Any],
787
- ) -> str | List[Send] | None:
809
+ ) -> str | None:
788
810
  # 优先遵循中间件显式 jump_to 指令。
789
811
  if jump_to := state.get("jump_to"):
790
812
  return _resolve_jump(
@@ -15,7 +15,7 @@ from __future__ import annotations
15
15
 
16
16
  from typing import Any, MutableMapping
17
17
 
18
- from langchain_core.messages import AIMessage
18
+ from langchain_core.messages import AIMessage, ToolMessage
19
19
  from langchain_core.runnables import Runnable, RunnableConfig
20
20
  from langchain_core.tools import BaseTool
21
21
 
@@ -97,7 +97,7 @@ class RuntimeToolsNode(Runnable):
97
97
  state=state,
98
98
  config=config,
99
99
  )
100
- tool_messages = self._message_adapter.records_to_tool_messages(records)
100
+ tool_messages = self._message_adapter.records_to_graph_messages(records)
101
101
  return {"messages": tool_messages}
102
102
 
103
103
  async def _arun(
@@ -114,7 +114,7 @@ class RuntimeToolsNode(Runnable):
114
114
  state=state,
115
115
  config=config,
116
116
  )
117
- tool_messages = self._message_adapter.records_to_tool_messages(records)
117
+ tool_messages = self._message_adapter.records_to_graph_messages(records)
118
118
  return {"messages": tool_messages}
119
119
 
120
120
 
@@ -122,11 +122,32 @@ def _extract_tool_calls(
122
122
  state: MutableMapping[str, Any],
123
123
  ) -> tuple[AIMessage | None, list[dict[str, Any]]]:
124
124
  messages = list(state.get("messages") or [])
125
+ answered_ids = {
126
+ str(getattr(msg, "tool_call_id", ""))
127
+ for msg in messages
128
+ if isinstance(msg, ToolMessage) and getattr(msg, "tool_call_id", None)
129
+ }
125
130
  for msg in reversed(messages):
126
131
  if isinstance(msg, AIMessage) and msg.tool_calls:
127
- calls = [tc for tc in msg.tool_calls if isinstance(tc, dict)]
132
+ calls = [
133
+ tc
134
+ for tc in msg.tool_calls
135
+ if isinstance(tc, dict) and str(tc.get("id") or "") not in answered_ids
136
+ ]
128
137
  return msg, calls
129
138
  return None, []
130
139
 
131
140
 
132
- __all__ = ["RuntimeToolsNode"]
141
+ def resolve_runtime_tools_node(tool_node: Any) -> RuntimeToolsNode | None:
142
+ """从 with_config() 产生的 RunnableBinding 中解析 RuntimeToolsNode。"""
143
+ if tool_node is None:
144
+ return None
145
+ bound = getattr(tool_node, "bound", None)
146
+ if bound is not None and hasattr(bound, "tools_by_name"):
147
+ return bound
148
+ if hasattr(tool_node, "tools_by_name"):
149
+ return tool_node
150
+ return None
151
+
152
+
153
+ __all__ = ["RuntimeToolsNode", "resolve_runtime_tools_node"]
@@ -308,7 +308,7 @@ class ModelNode(Runnable):
308
308
  def _run(self, state: dict, config: RunnableConfig) -> dict:
309
309
  """核心同步执行逻辑。"""
310
310
  runtime = config.get("configurable", {}).get("__pregel_runtime")
311
- request = self._build_request(state, runtime)
311
+ request = self._build_request(state, runtime, config=config)
312
312
 
313
313
  synth = _model_response_if_context_token_blocked(
314
314
  state_messages=state.get("messages", []),
@@ -331,7 +331,7 @@ class ModelNode(Runnable):
331
331
  async def _arun(self, state: dict, config: RunnableConfig) -> dict:
332
332
  """核心异步执行逻辑。"""
333
333
  runtime = config.get("configurable", {}).get("__pregel_runtime")
334
- request = self._build_request(state, runtime)
334
+ request = self._build_request(state, runtime, config=config)
335
335
 
336
336
  synth = _model_response_if_context_token_blocked(
337
337
  state_messages=state.get("messages", []),
@@ -353,11 +353,20 @@ class ModelNode(Runnable):
353
353
 
354
354
  # ===== 请求构建 =====
355
355
 
356
- def _build_request(self, state: dict, runtime: Any) -> Any:
356
+ def _build_request(
357
+ self,
358
+ state: dict,
359
+ runtime: Any,
360
+ *,
361
+ config: RunnableConfig | None = None,
362
+ ) -> Any:
357
363
  """从 state 构建 _ModelRequest。"""
358
364
  from langchain.agents.middleware.types import ModelRequest as _ModelRequest
359
365
 
360
366
  model_settings: Dict[str, Any] = {}
367
+ effort_override = self._effort_override_from_config(config)
368
+ if effort_override is not None:
369
+ model_settings["effort"] = effort_override
361
370
  if state.get("max_output_tokens_override") is not None:
362
371
  requested_override = int(state["max_output_tokens_override"])
363
372
  cap = self._max_output_tokens_cap
@@ -385,7 +394,7 @@ class ModelNode(Runnable):
385
394
  tools = [] if state.get("force_text_exit") else self._default_tools
386
395
 
387
396
  return _ModelRequest(
388
- model=self._model,
397
+ model=self._resolve_effective_model(config),
389
398
  tools=tools,
390
399
  system_message=system_message,
391
400
  response_format=self._initial_response_format,
@@ -396,6 +405,34 @@ class ModelNode(Runnable):
396
405
  model_settings=model_settings,
397
406
  )
398
407
 
408
+ def _resolve_effective_model(self, config: RunnableConfig | None) -> Any:
409
+ """读取 session skill model override(对齐 CC mainLoopModel)。"""
410
+ from langchain_agentx.tool_runtime.loop_runtime_context import get_model_override
411
+
412
+ store = None
413
+ if isinstance(config, dict):
414
+ configurable = config.get("configurable", {}) or {}
415
+ store = configurable.get("session_store")
416
+ override = get_model_override(store)
417
+ if not override:
418
+ return self._model
419
+ try:
420
+ from langchain.chat_models import init_chat_model
421
+
422
+ return init_chat_model(override)
423
+ except Exception as exc:
424
+ logger.warning("skill model override init failed (%s); using base model", exc)
425
+ return self._model
426
+
427
+ @staticmethod
428
+ def _effort_override_from_config(config: RunnableConfig | None) -> str | None:
429
+ from langchain_agentx.tool_runtime.loop_runtime_context import get_effort_override
430
+
431
+ if not isinstance(config, dict):
432
+ return None
433
+ store = (config.get("configurable", {}) or {}).get("session_store")
434
+ return get_effort_override(store)
435
+
399
436
  # ===== 模型调用 =====
400
437
 
401
438
  def _invoke_bound(self, req: Any, *, config: RunnableConfig | None = None) -> Any: