langchain-agentx-python 0.6.0__tar.gz → 0.6.1__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 (503) hide show
  1. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/PKG-INFO +1 -1
  2. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/__init__.py +1 -1
  3. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/config/agent_loop_config.py +1 -0
  4. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/graph/factory.py +12 -0
  5. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/factory.py +8 -1
  6. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/pipeline.py +3 -2
  7. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/__init__.py +4 -0
  8. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/cli_interactive.py +6 -2
  9. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/headless.py +23 -5
  10. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/legacy_resolver_adapter.py +13 -3
  11. langchain-agentx-python-0.6.1/langchain_agentx/tool_runtime/prompt/messages.py +44 -0
  12. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/race.py +75 -14
  13. langchain-agentx-python-0.6.1/langchain_agentx/tool_runtime/prompt/session_mode.py +28 -0
  14. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/types.py +54 -2
  15. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/backend.py +14 -2
  16. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/security.py +2 -64
  17. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/session_runtime.py +2 -1
  18. langchain-agentx-python-0.6.1/langchain_agentx/tools/bash/shell_quoting.py +145 -0
  19. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/tool.py +1 -14
  20. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx_python.egg-info/PKG-INFO +1 -1
  21. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx_python.egg-info/SOURCES.txt +3 -0
  22. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/pyproject.toml +1 -1
  23. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/LICENSE +0 -0
  24. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/README.md +0 -0
  25. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/__init__.py +0 -0
  26. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/builtin/__init__.py +0 -0
  27. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/builtin/clear.py +0 -0
  28. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/builtin/compact.py +0 -0
  29. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/builtin/memory.py +0 -0
  30. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
  31. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/context.py +0 -0
  32. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/dispatcher.py +0 -0
  33. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/registry.py +0 -0
  34. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/result.py +0 -0
  35. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/command/types.py +0 -0
  36. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/config/__init__.py +0 -0
  37. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/config/model_profiles.yaml +0 -0
  38. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/config/model_profiles.yaml.example +0 -0
  39. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/__init__.py +0 -0
  40. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/config/__init__.py +0 -0
  41. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/config/agent_config.py +0 -0
  42. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
  43. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/config/runtime_settings.py +0 -0
  44. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/config/token_estimator.py +0 -0
  45. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/__init__.py +0 -0
  46. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/blocking_guard.py +0 -0
  47. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/compaction_service.py +0 -0
  48. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/message_utils.py +0 -0
  49. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/pipeline.py +0 -0
  50. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/settings.py +0 -0
  51. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/__init__.py +0 -0
  52. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
  53. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/base.py +0 -0
  54. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/collapse.py +0 -0
  55. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
  56. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/noop.py +0 -0
  57. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/snip.py +0 -0
  58. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
  59. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/context/types.py +0 -0
  60. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/exit/__init__.py +0 -0
  61. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/exit/exit_logic.py +0 -0
  62. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/exit/reason_codes.py +0 -0
  63. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/graph/__init__.py +0 -0
  64. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
  65. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/graph/graph_edges.py +0 -0
  66. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/__init__.py +0 -0
  67. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
  68. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/config.py +0 -0
  69. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/engine.py +0 -0
  70. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
  71. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/executors/agent.py +0 -0
  72. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/executors/command.py +0 -0
  73. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/executors/http.py +0 -0
  74. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
  75. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/graph_wiring.py +0 -0
  76. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/hook_projection.py +0 -0
  77. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/registry.py +0 -0
  78. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/trust.py +0 -0
  79. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/hook/types.py +0 -0
  80. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/injection/__init__.py +0 -0
  81. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/injection/dedup.py +0 -0
  82. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/loop_abort.py +0 -0
  83. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/__init__.py +0 -0
  84. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/model_node.py +0 -0
  85. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/model_nodes.py +0 -0
  86. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
  87. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/retrier.py +0 -0
  88. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/retry_bridge.py +0 -0
  89. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/retry_events.py +0 -0
  90. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/retry_policy.py +0 -0
  91. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/schema_and_format.py +0 -0
  92. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
  93. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
  94. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
  95. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/prompt/__init__.py +0 -0
  96. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/prompt/builder.py +0 -0
  97. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/prompt/builtin.py +0 -0
  98. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/prompt/compact.py +0 -0
  99. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/prompt/sections.py +0 -0
  100. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/prompt/session_context.py +0 -0
  101. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/runtime/__init__.py +0 -0
  102. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/runtime/context.py +0 -0
  103. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/runtime/context_factory.py +0 -0
  104. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
  105. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/__init__.py +0 -0
  106. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/async_runner.py +0 -0
  107. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/context.py +0 -0
  108. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
  109. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/graph.py +0 -0
  110. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/orchestrator.py +0 -0
  111. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/progress.py +0 -0
  112. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/prompt.py +0 -0
  113. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/runner.py +0 -0
  114. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/loop/subagent/transcript.py +0 -0
  115. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/__init__.py +0 -0
  116. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/instruction/__init__.py +0 -0
  117. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/instruction/loader.py +0 -0
  118. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/instruction/resolver.py +0 -0
  119. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/instruction/runtime.py +0 -0
  120. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/instruction/sections.py +0 -0
  121. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/instruction/types.py +0 -0
  122. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/__init__.py +0 -0
  123. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/age.py +0 -0
  124. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
  125. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/extractor.py +0 -0
  126. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/loader.py +0 -0
  127. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/paths.py +0 -0
  128. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/recall.py +0 -0
  129. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/runtime.py +0 -0
  130. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/scan.py +0 -0
  131. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/memdir/types.py +0 -0
  132. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/session/__init__.py +0 -0
  133. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/session/compact_bridge.py +0 -0
  134. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/session/prompts.py +0 -0
  135. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/memory/session/session_memory.py +0 -0
  136. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/__init__.py +0 -0
  137. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/__init__.py +0 -0
  138. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
  139. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
  140. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
  141. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
  142. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
  143. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
  144. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
  145. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
  146. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/service.py +0 -0
  147. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/state.py +0 -0
  148. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/evaluation/store.py +0 -0
  149. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/events/__init__.py +0 -0
  150. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
  151. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/logging/__init__.py +0 -0
  152. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/logging/debug_burst.py +0 -0
  153. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/logging/logging_config.py +0 -0
  154. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/logging/logging_contract.py +0 -0
  155. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/replay/__init__.py +0 -0
  156. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/replay/cli.py +0 -0
  157. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/replay/service.py +0 -0
  158. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/replay/store.py +0 -0
  159. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/replay/ui.py +0 -0
  160. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/__init__.py +0 -0
  161. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/collector.py +0 -0
  162. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/event_emitter.py +0 -0
  163. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
  164. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/models.py +0 -0
  165. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
  166. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/trace_callback.py +0 -0
  167. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
  168. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/__init__.py +0 -0
  169. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/builtin.py +0 -0
  170. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/config.py +0 -0
  171. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/loader.py +0 -0
  172. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/manifest.py +0 -0
  173. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/registries.py +0 -0
  174. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/plugin/types.py +0 -0
  175. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/provider/__init__.py +0 -0
  176. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/provider/anthropic.py +0 -0
  177. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
  178. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/provider/env.py +0 -0
  179. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/provider/model_profile.py +0 -0
  180. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/provider/openai.py +0 -0
  181. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/__init__.py +0 -0
  182. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/agent_session.py +0 -0
  183. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/conversation_factory.py +0 -0
  184. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/conversation_recovery.py +0 -0
  185. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/conversation_session.py +0 -0
  186. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/session/protocol.py +0 -0
  187. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/__init__.py +0 -0
  188. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/core/__init__.py +0 -0
  189. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/core/ids.py +0 -0
  190. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
  191. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
  192. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/core/types.py +0 -0
  193. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
  194. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
  195. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
  196. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
  197. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
  198. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
  199. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
  200. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
  201. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
  202. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
  203. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/output/__init__.py +0 -0
  204. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/output/sink.py +0 -0
  205. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
  206. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
  207. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
  208. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
  209. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
  210. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
  211. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
  212. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
  213. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/store/__init__.py +0 -0
  214. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
  215. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
  216. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasklist/__init__.py +0 -0
  217. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasklist/high_water_mark.py +0 -0
  218. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasklist/lock.py +0 -0
  219. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasklist/models.py +0 -0
  220. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasklist/path_resolver.py +0 -0
  221. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasklist/store.py +0 -0
  222. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
  223. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
  224. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
  225. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
  226. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
  227. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
  228. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
  229. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
  230. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
  231. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
  232. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
  233. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
  234. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
  235. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
  236. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
  237. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
  238. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
  239. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
  240. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
  241. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
  242. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
  243. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
  244. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
  245. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
  246. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
  247. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
  248. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
  249. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
  250. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
  251. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
  252. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
  253. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
  254. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
  255. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
  256. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
  257. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
  258. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
  259. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
  260. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
  261. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
  262. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
  263. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
  264. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
  265. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
  266. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
  267. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/__init__.py +0 -0
  268. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/adapter.py +0 -0
  269. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/__init__.py +0 -0
  270. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/allowlist.py +0 -0
  271. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/classifier/__init__.py +0 -0
  272. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/classifier/classifier.py +0 -0
  273. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/classifier/parser.py +0 -0
  274. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/classifier/prompt.py +0 -0
  275. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/classifier/schema.py +0 -0
  276. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/classifier/transcript.py +0 -0
  277. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/config.py +0 -0
  278. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/config_update.py +0 -0
  279. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/decision.py +0 -0
  280. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/events.py +0 -0
  281. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/factory.py +0 -0
  282. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/feedback.py +0 -0
  283. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/hook.py +0 -0
  284. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/rule_stripping.py +0 -0
  285. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/auto_mode/state.py +0 -0
  286. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/base.py +0 -0
  287. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/errors.py +0 -0
  288. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
  289. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/loader.py +0 -0
  290. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/loop_loader.py +0 -0
  291. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/models.py +0 -0
  292. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/override.py +0 -0
  293. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/path_safety.py +0 -0
  294. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/permission_context.py +0 -0
  295. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/permission_decision.py +0 -0
  296. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/policy.py +0 -0
  297. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/policy_decorator.py +0 -0
  298. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/process_loader.py +0 -0
  299. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/_abort.py +0 -0
  300. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/prompt/handler.py +0 -0
  301. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/read_ignore_patterns.py +0 -0
  302. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/read_permission.py +0 -0
  303. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/registry.py +0 -0
  304. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
  305. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
  306. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
  307. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
  308. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
  309. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
  310. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/session_store.py +0 -0
  311. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
  312. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
  313. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/__init__.py +0 -0
  314. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/__init__.py +0 -0
  315. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/backend.py +0 -0
  316. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
  317. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
  318. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
  319. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/general.py +0 -0
  320. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
  321. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
  322. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
  323. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
  324. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
  325. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/limits.py +0 -0
  326. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/loader.py +0 -0
  327. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/models.py +0 -0
  328. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/prompt.py +0 -0
  329. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
  330. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/registry/config.py +0 -0
  331. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/registry/registry.py +0 -0
  332. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/scope.py +0 -0
  333. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/agent/tool.py +0 -0
  334. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
  335. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
  336. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
  337. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/models.py +0 -0
  338. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
  339. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
  340. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
  341. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/__init__.py +0 -0
  342. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/ast_security.py +0 -0
  343. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/auto_mode_adapter.py +0 -0
  344. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
  345. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
  346. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/boundary_check.py +0 -0
  347. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
  348. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/events.py +0 -0
  349. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/limits.py +0 -0
  350. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/mode_validation.py +0 -0
  351. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/models.py +0 -0
  352. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/observability.py +0 -0
  353. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/output_utils.py +0 -0
  354. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/path_security.py +0 -0
  355. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/prompt.py +0 -0
  356. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
  357. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/result_presenter.py +0 -0
  358. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
  359. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
  360. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/sed_validation.py +0 -0
  361. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/semantics.py +0 -0
  362. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/session_manager.py +0 -0
  363. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/shell_locator.py +0 -0
  364. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/task_runtime.py +0 -0
  365. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
  366. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/__init__.py +0 -0
  367. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/backend.py +0 -0
  368. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/diff_generator.py +0 -0
  369. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
  370. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/limits.py +0 -0
  371. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/models.py +0 -0
  372. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/prompt.py +0 -0
  373. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/quote_match.py +0 -0
  374. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
  375. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/settings_validator.py +0 -0
  376. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/staleness.py +0 -0
  377. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/tool.py +0 -0
  378. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/edit/validator.py +0 -0
  379. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/__init__.py +0 -0
  380. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/models.py +0 -0
  381. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/pagination.py +0 -0
  382. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/prompt.py +0 -0
  383. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
  384. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
  385. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/glob/tool.py +0 -0
  386. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/grep/__init__.py +0 -0
  387. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/grep/backend.py +0 -0
  388. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/grep/models.py +0 -0
  389. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/grep/prompt.py +0 -0
  390. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
  391. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/grep/tool.py +0 -0
  392. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/read/__init__.py +0 -0
  393. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/read/backend.py +0 -0
  394. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/read/limits.py +0 -0
  395. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/read/models.py +0 -0
  396. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/read/prompt.py +0 -0
  397. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/read/tool.py +0 -0
  398. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
  399. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/__init__.py +0 -0
  400. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
  401. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/loader.py +0 -0
  402. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/models.py +0 -0
  403. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/policy.py +0 -0
  404. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/prompt.py +0 -0
  405. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/skill/tool.py +0 -0
  406. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_create/__init__.py +0 -0
  407. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_create/hooks.py +0 -0
  408. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_create/limits.py +0 -0
  409. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_create/models.py +0 -0
  410. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_create/prompt.py +0 -0
  411. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_create/tool.py +0 -0
  412. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_get/__init__.py +0 -0
  413. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_get/models.py +0 -0
  414. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_get/prompt.py +0 -0
  415. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_get/tool.py +0 -0
  416. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_list/__init__.py +0 -0
  417. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_list/models.py +0 -0
  418. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_list/prompt.py +0 -0
  419. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_list/tool.py +0 -0
  420. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_update/__init__.py +0 -0
  421. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_update/hooks.py +0 -0
  422. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_update/models.py +0 -0
  423. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_update/prompt.py +0 -0
  424. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/task_update/tool.py +0 -0
  425. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/user_message/__init__.py +0 -0
  426. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/user_message/attachments.py +0 -0
  427. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/user_message/models.py +0 -0
  428. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/user_message/prompt.py +0 -0
  429. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/user_message/runtime_config.py +0 -0
  430. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/user_message/tool.py +0 -0
  431. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/__init__.py +0 -0
  432. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/backend.py +0 -0
  433. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/limits.py +0 -0
  434. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/loader.py +0 -0
  435. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/models.py +0 -0
  436. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/preapproved.py +0 -0
  437. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/prompt.py +0 -0
  438. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/summary.py +0 -0
  439. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/webfetch/tool.py +0 -0
  440. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/__init__.py +0 -0
  441. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/backend.py +0 -0
  442. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/events.py +0 -0
  443. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/limits.py +0 -0
  444. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/loader.py +0 -0
  445. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/models.py +0 -0
  446. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/prompt.py +0 -0
  447. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/websearch/tool.py +0 -0
  448. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/__init__.py +0 -0
  449. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/backend.py +0 -0
  450. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/limits.py +0 -0
  451. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/models.py +0 -0
  452. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/prompt.py +0 -0
  453. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/tool.py +0 -0
  454. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/tools/write/validator.py +0 -0
  455. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/__init__.py +0 -0
  456. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/cwd.py +0 -0
  457. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/host_platform.py +0 -0
  458. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/path_hierarchy.py +0 -0
  459. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/path_user_input.py +0 -0
  460. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/rg_executable.py +0 -0
  461. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/subprocess_text.py +0 -0
  462. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/temp_paths.py +0 -0
  463. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/unc_path.py +0 -0
  464. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/utils/win_reserved_paths.py +0 -0
  465. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/__init__.py +0 -0
  466. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/base.py +0 -0
  467. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/batch.py +0 -0
  468. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/dag.py +0 -0
  469. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
  470. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
  471. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
  472. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
  473. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
  474. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
  475. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
  476. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
  477. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/event_adapter/types.py +0 -0
  478. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/node.py +0 -0
  479. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/patterns/__init__.py +0 -0
  480. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/patterns/chaining.py +0 -0
  481. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
  482. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
  483. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
  484. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/patterns/routing.py +0 -0
  485. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workflow/state.py +0 -0
  486. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/__init__.py +0 -0
  487. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/boundary.py +0 -0
  488. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/capabilities.py +0 -0
  489. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/config.py +0 -0
  490. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/errors.py +0 -0
  491. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/grant.py +0 -0
  492. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/l3_root_grant.py +0 -0
  493. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
  494. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/resolver.py +0 -0
  495. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/root_grant_manager.py +0 -0
  496. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/tool_boundary.py +0 -0
  497. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/validators.py +0 -0
  498. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx/workspace/view.py +0 -0
  499. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
  500. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
  501. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx_python.egg-info/requires.txt +0 -0
  502. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/langchain_agentx_python.egg-info/top_level.txt +0 -0
  503. {langchain-agentx-python-0.6.0 → langchain-agentx-python-0.6.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain-agentx-python
3
- Version: 0.6.0
3
+ Version: 0.6.1
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.6.0"
14
+ __version__ = "0.6.1"
15
15
 
16
16
  from .loop import ( # noqa: F401
17
17
  create_loop_agent,
@@ -67,6 +67,7 @@ class AgentLoopConfig:
67
67
  subagent_type: str | None = None
68
68
  # 观测控制面:主 Agent 打开则子 Agent 默认继承打开
69
69
  trace_enabled: bool = True
70
+ headless: bool = False
70
71
  # 模型能力配置:显式 profile > registry 匹配 > model metadata > 代码兜底
71
72
  model_profile: ModelProfile | None = None
72
73
  model_profile_registry: ModelProfileRegistry | None = None
@@ -101,6 +101,7 @@ from ..config import AgentLoopConfig, ModelContextResolver
101
101
  from ..config.runtime_settings import compute_recursion_limit
102
102
  from ...provider.model_profile import ModelProfileRegistry # re-exported for legacy tests
103
103
  from ...workspace import resolve_agent_workspace_config
104
+ from ...tool_runtime.prompt.session_mode import infer_session_headless
104
105
 
105
106
  logger = logging.getLogger(__name__)
106
107
  SKILL_TOOL_NAME = "skill"
@@ -195,6 +196,7 @@ class LoopGraphBuilder:
195
196
  enable_git_snapshot: bool | None = None,
196
197
  include_default_session_context: bool = True,
197
198
  enable_dynamic_root_grant: bool = False,
199
+ headless: bool | None = None,
198
200
  ) -> None:
199
201
  self._raw_model = model
200
202
  self._raw_system_prompt = system_prompt
@@ -240,6 +242,7 @@ class LoopGraphBuilder:
240
242
  self._raw_enable_git_snapshot = enable_git_snapshot
241
243
  self._raw_include_default_session_context = include_default_session_context
242
244
  self._raw_enable_dynamic_root_grant = enable_dynamic_root_grant
245
+ self._raw_headless = headless
243
246
 
244
247
  self._prepared = False
245
248
 
@@ -368,6 +371,7 @@ class LoopGraphBuilder:
368
371
  subagent_type=self._raw_subagent_type,
369
372
  trace_enabled=self._raw_enable_trace,
370
373
  model_profile_registry=self._model_profile_registry,
374
+ headless=self._resolve_session_headless(),
371
375
  )
