langchain-agentx-python 0.4.0__tar.gz → 0.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/PKG-INFO +1 -1
  2. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/engine.py +10 -0
  3. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/executors/command.py +6 -1
  4. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/graph_wiring.py +7 -0
  5. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/types.py +11 -0
  6. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/orchestrator.py +177 -27
  7. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/runner.py +32 -23
  8. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +98 -0
  9. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/adapter.py +7 -0
  10. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/models.py +9 -1
  11. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/tool.py +58 -0
  12. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx_python.egg-info/PKG-INFO +1 -1
  13. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/pyproject.toml +1 -1
  14. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/LICENSE +0 -0
  15. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/README.md +0 -0
  16. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/__init__.py +0 -0
  17. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/__init__.py +0 -0
  18. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/builtin/__init__.py +0 -0
  19. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/builtin/clear.py +0 -0
  20. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/builtin/compact.py +0 -0
  21. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/builtin/memory.py +0 -0
  22. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
  23. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/context.py +0 -0
  24. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/dispatcher.py +0 -0
  25. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/registry.py +0 -0
  26. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/result.py +0 -0
  27. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/command/types.py +0 -0
  28. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/config/__init__.py +0 -0
  29. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/config/model_profiles.yaml +0 -0
  30. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/config/model_profiles.yaml.example +0 -0
  31. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/__init__.py +0 -0
  32. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/config/__init__.py +0 -0
  33. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/config/agent_config.py +0 -0
  34. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/config/agent_loop_config.py +0 -0
  35. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
  36. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/config/runtime_settings.py +0 -0
  37. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/config/token_estimator.py +0 -0
  38. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/__init__.py +0 -0
  39. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/blocking_guard.py +0 -0
  40. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/compaction_service.py +0 -0
  41. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/message_utils.py +0 -0
  42. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/pipeline.py +0 -0
  43. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/settings.py +0 -0
  44. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/__init__.py +0 -0
  45. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
  46. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/base.py +0 -0
  47. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/collapse.py +0 -0
  48. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
  49. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/noop.py +0 -0
  50. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/snip.py +0 -0
  51. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
  52. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/context/types.py +0 -0
  53. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/exit/__init__.py +0 -0
  54. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/exit/exit_logic.py +0 -0
  55. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/exit/reason_codes.py +0 -0
  56. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/graph/__init__.py +0 -0
  57. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
  58. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/graph/factory.py +0 -0
  59. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/graph/graph_edges.py +0 -0
  60. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/__init__.py +0 -0
  61. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
  62. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/config.py +0 -0
  63. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
  64. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/executors/agent.py +0 -0
  65. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/executors/http.py +0 -0
  66. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
  67. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/registry.py +0 -0
  68. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/hook/trust.py +0 -0
  69. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/injection/__init__.py +0 -0
  70. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/injection/dedup.py +0 -0
  71. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/loop_abort.py +0 -0
  72. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/__init__.py +0 -0
  73. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/model_node.py +0 -0
  74. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/model_nodes.py +0 -0
  75. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
  76. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/retrier.py +0 -0
  77. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/retry_bridge.py +0 -0
  78. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/retry_events.py +0 -0
  79. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/retry_policy.py +0 -0
  80. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/schema_and_format.py +0 -0
  81. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
  82. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
  83. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
  84. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/prompt/__init__.py +0 -0
  85. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/prompt/builder.py +0 -0
  86. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/prompt/builtin.py +0 -0
  87. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/prompt/compact.py +0 -0
  88. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/prompt/sections.py +0 -0
  89. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/prompt/session_context.py +0 -0
  90. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/runtime/__init__.py +0 -0
  91. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/runtime/context.py +0 -0
  92. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/runtime/context_factory.py +0 -0
  93. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
  94. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/__init__.py +0 -0
  95. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/async_runner.py +0 -0
  96. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/context.py +0 -0
  97. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
  98. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/graph.py +0 -0
  99. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/progress.py +0 -0
  100. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/prompt.py +0 -0
  101. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/loop/subagent/transcript.py +0 -0
  102. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/__init__.py +0 -0
  103. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/instruction/__init__.py +0 -0
  104. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/instruction/loader.py +0 -0
  105. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/instruction/resolver.py +0 -0
  106. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/instruction/runtime.py +0 -0
  107. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/instruction/sections.py +0 -0
  108. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/instruction/types.py +0 -0
  109. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/__init__.py +0 -0
  110. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/age.py +0 -0
  111. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
  112. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/extractor.py +0 -0
  113. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/loader.py +0 -0
  114. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/paths.py +0 -0
  115. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/recall.py +0 -0
  116. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/runtime.py +0 -0
  117. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/scan.py +0 -0
  118. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/memdir/types.py +0 -0
  119. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/session/__init__.py +0 -0
  120. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/session/compact_bridge.py +0 -0
  121. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/session/prompts.py +0 -0
  122. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/memory/session/session_memory.py +0 -0
  123. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/__init__.py +0 -0
  124. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/__init__.py +0 -0
  125. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
  126. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
  127. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
  128. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
  129. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
  130. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
  131. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
  132. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
  133. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/service.py +0 -0
  134. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/state.py +0 -0
  135. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/evaluation/store.py +0 -0
  136. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/events/__init__.py +0 -0
  137. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/logging/__init__.py +0 -0
  138. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/logging/debug_burst.py +0 -0
  139. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/logging/logging_config.py +0 -0
  140. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/logging/logging_contract.py +0 -0
  141. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/replay/__init__.py +0 -0
  142. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/replay/cli.py +0 -0
  143. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/replay/service.py +0 -0
  144. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/replay/store.py +0 -0
  145. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/replay/ui.py +0 -0
  146. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/__init__.py +0 -0
  147. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/collector.py +0 -0
  148. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/event_emitter.py +0 -0
  149. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
  150. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/models.py +0 -0
  151. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
  152. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/trace_callback.py +0 -0
  153. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
  154. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/__init__.py +0 -0
  155. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/builtin.py +0 -0
  156. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/config.py +0 -0
  157. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/loader.py +0 -0
  158. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/manifest.py +0 -0
  159. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/registries.py +0 -0
  160. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/plugin/types.py +0 -0
  161. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/provider/__init__.py +0 -0
  162. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/provider/anthropic.py +0 -0
  163. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
  164. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/provider/env.py +0 -0
  165. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/provider/model_profile.py +0 -0
  166. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/provider/openai.py +0 -0
  167. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/__init__.py +0 -0
  168. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/agent_session.py +0 -0
  169. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/conversation_factory.py +0 -0
  170. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/conversation_recovery.py +0 -0
  171. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/conversation_session.py +0 -0
  172. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/factory.py +0 -0
  173. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/session/protocol.py +0 -0
  174. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/__init__.py +0 -0
  175. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/core/__init__.py +0 -0
  176. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/core/ids.py +0 -0
  177. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
  178. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
  179. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/core/types.py +0 -0
  180. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
  181. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
  182. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
  183. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
  184. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
  185. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
  186. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
  187. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
  188. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
  189. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
  190. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/output/__init__.py +0 -0
  191. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/output/sink.py +0 -0
  192. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
  193. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
  194. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
  195. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
  196. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
  197. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
  198. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
  199. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
  200. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/store/__init__.py +0 -0
  201. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
  202. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
  203. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
  204. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
  205. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
  206. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
  207. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
  208. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
  209. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
  210. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
  211. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
  212. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
  213. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
  214. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
  215. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
  216. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
  217. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
  218. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
  219. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
  220. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
  221. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
  222. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
  223. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
  224. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
  225. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
  226. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
  227. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
  228. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
  229. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
  230. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
  231. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
  232. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
  233. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
  234. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
  235. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
  236. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
  237. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
  238. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
  239. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
  240. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
  241. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
  242. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
  243. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
  244. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
  245. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
  246. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
  247. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
  248. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
  249. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
  250. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
  251. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
  252. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
  253. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
  254. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/__init__.py +0 -0
  255. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/base.py +0 -0
  256. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/errors.py +0 -0
  257. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
  258. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/loader.py +0 -0
  259. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/permission_context.py +0 -0
  260. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/pipeline.py +0 -0
  261. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/policy.py +0 -0
  262. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/registry.py +0 -0
  263. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
  264. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
  265. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
  266. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
  267. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
  268. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
  269. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/session_store.py +0 -0
  270. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
  271. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
  272. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/__init__.py +0 -0
  273. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/__init__.py +0 -0
  274. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/backend.py +0 -0
  275. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
  276. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
  277. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
  278. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/general.py +0 -0
  279. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
  280. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
  281. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
  282. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
  283. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
  284. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/limits.py +0 -0
  285. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/loader.py +0 -0
  286. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/models.py +0 -0
  287. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/prompt.py +0 -0
  288. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
  289. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/registry/config.py +0 -0
  290. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/registry/registry.py +0 -0
  291. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/agent/scope.py +0 -0
  292. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
  293. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
  294. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
  295. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/models.py +0 -0
  296. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
  297. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
  298. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
  299. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/__init__.py +0 -0
  300. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/ast_security.py +0 -0
  301. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/backend.py +0 -0
  302. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
  303. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
  304. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
  305. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/limits.py +0 -0
  306. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/mode_validation.py +0 -0
  307. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/models.py +0 -0
  308. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/observability.py +0 -0
  309. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/output_utils.py +0 -0
  310. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/path_security.py +0 -0
  311. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/prompt.py +0 -0
  312. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
  313. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/result_presenter.py +0 -0
  314. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
  315. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/security.py +0 -0
  316. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
  317. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/sed_validation.py +0 -0
  318. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/semantics.py +0 -0
  319. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/session_manager.py +0 -0
  320. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/session_runtime.py +0 -0
  321. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/shell_locator.py +0 -0
  322. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/task_runtime.py +0 -0
  323. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/tool.py +0 -0
  324. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
  325. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/__init__.py +0 -0
  326. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/backend.py +0 -0
  327. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/batch_tool.py +0 -0
  328. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/diff_generator.py +0 -0
  329. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
  330. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/limits.py +0 -0
  331. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/models.py +0 -0
  332. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/prompt.py +0 -0
  333. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/quote_match.py +0 -0
  334. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
  335. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/settings_validator.py +0 -0
  336. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/staleness.py +0 -0
  337. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/tool.py +0 -0
  338. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/edit/validator.py +0 -0
  339. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/__init__.py +0 -0
  340. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/models.py +0 -0
  341. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/pagination.py +0 -0
  342. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/prompt.py +0 -0
  343. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
  344. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
  345. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/glob/tool.py +0 -0
  346. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/grep/__init__.py +0 -0
  347. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/grep/backend.py +0 -0
  348. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/grep/models.py +0 -0
  349. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/grep/prompt.py +0 -0
  350. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
  351. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/grep/tool.py +0 -0
  352. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/read/__init__.py +0 -0
  353. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/read/backend.py +0 -0
  354. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/read/limits.py +0 -0
  355. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/read/models.py +0 -0
  356. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/read/prompt.py +0 -0
  357. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/read/tool.py +0 -0
  358. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
  359. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/__init__.py +0 -0
  360. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
  361. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/loader.py +0 -0
  362. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/models.py +0 -0
  363. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/policy.py +0 -0
  364. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/prompt.py +0 -0
  365. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/skill/tool.py +0 -0
  366. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_create/__init__.py +0 -0
  367. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_create/hooks.py +0 -0
  368. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_create/limits.py +0 -0
  369. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_create/models.py +0 -0
  370. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_create/prompt.py +0 -0
  371. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_create/tool.py +0 -0
  372. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_get/__init__.py +0 -0
  373. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_get/models.py +0 -0
  374. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_get/prompt.py +0 -0
  375. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_get/tool.py +0 -0
  376. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_list/__init__.py +0 -0
  377. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_list/models.py +0 -0
  378. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_list/prompt.py +0 -0
  379. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_list/tool.py +0 -0
  380. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_update/__init__.py +0 -0
  381. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_update/hooks.py +0 -0
  382. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_update/models.py +0 -0
  383. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_update/prompt.py +0 -0
  384. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/task_update/tool.py +0 -0
  385. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/user_message/__init__.py +0 -0
  386. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/user_message/attachments.py +0 -0
  387. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/user_message/models.py +0 -0
  388. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/user_message/prompt.py +0 -0
  389. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/user_message/runtime_config.py +0 -0
  390. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/user_message/tool.py +0 -0
  391. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/__init__.py +0 -0
  392. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/backend.py +0 -0
  393. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/limits.py +0 -0
  394. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/loader.py +0 -0
  395. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/models.py +0 -0
  396. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
  397. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/prompt.py +0 -0
  398. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/summary.py +0 -0
  399. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/webfetch/tool.py +0 -0
  400. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/__init__.py +0 -0
  401. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/backend.py +0 -0
  402. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/events.py +0 -0
  403. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/limits.py +0 -0
  404. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/loader.py +0 -0
  405. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/models.py +0 -0
  406. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/prompt.py +0 -0
  407. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/websearch/tool.py +0 -0
  408. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/__init__.py +0 -0
  409. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/backend.py +0 -0
  410. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/limits.py +0 -0
  411. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/models.py +0 -0
  412. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/prompt.py +0 -0
  413. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/tool.py +0 -0
  414. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/tools/write/validator.py +0 -0
  415. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/__init__.py +0 -0
  416. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/cwd.py +0 -0
  417. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/host_platform.py +0 -0
  418. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/path_hierarchy.py +0 -0
  419. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/path_user_input.py +0 -0
  420. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/rg_executable.py +0 -0
  421. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/subprocess_text.py +0 -0
  422. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/temp_paths.py +0 -0
  423. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/unc_path.py +0 -0
  424. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/utils/win_reserved_paths.py +0 -0
  425. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/__init__.py +0 -0
  426. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/base.py +0 -0
  427. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/batch.py +0 -0
  428. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/dag.py +0 -0
  429. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
  430. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
  431. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
  432. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
  433. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
  434. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
  435. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
  436. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
  437. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/event_adapter/types.py +0 -0
  438. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/node.py +0 -0
  439. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/patterns/__init__.py +0 -0
  440. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/patterns/chaining.py +0 -0
  441. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
  442. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
  443. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
  444. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/patterns/routing.py +0 -0
  445. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workflow/state.py +0 -0
  446. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workspace/__init__.py +0 -0
  447. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workspace/capabilities.py +0 -0
  448. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workspace/config.py +0 -0
  449. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
  450. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workspace/resolver.py +0 -0
  451. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx/workspace/validators.py +0 -0
  452. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx_python.egg-info/SOURCES.txt +0 -0
  453. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
  454. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
  455. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx_python.egg-info/requires.txt +0 -0
  456. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/langchain_agentx_python.egg-info/top_level.txt +0 -0
  457. {langchain-agentx-python-0.4.0 → langchain-agentx-python-0.4.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain-agentx-python
3
- Version: 0.4.0
3
+ Version: 0.4.2
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
@@ -185,6 +185,16 @@ class HookEngine:
185
185
  if one.state_patch:
186
186
  agg.state_patch.update(one.state_patch)
187
187
 
188
+ # 聚合 Hook 输出结果(stdout/stderr/exit_code)
189
+ if one.stdout is not None:
190
+ agg.stdouts.append(one.stdout)
191
+ agg.combined_stdout += one.stdout
192
+ if one.stderr is not None:
193
+ agg.stderrs.append(one.stderr)
194
+ agg.combined_stderr += one.stderr
195
+ if one.exit_code is not None:
196
+ agg.exit_codes.append(one.exit_code)
197
+
188
198
  agg.permission_behavior = merge_permission_behavior(
189
199
  agg.permission_behavior,
190
200
  one.permission_behavior,
@@ -136,7 +136,12 @@ class CommandExecutor:
136
136
  stderr = stderr_raw.decode("utf-8", errors="replace")
137
137
  returncode = int(proc.returncode or 0)
138
138
 
139
- result = HookResult(outcome="success")
139
+ result = HookResult(
140
+ outcome="success",
141
+ stdout=stdout,
142
+ stderr=stderr,
143
+ exit_code=returncode,
144
+ )
140
145
  parsed_json = self._parse_json(stdout)
141
146
  if isinstance(parsed_json, dict):
142
147
  self._apply_json_result(result, parsed_json)
@@ -23,6 +23,7 @@ from .types import AggregatedHookResult, HookContext, HookEvent
23
23
 
24
24
 
25
25
  def _to_hook_result_dict(result: AggregatedHookResult) -> dict[str, Any]:
26
+ """将 AggregatedHookResult 转换为字典,包含 Hook 输出结果(stdout/stderr/exit_code)。"""
26
27
  return {
27
28
  "prevent_continuation": result.prevent_continuation,
28
29
  "blocking_errors": list(result.blocking_errors) or None,
@@ -31,6 +32,12 @@ def _to_hook_result_dict(result: AggregatedHookResult) -> dict[str, Any]:
31
32
  "additional_contexts": list(result.additional_contexts),
32
33
  "updated_input": result.updated_input,
33
34
  "state_patch": dict(result.state_patch),
35
+ # Hook 输出结果(对齐 CC hook_response)
36
+ "stdouts": list(result.stdouts) or None,
37
+ "stderrs": list(result.stderrs) or None,
38
+ "exit_codes": list(result.exit_codes) or None,
39
+ "combined_stdout": result.combined_stdout or None,
40
+ "combined_stderr": result.combined_stderr or None,
34
41
  }
35
42
 
36
43
 
@@ -121,6 +121,10 @@ class HookResult:
121
121
  additional_context: str | None = None
122
122
  updated_input: dict[str, Any] | None = None
123
123
  state_patch: dict[str, Any] = field(default_factory=dict)
124
+ # 新增:Hook 输出结果(对齐 CC hook_response)
125
+ stdout: str | None = None
126
+ stderr: str | None = None
127
+ exit_code: int | None = None
124
128
 
125
129
 
126
130
  @dataclass
@@ -134,6 +138,13 @@ class AggregatedHookResult:
134
138
  additional_contexts: list[str] = field(default_factory=list)
135
139
  updated_input: dict[str, Any] | None = None
136
140
  state_patch: dict[str, Any] = field(default_factory=dict)
141
+ # 新增:聚合所有 Hook 的输出结果(对齐 CC hook_response)
142
+ stdouts: list[str] = field(default_factory=list)
143
+ stderrs: list[str] = field(default_factory=list)
144
+ exit_codes: list[int] = field(default_factory=list)
145
+ # 合并后的完整输出(用于事件展示)
146
+ combined_stdout: str = ""
147
+ combined_stderr: str = ""
137
148
 
138
149
 
139
150
  __all__ = [
@@ -11,6 +11,8 @@ CC 对照:src/tools/AgentTool/AgentTool.tsx call() 中 runAgent / registerAsyn
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
+ import asyncio
15
+ import inspect
14
16
  import logging
15
17
  import os
16
18
  import time
@@ -51,50 +53,36 @@ def _make_progress_handler(
51
53
  parent_tool_use_id: str | None = None,
52
54
  tool_progress_callback: Any = None,
53
55
  ):
54
- """构造 on_progress 回调(2s hint 阈值 + stderr 单行覆写 + 事件冒泡)。
56
+ """构造 on_progress 回调(事件冒泡 + 可选的 CLI 提示)。
55
57
 
56
58
  Args:
57
59
  subagent_type: 子 agent 类型
58
60
  started_at: 开始时间戳
59
61
  parent_tool_use_id: 父级 tool_use_id,用于事件冒泡(CC 对齐)
60
- tool_progress_callback: 父级的工具进度回调,用于转发子 agent 事件
61
- """
62
- import sys
63
- hint_shown = False
62
+ tool_progress_callback: 父级的工具进度回调(异步路径用于 adispatch_custom_event)
64
63
 
64
+ 事件流向:
65
+ 同步路径: 子 agent 事件 → tool_progress_callback(Channel B)→ CLI 处理
66
+ 异步路径: 子 agent 事件 → tool_progress_callback → adispatch_custom_event(Channel A)
67
+ """
65
68
  def _on_progress(event: Any) -> None:
66
- nonlocal hint_shown
67
69
 
68
70
  # 设置 parent_tool_use_id(如果事件支持)
69
71
  if hasattr(event, "parent_tool_use_id") and event.parent_tool_use_id is None:
70
72
  object.__setattr__(event, "parent_tool_use_id", parent_tool_use_id)
71
73
 
72
- # 事件冒泡:转发到父级的 tool_progress_callback
73
- # agent 的事件通过此回调冒泡到父级,实现对齐 CC 的目录式展示
74
+ # 事件冒泡:转发到 tool_progress_callback
75
+ # - 同步路径:转发到 CLI tool_progress_callback(Channel B)
76
+ # - 异步路径:转发到 _bubble_progress → adispatch_custom_event(Channel A)
74
77
  if tool_progress_callback is not None and callable(tool_progress_callback):
75
78
  try:
76
- tool_progress_callback(event)
79
+ result = tool_progress_callback(event)
80
+ # 支持异步回调
81
+ if inspect.iscoroutine(result):
82
+ asyncio.create_task(result)
77
83
  except Exception:
78
84
  logger.debug("tool_progress_callback failed", exc_info=True)
79
85
 
80
- # CLI 输出
81
- if not hint_shown and time.monotonic() - started_at > 2.0:
82
- hint_shown = True
83
- print(
84
- f"\r[Agent:{subagent_type}] task is running... (Ctrl+C to interrupt)",
85
- file=sys.stderr,
86
- flush=True,
87
- )
88
- if getattr(event, "summary", ""):
89
- print(
90
- f"\r[{subagent_type}] {event.summary:<80}",
91
- file=sys.stderr,
92
- end="",
93
- flush=True,
94
- )
95
- if getattr(event, "type", "") == "completed":
96
- print("", file=sys.stderr)
97
-
98
86
  return _on_progress
99
87
 
100
88
 
@@ -265,6 +253,130 @@ class SubagentOrchestrator:
265
253
  execution_trace=getattr(result, "execution_trace", None),
266
254
  )
267
255
 
256
+ async def ainvoke_subagent(
257
+ self,
258
+ inp: "AgentToolInput",
259
+ ctx: "ToolExecutionContext",
260
+ subagent_config: "SubagentConfig",
261
+ on_progress: Any | None = None,
262
+ ) -> "AgentToolOutput":
263
+ """异步执行子代理(支持实时事件冒泡)。
264
+
265
+ 与 invoke_subagent 的区别:
266
+ - on_progress 回调支持异步(用于 adispatch_custom_event)
267
+ - 不通过 _run_coroutine_sync,直接在异步上下文执行
268
+ - 保留同步 invoke 路径用于兼容(非 ToolNode 场景)
269
+
270
+ CC 对照:AgentTool.tsx call() 中 onProgress 回调
271
+ """
272
+ from langchain_agentx.tools.agent.models import AgentToolOutput
273
+ from langchain_agentx.loop.subagent.async_runner import run_async_agent_lifecycle
274
+
275
+ log = self._build_logger(ctx)
276
+ child_agent_id = str(uuid.uuid4())
277
+ overrides, runtime_ctx, prepared = self._derive_runtime_context(
278
+ inp=inp,
279
+ ctx=ctx,
280
+ subagent_config=subagent_config,
281
+ child_agent_id=child_agent_id,
282
+ )
283
+ is_async = self._decide_async(inp=inp, ctx=ctx)
284
+
285
+ log.info(
286
+ "agent ainvoke mode=%s subagent_type=%s async=%s",
287
+ self._mode, inp.subagent_type or "general-purpose", is_async,
288
+ )
289
+
290
+ parent_registry = getattr(ctx, "tool_registry", None)
291
+ if parent_registry is None or not hasattr(parent_registry, "list"):
292
+ raise RuntimeError(
293
+ "tool_registry missing in ToolExecutionContext; "
294
+ "please construct the parent agent with ToolRuntimeLoader(loader=...)."
295
+ )
296
+ parent_loader = getattr(ctx, "tool_loader", None)
297
+ if parent_loader is None or not hasattr(parent_loader, "fork_with_tools"):
298
+ raise RuntimeError(
299
+ "tool_loader missing in ToolExecutionContext; "
300
+ "please construct the parent agent with ToolRuntimeLoader(loader=...)."
301
+ )
302
+
303
+ runtime_tools = list(parent_registry.list())
304
+ runtime_tools = assemble_tool_pool(runtime_tools, subagent_config, is_async=is_async)
305
+ allowed_tool_names: set[str] = {getattr(t, "name", "") for t in runtime_tools if getattr(t, "name", "")}
306
+ child_loader = parent_loader.fork_with_tools(runtime_tools)
307
+
308
+ system_prompt = enhance_system_prompt_with_env(
309
+ subagent_config.system_prompt_factory(),
310
+ runtime_ctx.cwd,
311
+ )
312
+
313
+ effective_cwd = runtime_ctx.cwd or get_cwd()
314
+ parent_notice_cwd = getattr(ctx, "cwd", None) or get_cwd()
315
+ inject_fork_wt = self._mode == "fork" and prepared.worktree_dir is not None
316
+ with run_with_cwd_override(effective_cwd):
317
+ output_dir = self._resolve_background_output_dir(runtime_ctx)
318
+ subagent_ctx = create_subagent_context(
319
+ parent_ctx=ctx,
320
+ task=inp.prompt,
321
+ subagent_type=inp.subagent_type or "general-purpose",
322
+ system_prompt=system_prompt,
323
+ max_steps=runtime_ctx.max_steps,
324
+ agent_depth=runtime_ctx.agent_depth,
325
+ isolation=overrides.isolation,
326
+ fork_from_parent=(self._mode == "fork"),
327
+ is_async=is_async,
328
+ model=runtime_ctx.model,
329
+ path_prep=prepared,
330
+ inject_fork_worktree_notice=inject_fork_wt,
331
+ fork_worktree_parent_cwd=parent_notice_cwd,
332
+ fork_worktree_path=prepared.worktree_dir,
333
+ )
334
+ subagent_ctx.agent_id = child_agent_id
335
+
336
+ parent_tool_use_id = getattr(ctx, "tool_call_id", None)
337
+
338
+ # 构造异步进度回调
339
+ _on_progress = _make_progress_handler(
340
+ inp.subagent_type or "general-purpose",
341
+ time.monotonic(),
342
+ parent_tool_use_id=parent_tool_use_id,
343
+ tool_progress_callback=on_progress, # 使用传入的异步回调
344
+ )
345
+ os.makedirs(output_dir, exist_ok=True)
346
+
347
+ if is_async:
348
+ return await self._launch_async_subagent_with_progress(
349
+ agent_output_cls=AgentToolOutput,
350
+ subagent_ctx=subagent_ctx,
351
+ loader=child_loader,
352
+ model=runtime_ctx.model,
353
+ description=inp.description,
354
+ on_progress=_on_progress,
355
+ parent_ctx=ctx,
356
+ output_dir=output_dir,
357
+ )
358
+
359
+ # 前台执行:直接调用 run_subagent(异步版本)
360
+ result = await run_subagent(
361
+ ctx=subagent_ctx,
362
+ loader=child_loader,
363
+ model=runtime_ctx.model,
364
+ on_progress=_on_progress,
365
+ allowed_tool_names=allowed_tool_names,
366
+ )
367
+
368
+ return AgentToolOutput(
369
+ status=result.status,
370
+ content=result.content,
371
+ agent_id=result.agent_id,
372
+ total_steps=result.total_steps,
373
+ terminal_reason=result.terminal_reason or None,
374
+ error_message=result.error_message or None,
375
+ output_file=getattr(result, "output_file", None),
376
+ child_run_id=getattr(result, "child_run_id", None),
377
+ execution_trace=getattr(result, "execution_trace", None),
378
+ )
379
+
268
380
  def _build_logger(self, ctx: "ToolExecutionContext") -> ObservabilityLoggerAdapter:
269
381
  return ObservabilityLoggerAdapter(
270
382
  logger,
@@ -359,6 +471,44 @@ class SubagentOrchestrator:
359
471
  output_file=handle.output_file,
360
472
  )
361
473
 
474
+ async def _launch_async_subagent_with_progress(
475
+ self,
476
+ *,
477
+ agent_output_cls: type[Any],
478
+ subagent_ctx: Any,
479
+ loader: Any,
480
+ model: Any,
481
+ description: str | None,
482
+ on_progress: Any,
483
+ parent_ctx: "ToolExecutionContext",
484
+ output_dir: str,
485
+ ) -> Any:
486
+ """异步启动子 agent(支持实时进度回调)。
487
+
488
+ 与 _launch_async_subagent 的区别:
489
+ - 使用 register_background_agent 但不等待完成
490
+ - 返回 async_launched 状态
491
+ - 进度通过 on_progress 回调实时上报
492
+ """
493
+ handle = self._register_background_agent(
494
+ subagent_ctx=subagent_ctx,
495
+ loader=loader,
496
+ model=model,
497
+ output_dir=output_dir,
498
+ description=description,
499
+ on_progress=on_progress,
500
+ parent_ctx=parent_ctx,
501
+ )
502
+ return agent_output_cls(
503
+ status="async_launched",
504
+ content="",
505
+ agent_id=handle.agent_id,
506
+ total_steps=0,
507
+ terminal_reason="background",
508
+ task_id=handle.task_id,
509
+ output_file=handle.output_file,
510
+ )
511
+
362
512
  def _run_with_background_signal(
363
513
  self,
364
514
  *,
@@ -24,6 +24,7 @@ CC 对照:runAgent.ts runAgent();onProgress 回调逻辑
24
24
  from __future__ import annotations
25
25
 
26
26
  import asyncio
27
+ import inspect
27
28
  import logging
28
29
  import threading
29
30
  from concurrent.futures import Future
@@ -190,19 +191,27 @@ def _build_graph_input_messages(initial_messages: list[Any]) -> list[Any]:
190
191
  ]
191
192
 
192
193
 
193
- def _emit_progress(
194
- on_progress: Callable[[SubagentProgressEvent], None] | None,
194
+ async def _emit_progress(
195
+ on_progress: Any,
195
196
  event: SubagentProgressEvent,
196
197
  ) -> None:
198
+ """发射进度事件(支持异步回调)。
199
+
200
+ 如果 on_progress 是异步函数,则使用 await 调用;
201
+ 否则使用同步调用。这允许子 Agent 进度事件通过
202
+ adispatch_custom_event 实时冒泡到主 graph。
203
+ """
197
204
  if on_progress:
198
- on_progress(event)
205
+ result = on_progress(event)
206
+ if inspect.iscoroutine(result):
207
+ await result
199
208
 
200
209
 
201
- def _handle_tool_start_event(
210
+ async def _handle_tool_start_event(
202
211
  *,
203
212
  ctx: SubagentContext,
204
213
  event: dict[str, Any],
205
- on_progress: Callable[[SubagentProgressEvent], None] | None,
214
+ on_progress: Any,
206
215
  current_step: int,
207
216
  trace: SubagentExecutionTrace | None = None,
208
217
  ) -> tuple[int, str]:
@@ -225,7 +234,7 @@ def _handle_tool_start_event(
225
234
  if trace:
226
235
  trace.add_tool_call(tool_call)
227
236
 
228
- _emit_progress(
237
+ await _emit_progress(
229
238
  on_progress,
230
239
  SubagentProgressEvent(
231
240
  type="tool_use",
@@ -272,13 +281,13 @@ def _is_tool_error(output: Any) -> bool:
272
281
  return False
273
282
 
274
283
 
275
- def _handle_tool_end_event(
284
+ async def _handle_tool_end_event(
276
285
  *,
277
286
  ctx: SubagentContext,
278
287
  event: dict[str, Any],
279
288
  data: dict[str, Any],
280
289
  transcript: SubagentTranscriptManager,
281
- on_progress: Callable[[SubagentProgressEvent], None] | None,
290
+ on_progress: Any,
282
291
  step: int,
283
292
  trace: SubagentExecutionTrace | None = None,
284
293
  ) -> None:
@@ -306,7 +315,7 @@ def _handle_tool_end_event(
306
315
 
307
316
  msg_dict = {"role": "tool", "tool_name": tool_name, "content": transcript_text}
308
317
  transcript.append(msg_dict)
309
- _emit_progress(
318
+ await _emit_progress(
310
319
  on_progress,
311
320
  SubagentProgressEvent(
312
321
  type="tool_result",
@@ -319,11 +328,11 @@ def _handle_tool_end_event(
319
328
  )
320
329
 
321
330
 
322
- def _handle_chat_model_end_event(
331
+ async def _handle_chat_model_end_event(
323
332
  *,
324
333
  ctx: SubagentContext,
325
334
  data: dict[str, Any],
326
- on_progress: Callable[[SubagentProgressEvent], None] | None,
335
+ on_progress: Any,
327
336
  collected_assistant_messages: list[Any],
328
337
  total_steps: int,
329
338
  ) -> int:
@@ -333,7 +342,7 @@ def _handle_chat_model_end_event(
333
342
  has_tool_calls = bool(output is not None and getattr(output, "tool_calls", None))
334
343
  if not has_tool_calls:
335
344
  total_steps += 1
336
- _emit_progress(
345
+ await _emit_progress(
337
346
  on_progress,
338
347
  SubagentProgressEvent(
339
348
  type="model_step",
@@ -370,7 +379,7 @@ async def _collect_subagent_events(
370
379
  graph_input: dict[str, Any],
371
380
  run_tags: list[str],
372
381
  transcript: SubagentTranscriptManager,
373
- on_progress: Callable[[SubagentProgressEvent], None] | None,
382
+ on_progress: Any,
374
383
  trace: SubagentExecutionTrace,
375
384
  ) -> _EventCollectionResult:
376
385
  collected_assistant_messages: list[Any] = []
@@ -389,7 +398,7 @@ async def _collect_subagent_events(
389
398
  event_name = event.get("event", "")
390
399
  data = event.get("data") or {}
391
400
  if event_name == "on_tool_start":
392
- tool_step, last_tool_name = _handle_tool_start_event(
401
+ tool_step, last_tool_name = await _handle_tool_start_event(
393
402
  ctx=ctx,
394
403
  event=event,
395
404
  on_progress=on_progress,
@@ -397,7 +406,7 @@ async def _collect_subagent_events(
397
406
  trace=trace,
398
407
  )
399
408
  elif event_name == "on_tool_end":
400
- _handle_tool_end_event(
409
+ await _handle_tool_end_event(
401
410
  ctx=ctx,
402
411
  event=event,
403
412
  data=data,
@@ -407,7 +416,7 @@ async def _collect_subagent_events(
407
416
  trace=trace,
408
417
  )
409
418
  elif event_name == "on_chat_model_end":
410
- total_steps = _handle_chat_model_end_event(
419
+ total_steps = await _handle_chat_model_end_event(
411
420
  ctx=ctx,
412
421
  data=data,
413
422
  on_progress=on_progress,
@@ -440,13 +449,13 @@ async def _collect_subagent_events(
440
449
  )
441
450
 
442
451
 
443
- def _build_subagent_result(
452
+ async def _build_subagent_result(
444
453
  *,
445
454
  ctx: SubagentContext,
446
455
  collected: _EventCollectionResult,
447
456
  transcript: SubagentTranscriptManager,
448
457
  allowed_tool_names: set[str] | None,
449
- on_progress: Callable[[SubagentProgressEvent], None] | None,
458
+ on_progress: Any,
450
459
  trace: SubagentExecutionTrace,
451
460
  ) -> SubagentResult:
452
461
  content = _extract_final_content(collected.collected_assistant_messages, allowed_tool_names)
@@ -463,7 +472,7 @@ def _build_subagent_result(
463
472
  )
464
473
  # 更新 trace 的 terminal_reason
465
474
  trace.terminal_reason = collected.terminal_reason
466
- _emit_progress(
475
+ await _emit_progress(
467
476
  on_progress,
468
477
  SubagentProgressEvent(
469
478
  type="completed",
@@ -490,7 +499,7 @@ async def run_subagent(
490
499
  ctx: SubagentContext,
491
500
  loader: Any,
492
501
  model: Any | None = None,
493
- on_progress: Callable[[SubagentProgressEvent], None] | None = None,
502
+ on_progress: Any = None,
494
503
  allowed_tool_names: set[str] | None = None,
495
504
  ) -> SubagentResult:
496
505
  """运行子 Agent(plain/fork 同步路径)。
@@ -499,7 +508,7 @@ async def run_subagent(
499
508
  ctx: 子 Agent 执行上下文
500
509
  loader: 子会话 ToolRuntimeLoader
501
510
  model: 语言模型(str 或 BaseChatModel),None 时继承 ctx.model
502
- on_progress: 进度回调(Channel B),每个工具调用步骤触发
511
+ on_progress: 进度回调(Channel B),每个工具调用步骤触发(支持异步)
503
512
  allowed_tool_names: 工具白名单,用于识别 XML 退化格式(如 <Read>...</Read>)
504
513
 
505
514
  Returns:
@@ -536,7 +545,7 @@ async def run_subagent(
536
545
  on_progress=on_progress,
537
546
  trace=trace,
538
547
  )
539
- return _build_subagent_result(
548
+ return await _build_subagent_result(
540
549
  ctx=ctx,
541
550
  collected=collected,
542
551
  transcript=transcript,
@@ -554,7 +563,7 @@ async def run_subagent_with_background_signal(
554
563
  ctx: SubagentContext,
555
564
  loader: Any,
556
565
  model: Any | None = None,
557
- on_progress: Callable[[SubagentProgressEvent], None] | None = None,
566
+ on_progress: Any = None,
558
567
  background_signal: asyncio.Event | None = None,
559
568
  on_background_request: Callable[[SubagentContext], str] | None = None,
560
569
  allowed_tool_names: set[str] | None = None,
@@ -84,6 +84,10 @@ class LangchainAgentEventType(Enum):
84
84
  # 子 Agent
85
85
  SUBAGENT_START = "subagent-start"
86
86
  SUBAGENT_END = "subagent-end"
87
+ # 子 Agent 内部工具调用事件(通过 adispatch_custom_event 冒泡)
88
+ SUBAGENT_TOOL_CALL = "subagent-tool-call"
89
+ SUBAGENT_TOOL_RESULT = "subagent-tool-result"
90
+ SUBAGENT_MODEL_STEP = "subagent-model-step"
87
91
 
88
92
  # 错误
89
93
  ERROR = "error"
@@ -229,6 +233,11 @@ class LangGraphToLangchainAgentEventAdapter:
229
233
  async for oc_event in self._handle_error(name, data):
230
234
  yield oc_event
231
235
 
236
+ elif event_type == "on_custom_event":
237
+ async for oc_event in self._handle_custom_event(event):
238
+ if oc_event is not None:
239
+ yield oc_event
240
+
232
241
  def _event(
233
242
  self,
234
243
  *,
@@ -253,6 +262,10 @@ class LangGraphToLangchainAgentEventAdapter:
253
262
  def emit_subagent_event(self, progress_event: Any) -> LangchainAgentEvent | None:
254
263
  """将子 agent 的进度事件转换为 LangchainAgentEvent(事件冒泡)。
255
264
 
265
+ .. deprecated::
266
+ 推荐使用 adispatch_custom_event + _handle_custom_event 路径(Channel A)。
267
+ 此方法保留用于兼容旧代码和测试。
268
+
256
269
  用于实现 CC 风格的子 agent 内部工具调用事件转发。
257
270
  当子 agent 调用工具时,其事件通过 tool_progress_callback 冒泡到父级,
258
271
  父级调用此方法将事件转换为标准格式。
@@ -661,14 +674,24 @@ class LangGraphToLangchainAgentEventAdapter:
661
674
  if self.enable_hook_events and self._is_hook_node(name):
662
675
  output = data.get("output") if isinstance(data, dict) else None
663
676
  outcome = "success"
677
+ hook_result_data: dict[str, Any] = {}
664
678
  if isinstance(output, dict):
665
679
  outcome = str(output.get("outcome") or outcome)
680
+ # 提取 Hook 输出结果(对齐 CC hook_response)
681
+ hook_result_data = {
682
+ "stdouts": output.get("stdouts"),
683
+ "stderrs": output.get("stderrs"),
684
+ "exit_codes": output.get("exit_codes"),
685
+ "combined_stdout": output.get("combined_stdout"),
686
+ "combined_stderr": output.get("combined_stderr"),
687
+ }
666
688
  yield self._event(
667
689
  event_type=LangchainAgentEventType.HOOK_FINISHED,
668
690
  data={
669
691
  "hook_event": self._hook_event_from_name(name),
670
692
  "hook_name": name,
671
693
  "outcome": outcome,
694
+ **hook_result_data, # 包含 stdout/stderr/exit_code
672
695
  },
673
696
  step_index=self.state.step_index or None,
674
697
  )
@@ -1045,6 +1068,81 @@ class LangGraphToLangchainAgentEventAdapter:
1045
1068
  step_index=self.state.step_index,
1046
1069
  )
1047
1070
 
1071
+ async def _handle_custom_event(
1072
+ self, event: Dict[str, Any]
1073
+ ) -> AsyncGenerator[LangchainAgentEvent, None]:
1074
+ """处理 on_custom_event(子 Agent 事件冒泡)。
1075
+
1076
+ 当子 Agent 通过 adispatch_custom_event 发射进度事件时,
1077
+ 这些事件会通过主 graph 的 astream_events 流冒泡上来。
1078
+
1079
+ 事件格式:
1080
+ {
1081
+ "event": "on_custom_event",
1082
+ "name": "subagent_progress",
1083
+ "data": {
1084
+ "type": "tool_use" | "tool_result" | "model_step" | "completed",
1085
+ "subagent_type": str,
1086
+ "agent_id": str,
1087
+ "tool_name": str,
1088
+ "summary": str,
1089
+ "step": int,
1090
+ "parent_tool_use_id": str,
1091
+ }
1092
+ }
1093
+ """
1094
+ if not self.enable_subagent_events:
1095
+ return
1096
+
1097
+ event_name = event.get("name", "")
1098
+ if event_name != "subagent_progress":
1099
+ return
1100
+
1101
+ data = event.get("data", {})
1102
+ if not isinstance(data, dict):
1103
+ return
1104
+
1105
+ event_type = data.get("type", "")
1106
+ parent_tool_use_id = data.get("parent_tool_use_id")
1107
+
1108
+ # 映射到 SDK 事件类型
1109
+ type_mapping = {
1110
+ "tool_use": LangchainAgentEventType.SUBAGENT_TOOL_CALL,
1111
+ "tool_result": LangchainAgentEventType.SUBAGENT_TOOL_RESULT,
1112
+ "model_step": LangchainAgentEventType.SUBAGENT_MODEL_STEP,
1113
+ "completed": None, # 不发事件,由 SUBAGENT_END 表示
1114
+ }
1115
+
1116
+ target_type = type_mapping.get(event_type)
1117
+ if target_type is None:
1118
+ return
1119
+
1120
+ event_data: Dict[str, Any] = {
1121
+ "subagent_type": data.get("subagent_type", ""),
1122
+ "agent_id": data.get("agent_id", ""),
1123
+ "summary": data.get("summary", "")[:200],
1124
+ }
1125
+
1126
+ if parent_tool_use_id:
1127
+ event_data["parent_tool_use_id"] = parent_tool_use_id
1128
+
1129
+ if event_type == "tool_use":
1130
+ event_data["tool_name"] = data.get("tool_name", "")
1131
+ event_data["status"] = "running"
1132
+ event_data["step"] = data.get("step", 0)
1133
+ elif event_type == "tool_result":
1134
+ event_data["tool_name"] = data.get("tool_name", "")
1135
+ event_data["summary"] = data.get("summary", "")[:200]
1136
+ elif event_type == "model_step":
1137
+ event_data["text"] = data.get("summary", "")
1138
+
1139
+ yield self._event(
1140
+ event_type=target_type,
1141
+ data=event_data,
1142
+ step_index=self.state.step_index,
1143
+ tool_name=data.get("tool_name"),
1144
+ )
1145
+
1048
1146
 
1049
1147
  __all__ = [
1050
1148
  "LangchainAgentEventType",