372
376
  self._compaction_settings = self._build_compaction_settings()
373
377
  self._loop_context_compaction = default_loop_context_compaction().with_default_pipeline(
@@ -477,6 +481,12 @@ class LoopGraphBuilder:
477
481
  )
478
482
  self._prepared = True
479
483
 
484
+ def _resolve_session_headless(self) -> bool:
485
+ return infer_session_headless(
486
+ headless=self._raw_headless,
487
+ container_type=self._raw_container_type,
488
+ )
489
+
480
490
  def _resolve_model_session_and_logger(
481
491
  self,
482
492
  ) -> tuple[BaseChatModel, str, ObservabilityLoggerAdapter]:
@@ -1443,6 +1453,7 @@ def create_loop_agent(
1443
1453
  enable_git_snapshot: bool | None = None,
1444
1454
  include_default_session_context: bool = True,
1445
1455
  enable_dynamic_root_grant: bool = False,
1456
+ headless: bool | None = None,
1446
1457
  ) -> CompiledStateGraph[
1447
1458
  AgentState[ResponseT], ContextT, _InputAgentState, _OutputAgentState[ResponseT]
1448
1459
  ]:
@@ -1493,6 +1504,7 @@ def create_loop_agent(
1493
1504
  enable_git_snapshot=enable_git_snapshot,
1494
1505
  include_default_session_context=include_default_session_context,
1495
1506
  enable_dynamic_root_grant=enable_dynamic_root_grant,
1507
+ headless=headless,
1496
1508
  )
1497
1509
  tool_node = builder._build_tool_node()
1498
1510
  model_node = builder._build_model_nodes(tool_node)
@@ -24,6 +24,7 @@ from langchain_core.language_models.chat_models import BaseChatModel
24
24
  from ..loop.graph.factory import create_loop_agent
25
25
  from ..loop.hook import HookEngine, HooksConfigSnapshot, HookRegistry, WorkspaceTrustChecker
26
26
  from ..loop.subagent.transcript import SubagentTranscriptStore
27
+ from ..tool_runtime.prompt.session_mode import infer_session_headless
27
28
  from ..workspace import resolve_agent_workspace_config
28
29
  from .agent_session import AgentSession
29
30
 
@@ -40,6 +41,7 @@ def create_agent_session(
40
41
  transcript_writer: SubagentTranscriptStore | None = None,
41
42
  container_type: str = "interactive",
42
43
  enable_trace: bool = True,
44
+ headless: bool | None = None,
43
45
  **loop_kwargs: Any,
44
46
  ) -> AgentSession:
45
47
  """创建默认走 graph_factory 注入路径的 AgentSession。
@@ -48,6 +50,10 @@ def create_agent_session(
48
50
  (环境变量 ``LANGCHAIN_AGENTX_*`` 与产品默认 ``.langchain_agentx``)。
49
51
  """
50
52
  resolved_session_id = session_id or f"session-{uuid4().hex}"
53
+ resolved_headless = infer_session_headless(
54
+ headless=headless,
55
+ container_type=container_type,
56
+ )
51
57
  workspace_cfg = resolve_agent_workspace_config(
52
58
  workspace_root=workspace_root,
53
59
  agent_home=agent_home,
@@ -65,7 +71,7 @@ def create_agent_session(
65
71
  hook_engine = HookEngine(
66
72
  snapshot,
67
73
  trust_checker=WorkspaceTrustChecker(
68
- headless=_is_headless_container(container_type),
74
+ headless=resolved_headless,
69
75
  workspace_trust_accepted=workspace_cfg.workspace_trust_accepted,
70
76
  ),
71
77
  )
@@ -88,6 +94,7 @@ def create_agent_session(
88
94
  enable_trace=enable_trace,
89
95
  enable_dynamic_root_grant=True,
90
96
  capabilities=capabilities,
97
+ headless=resolved_headless,
91
98
  **loop_kwargs,
92
99
  )
93
100
 
@@ -910,7 +910,8 @@ class ToolExecutorPipeline:
910
910
  ask_decision=auth,
911
911
  ask_prompt=auth.ask_prompt,
912
912
  suggestions=self._suggestions_from_auth(auth),
913
- headless=self._headless,
913
+ headless=False,
914
+ session_headless=self._headless,
914
915
  )
915
916
 
916
917
  def _revalidate_after_l3(
@@ -1040,7 +1041,7 @@ class ToolExecutorPipeline:
1040
1041
  if resp.behavior == "deny":
1041
1042
  env = blocked_envelope(
1042
1043
  tool.name,
1043
- resp.reason or auth.ask_prompt or "User rejected the operation.",
1044
+ resp.message or resp.reason or auth.ask_prompt or "User rejected the operation.",
1044
1045
  policy_id=auth.policy_id,
1045
1046
  )
1046
1047
  self._attach_runtime_observability(
@@ -14,6 +14,8 @@ from .headless import HeadlessPromptHandler
14
14
  from .legacy_resolver_adapter import LegacyResolverPromptHandler
15
15
  from .race import HitlRaceCoordinator, PromptBranch, PromptClassifier
16
16
  from .types import (
17
+ DecisionReason,
18
+ DecisionReasonType,
17
19
  PermissionUpdate,
18
20
  PromptDecisionSource,
19
21
  PromptRequest,
@@ -22,6 +24,8 @@ from .types import (
22
24
 
23
25
  __all__ = [
24
26
  "PermissionPromptHandler",
27
+ "DecisionReason",
28
+ "DecisionReasonType",
25
29
  "PermissionUpdate",
26
30
  "PromptDecisionSource",
27
31
  "PromptRequest",
@@ -42,7 +42,7 @@ def permission_resolver_to_user_ui(
42
42
  return PromptResponse(
43
43
  behavior="allow" if allowed else "deny",
44
44
  decision_source=PromptDecisionSource.USER_UI,
45
- reason=None if allowed else (prompt or "denied by user"),
45
+ message=None if allowed else (prompt or "denied by user"),
46
46
  )
47
47
 
48
48
  return _ui
@@ -67,9 +67,10 @@ class CliInteractivePromptHandler(HitlRaceCoordinator):
67
67
  user_ui: UserUiCallback,
68
68
  hooks: Sequence[PromptBranch] | None = None,
69
69
  classifier: PromptClassifier | None = None,
70
- hard_timeout_seconds: float = 60.0,
70
+ hard_timeout_seconds: float | None = None,
71
71
  hook_timeout_seconds: float = 30.0,
72
72
  classifier_timeout_seconds: float = 15.0,
73
+ headless_session: bool = False,
73
74
  ) -> None:
74
75
  super().__init__(
75
76
  hooks=hooks,
@@ -78,6 +79,7 @@ class CliInteractivePromptHandler(HitlRaceCoordinator):
78
79
  hard_timeout_seconds=hard_timeout_seconds,
79
80
  hook_timeout_seconds=hook_timeout_seconds,
80
81
  classifier_timeout_seconds=classifier_timeout_seconds,
82
+ headless_session=headless_session,
81
83
  )
82
84
 
83
85
  @classmethod
@@ -107,6 +109,7 @@ class CliInteractivePolicyEngine(PolicyEngineDecorator):
107
109
  auto_mode_hook: Any | None = None,
108
110
  hooks: Sequence[PromptBranch] | None = None,
109
111
  classifier: PromptClassifier | None = None,
112
+ headless_session: bool = False,
110
113
  ) -> None:
111
114
  warnings.warn(
112
115
  "CliInteractivePolicyEngine is deprecated; use "
@@ -130,6 +133,7 @@ class CliInteractivePolicyEngine(PolicyEngineDecorator):
130
133
  user_ui=ui,
131
134
  hooks=hooks,
132
135
  classifier=classifier,
136
+ headless_session=headless_session,
133
137
  )
134
138
 
135
139
  @property
@@ -14,13 +14,19 @@ import logging
14
14
  from collections.abc import Sequence
15
15
 
16
16
  from .race import PromptBranch, _deny, _run_hook_chain
17
- from .types import PromptDecisionSource, PromptRequest, PromptResponse
17
+ from .types import (
18
+ DecisionReason,
19
+ DecisionReasonType,
20
+ PromptDecisionSource,
21
+ PromptRequest,
22
+ PromptResponse,
23
+ )
18
24
 
19
25
  logger = logging.getLogger(__name__)
20
26
 
21
27
 
22
28
  class HeadlessPromptHandler:
23
- """非交互 L3:只跑 hook,无 hook 决议则 ``HEADLESS_FALLBACK`` deny。"""
29
+ """非交互 L3:只跑 hook,无 hook 决议则 ``PROMPTS_UNAVAILABLE`` deny。"""
24
30
 
25
31
  def __init__(
26
32
  self,
@@ -34,7 +40,11 @@ class HeadlessPromptHandler:
34
40
  async def handle(self, request: PromptRequest) -> PromptResponse:
35
41
  if not self._hooks:
36
42
  return _deny(
37
- reason="prompts unavailable",
43
+ reason=DecisionReason(
44
+ type=DecisionReasonType.PROMPTS_UNAVAILABLE,
45
+ detail="prompts unavailable",
46
+ ),
47
+ tool_name=request.tool_name,
38
48
  source=PromptDecisionSource.HEADLESS_FALLBACK,
39
49
  )
40
50
  try:
@@ -46,12 +56,20 @@ class HeadlessPromptHandler:
46
56
  except Exception as exc:
47
57
  logger.exception("headless hook chain failed for %s: %s", request.tool_name, exc)
48
58
  return _deny(
49
- reason="headless hook failure",
59
+ reason=DecisionReason(
60
+ type=DecisionReasonType.PROMPTS_UNAVAILABLE,
61
+ detail=f"headless hook failure: {exc}",
62
+ ),
63
+ tool_name=request.tool_name,
50
64
  source=PromptDecisionSource.HEADLESS_FALLBACK,
51
65
  )
52
66
  if resp is not None:
53
67
  return resp
54
68
  return _deny(
55
- reason="prompts unavailable",
69
+ reason=DecisionReason(
70
+ type=DecisionReasonType.PROMPTS_UNAVAILABLE,
71
+ detail="prompts unavailable",
72
+ ),
73
+ tool_name=request.tool_name,
56
74
  source=PromptDecisionSource.HEADLESS_FALLBACK,
57
75
  )
@@ -14,7 +14,13 @@ from __future__ import annotations
14
14
  import warnings
15
15
 
16
16
  from ..resolvers.base import PermissionResolver
17
- from .types import PromptDecisionSource, PromptRequest, PromptResponse
17
+ from .types import (
18
+ DecisionReason,
19
+ DecisionReasonType,
20
+ PromptDecisionSource,
21
+ PromptRequest,
22
+ PromptResponse,
23
+ )
18
24
 
19
25
 
20
26
  class LegacyResolverPromptHandler:
@@ -37,10 +43,14 @@ class LegacyResolverPromptHandler:
37
43
  return PromptResponse(
38
44
  behavior="deny",
39
45
  decision_source=PromptDecisionSource.LEGACY_RESOLVER,
40
- reason=f"legacy resolver failed: {exc}",
46
+ decision_reason=DecisionReason(
47
+ type=DecisionReasonType.USER_REJECT,
48
+ detail=f"legacy resolver failed: {exc}",
49
+ ),
50
+ message=f"Permission denied: legacy resolver failed: {exc}",
41
51
  )
42
52
  return PromptResponse(
43
53
  behavior="allow" if allowed else "deny",
44
54
  decision_source=PromptDecisionSource.LEGACY_RESOLVER,
45
- reason=None if allowed else (prompt or "denied by legacy resolver"),
55
+ message=None if allowed else (prompt or "denied by legacy resolver"),
46
56
  )
@@ -0,0 +1,44 @@
1
+ """
2
+ prompt/messages.py — L3 deny 消息模板(对齐 CC AUTO_REJECT_MESSAGE)
3
+
4
+ 职责:
5
+ LLM-facing 拒因文案与 workaround 指引;内部诊断与展示层分离。
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ DENIAL_WORKAROUND_GUIDANCE = (
11
+ "You should only try to work around this restriction in reasonable ways "
12
+ "that do not attempt to bypass the intent behind this denial. "
13
+ "If you believe this capability is essential to complete the user's request, "
14
+ "STOP and explain to the user what you were trying to do and why you need this permission."
15
+ )
16
+
17
+ PROMPTS_UNAVAILABLE_TEMPLATE = (
18
+ "Permission to use {tool_name} has been denied because "
19
+ "this session is running in non-interactive mode. "
20
+ f"{DENIAL_WORKAROUND_GUIDANCE}"
21
+ )
22
+
23
+ UI_RESPONSE_TIMEOUT_TEMPLATE = (
24
+ "Permission to use {tool_name} has been denied because "
25
+ "no user response was received within the configured timeout. "
26
+ f"{DENIAL_WORKAROUND_GUIDANCE}"
27
+ )
28
+
29
+ USER_ABORT_TEMPLATE = (
30
+ "Permission to use {tool_name} has been denied because "
31
+ "the session was aborted before a user response was received. "
32
+ f"{DENIAL_WORKAROUND_GUIDANCE}"
33
+ )
34
+
35
+ NO_PARTICIPANTS_TEMPLATE = (
36
+ "Permission to use {tool_name} has been denied because "
37
+ "no permission prompt handler is configured for this session. "
38
+ f"{DENIAL_WORKAROUND_GUIDANCE}"
39
+ )
40
+
41
+ GENERIC_DENY_TEMPLATE = (
42
+ "Permission to use {tool_name} has been denied. "
43
+ f"{DENIAL_WORKAROUND_GUIDANCE}"
44
+ )
@@ -3,13 +3,14 @@ prompt/race.py — HitlRaceCoordinator(L3 默认交互 race)
3
3
 
4
4
  职责:
5
5
  三路并发(PermissionRequest hooks / classifier / user UI)+ FIRST_COMPLETED;
6
- deny 优先于 allow;abort hard_timeout;finally 取消余 task。
6
+ deny 优先于 allow;abort 与可选 hard_timeout;finally 取消余 task。
7
7
 
8
8
  链路位置:
9
9
  交互模式 pipeline 默认 prompt_handler(Phase 3 注入)。
10
10
 
11
11
  当前裁剪:
12
12
  hook 链为串行 awaitables 列表;classifier 单实例 Protocol。
13
+ UI 等待默认 unbounded(对齐 CC);hard_timeout 仅显式配置时生效。
13
14
  """
14
15
 
15
16
  from __future__ import annotations
@@ -22,7 +23,13 @@ from typing import Protocol
22
23
 
23
24
  from ._abort import _resolve_abort_event, run_with_branch_timeout, wait_for_abort
24
25
  from .handler import PermissionPromptHandler
25
- from .types import PromptDecisionSource, PromptRequest, PromptResponse
26
+ from .types import (
27
+ DecisionReason,
28
+ DecisionReasonType,
29
+ PromptDecisionSource,
30
+ PromptRequest,
31
+ PromptResponse,
32
+ )
26
33
 
27
34
  logger = logging.getLogger(__name__)
28
35
 
@@ -41,13 +48,15 @@ class PromptClassifier(Protocol):
41
48
 
42
49
  def _deny(
43
50
  *,
44
- reason: str,
51
+ reason: DecisionReason,
52
+ tool_name: str,
45
53
  source: PromptDecisionSource = PromptDecisionSource.HEADLESS_FALLBACK,
46
54
  ) -> PromptResponse:
47
55
  return PromptResponse(
48
56
  behavior="deny",
49
57
  decision_source=source,
50
- reason=reason,
58
+ decision_reason=reason,
59
+ message=reason.to_llm_message(tool_name),
51
60
  )
52
61
 
53
62
 
@@ -117,12 +126,15 @@ def _consume_completed(
117
126
  return deny, allow
118
127
 
119
128
 
129
+ def _is_headless_request(request: PromptRequest, *, headless_session: bool) -> bool:
130
+ return request.headless or request.session_headless or headless_session
131
+
132
+
120
133
  class HitlRaceCoordinator:
121
134
  """
122
135
  默认 L3 交互 race:hooks ‖ classifier ‖ user_ui。
123
136
 
124
- headless 请求应使用 :class:`HeadlessPromptHandler`;本类在 ``req.headless``
125
- 时仅跑 hook 链并 deny 兜底。
137
+ headless / UI 会话应在入口走 ``_run_headless``,不在 race 内赌时钟。
126
138
  """
127
139
 
128
140
  def __init__(
@@ -131,9 +143,10 @@ class HitlRaceCoordinator:
131
143
  hooks: Sequence[PromptBranch] | None = None,
132
144
  classifier: PromptClassifier | None = None,
133
145
  user_ui: PromptBranch | None = None,
134
- hard_timeout_seconds: float = 60.0,
146
+ hard_timeout_seconds: float | None = None,
135
147
  hook_timeout_seconds: float = 30.0,
136
148
  classifier_timeout_seconds: float = 15.0,
149
+ headless_session: bool = False,
137
150
  ) -> None:
138
151
  self._hooks = list(hooks or ())
139
152
  self._classifier = classifier
@@ -141,6 +154,14 @@ class HitlRaceCoordinator:
141
154
  self._hard_timeout = hard_timeout_seconds
142
155
  self._hook_timeout = hook_timeout_seconds
143
156
  self._classifier_timeout = classifier_timeout_seconds
157
+ self._headless_session = headless_session
158
+
159
+ if not headless_session and user_ui is None:
160
+ logger.warning(
161
+ "HitlRaceCoordinator created without user_ui in non-headless session — "
162
+ "interactive prompts will deny without participants. "
163
+ "Either set headless_session=True or provide user_ui."
164
+ )
144
165
 
145
166
  @classmethod
146
167
  def default(cls) -> HitlRaceCoordinator:
@@ -148,7 +169,7 @@ class HitlRaceCoordinator:
148
169
  return cls()
149
170
 
150
171
  async def handle(self, request: PromptRequest) -> PromptResponse:
151
- if request.headless:
172
+ if _is_headless_request(request, headless_session=self._headless_session):
152
173
  return await self._run_headless(request)
153
174
 
154
175
  task_sources: dict[asyncio.Task, PromptDecisionSource] = {}
@@ -185,7 +206,13 @@ class HitlRaceCoordinator:
185
206
  ] = PromptDecisionSource.USER_UI
186
207
 
187
208
  if not task_sources:
188
- return _deny(reason="no prompt participants configured")
209
+ return _deny(
210
+ reason=DecisionReason(
211
+ type=DecisionReasonType.NO_PARTICIPANTS,
212
+ detail="no prompt participants configured",
213
+ ),
214
+ tool_name=request.tool_name,
215
+ )
189
216
 
190
217
  abort_task: asyncio.Task[None] | None = None
191
218
  if _resolve_abort_event(request.ctx) is not None:
@@ -208,10 +235,26 @@ class HitlRaceCoordinator:
208
235
  return_when=asyncio.FIRST_COMPLETED,
209
236
  )
210
237
  if not done:
211
- return _deny(reason="prompt_timeout")
238
+ if self._hard_timeout is not None:
239
+ return _deny(
240
+ reason=DecisionReason(
241
+ type=DecisionReasonType.UI_RESPONSE_TIMEOUT,
242
+ detail="ui_response_timeout",
243
+ ),
244
+ tool_name=request.tool_name,
245
+ source=PromptDecisionSource.USER_UI,
246
+ )
247
+ continue
212
248
 
213
249
  if abort_task is not None and abort_task in done:
214
- raise asyncio.CancelledError("permission prompt aborted")
250
+ return _deny(
251
+ reason=DecisionReason(
252
+ type=DecisionReasonType.USER_ABORT,
253
+ detail="permission prompt aborted",
254
+ ),
255
+ tool_name=request.tool_name,
256
+ source=PromptDecisionSource.USER_UI,
257
+ )
215
258
 
216
259
  deny_hit, allow_hit = _consume_completed(
217
260
  done,
@@ -243,11 +286,23 @@ class HitlRaceCoordinator:
243
286
  best_allow.decision_source,
244
287
  )
245
288
  return best_allow
246
- return _deny(reason="no prompt decision")
289
+ return _deny(
290
+ reason=DecisionReason(
291
+ type=DecisionReasonType.NO_DECISION,
292
+ detail="no prompt decision",
293
+ ),
294
+ tool_name=request.tool_name,
295
+ )
247
296
 
248
297
  async def _run_headless(self, request: PromptRequest) -> PromptResponse:
249
298
  if not self._hooks:
250
- return _deny(reason="prompts unavailable")
299
+ return _deny(
300
+ reason=DecisionReason(
301
+ type=DecisionReasonType.PROMPTS_UNAVAILABLE,
302
+ detail="prompts unavailable",
303
+ ),
304
+ tool_name=request.tool_name,
305
+ )
251
306
  resp = await _run_hook_chain(
252
307
  self._hooks,
253
308
  request,
@@ -255,4 +310,10 @@ class HitlRaceCoordinator:
255
310
  )
256
311
  if resp is not None:
257
312
  return resp
258
- return _deny(reason="prompts unavailable")
313
+ return _deny(
314
+ reason=DecisionReason(
315
+ type=DecisionReasonType.PROMPTS_UNAVAILABLE,
316
+ detail="prompts unavailable",
317
+ ),
318
+ tool_name=request.tool_name,
319
+ )
@@ -0,0 +1,28 @@
1
+ """
2
+ prompt/session_mode.py — 会话 headless 推断(对齐 CC shouldAvoidPermissionPrompts)
3
+
4
+ 职责:
5
+ 在 session / loop 创建时推断是否应避免交互式 permission prompt。
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import sys
11
+
12
+ _HEADLESS_CONTAINER_TYPES = frozenset({"background", "batch", "worker", "sdk"})
13
+
14
+
15
+ def infer_session_headless(
16
+ *,
17
+ headless: bool | None,
18
+ container_type: str | None = None,
19
+ ) -> bool:
20
+ """显式 ``headless`` 优先;否则 container_type 或无 TTY stdout 推断。"""
21
+ if headless is not None:
22
+ return headless
23
+ if container_type in _HEADLESS_CONTAINER_TYPES:
24
+ return True
25
+ try:
26
+ return not sys.stdout.isatty()
27
+ except Exception:
28
+ return False
@@ -19,6 +19,13 @@ from enum import StrEnum
19
19
  from typing import Any, Literal
20
20
 
21
21
  from ..models import AuthorizationDecision, ToolExecutionContext
22
+ from .messages import (
23
+ GENERIC_DENY_TEMPLATE,
24
+ NO_PARTICIPANTS_TEMPLATE,
25
+ PROMPTS_UNAVAILABLE_TEMPLATE,
26
+ UI_RESPONSE_TIMEOUT_TEMPLATE,
27
+ USER_ABORT_TEMPLATE,
28
+ )
22
29
 
23
30
 
24
31
  class PromptDecisionSource(StrEnum):
@@ -31,6 +38,38 @@ class PromptDecisionSource(StrEnum):
31
38
  LEGACY_RESOLVER = "legacy_resolver"
32
39
 
33
40
 
41
+ class DecisionReasonType(StrEnum):
42
+ """结构化拒因类型(内部诊断 + LLM 模板路由)。"""
43
+
44
+ HOOK_DENY = "hook_deny"
45
+ CLASSIFIER_DENY = "classifier_deny"
46
+ USER_REJECT = "user_reject"
47
+ NO_PARTICIPANTS = "no_participants"
48
+ PROMPTS_UNAVAILABLE = "prompts_unavailable"
49
+ UI_RESPONSE_TIMEOUT = "ui_response_timeout"
50
+ USER_ABORT = "user_abort"
51
+ NO_DECISION = "no_decision"
52
+
53
+
54
+ @dataclass(frozen=True)
55
+ class DecisionReason:
56
+ type: DecisionReasonType
57
+ detail: str | None = None
58
+
59
+ def to_llm_message(self, tool_name: str) -> str:
60
+ if self.type == DecisionReasonType.PROMPTS_UNAVAILABLE:
61
+ return PROMPTS_UNAVAILABLE_TEMPLATE.format(tool_name=tool_name)
62
+ if self.type == DecisionReasonType.UI_RESPONSE_TIMEOUT:
63
+ return UI_RESPONSE_TIMEOUT_TEMPLATE.format(tool_name=tool_name)
64
+ if self.type == DecisionReasonType.USER_ABORT:
65
+ return USER_ABORT_TEMPLATE.format(tool_name=tool_name)
66
+ if self.type == DecisionReasonType.NO_PARTICIPANTS:
67
+ return NO_PARTICIPANTS_TEMPLATE.format(tool_name=tool_name)
68
+ if self.detail:
69
+ return f"Permission to use {tool_name} has been denied: {self.detail}"
70
+ return GENERIC_DENY_TEMPLATE.format(tool_name=tool_name)
71
+
72
+
34
73
  @dataclass(frozen=True)
35
74
  class PermissionUpdate:
36
75
  """
@@ -55,7 +94,10 @@ class PromptRequest:
55
94
  input_data: dict[str, Any]
56
95
  ctx: ToolExecutionContext
57
96
  ask_decision: AuthorizationDecision
58
- headless: bool
97
+ headless: bool = False
98
+ """单次请求强制 headless(罕见 override;默认 False)。"""
99
+ session_headless: bool = False
100
+ """会话级 headless(对齐 CC shouldAvoidPermissionPrompts)。"""
59
101
  ask_prompt: str | None = None
60
102
  suggestions: tuple[PermissionUpdate, ...] = field(default_factory=tuple)
61
103
 
@@ -66,6 +108,16 @@ class PromptResponse:
66
108
 
67
109
  behavior: Literal["allow", "deny"]
68
110
  decision_source: PromptDecisionSource
69
- reason: str | None = None
111
+ decision_reason: DecisionReason | None = None
112
+ message: str | None = None
70
113
  updated_input: dict[str, Any] | None = None
71
114
  permission_updates: tuple[PermissionUpdate, ...] = field(default_factory=tuple)
115
+
116
+ @property
117
+ def reason(self) -> str | None:
118
+ """Deprecated:请用 ``message`` 或 ``decision_reason.detail``。"""
119
+ if self.message is not None:
120
+ return self.message
121
+ if self.decision_reason is not None:
122
+ return self.decision_reason.detail
123
+ return None