langchain-agentx-python 0.2.1__tar.gz → 0.2.3__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 (437) hide show
  1. {langchain-agentx-python-0.2.1/langchain_agentx_python.egg-info → langchain-agentx-python-0.2.3}/PKG-INFO +1 -1
  2. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/registry.py +89 -1
  3. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/__init__.py +24 -0
  4. langchain-agentx-python-0.2.3/langchain_agentx/task_runtime/tasklist/__init__.py +48 -0
  5. langchain-agentx-python-0.2.3/langchain_agentx/task_runtime/tasklist/high_water_mark.py +220 -0
  6. langchain-agentx-python-0.2.3/langchain_agentx/task_runtime/tasklist/lock.py +113 -0
  7. langchain-agentx-python-0.2.3/langchain_agentx/task_runtime/tasklist/models.py +131 -0
  8. langchain-agentx-python-0.2.3/langchain_agentx/task_runtime/tasklist/path_resolver.py +113 -0
  9. langchain-agentx-python-0.2.3/langchain_agentx/task_runtime/tasklist/store.py +516 -0
  10. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/loader.py +2 -0
  11. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_create/__init__.py +26 -0
  12. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_create/hooks.py +63 -0
  13. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_create/limits.py +24 -0
  14. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_create/models.py +72 -0
  15. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_create/prompt.py +63 -0
  16. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_create/tool.py +148 -0
  17. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_get/__init__.py +9 -0
  18. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_get/models.py +39 -0
  19. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_get/prompt.py +43 -0
  20. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_get/tool.py +142 -0
  21. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_list/__init__.py +5 -0
  22. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_list/models.py +66 -0
  23. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_list/prompt.py +50 -0
  24. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_list/tool.py +146 -0
  25. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_update/__init__.py +9 -0
  26. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_update/hooks.py +54 -0
  27. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_update/models.py +71 -0
  28. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_update/prompt.py +84 -0
  29. langchain-agentx-python-0.2.3/langchain_agentx/tools/task_update/tool.py +296 -0
  30. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workspace/capabilities.py +4 -0
  31. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workspace/config.py +11 -0
  32. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3/langchain_agentx_python.egg-info}/PKG-INFO +1 -1
  33. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx_python.egg-info/SOURCES.txt +25 -0
  34. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/pyproject.toml +1 -1
  35. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/LICENSE +0 -0
  36. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/README.md +0 -0
  37. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/__init__.py +0 -0
  38. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/__init__.py +0 -0
  39. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/builtin/__init__.py +0 -0
  40. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/builtin/clear.py +0 -0
  41. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/builtin/compact.py +0 -0
  42. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/builtin/memory.py +0 -0
  43. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/builtin/reload_plugins.py +0 -0
  44. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/context.py +0 -0
  45. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/dispatcher.py +0 -0
  46. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/registry.py +0 -0
  47. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/result.py +0 -0
  48. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/command/types.py +0 -0
  49. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/config/__init__.py +0 -0
  50. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/__init__.py +0 -0
  51. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/config/__init__.py +0 -0
  52. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/config/agent_config.py +0 -0
  53. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/config/agent_loop_config.py +0 -0
  54. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/config/model_context_resolver.py +0 -0
  55. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/config/runtime_settings.py +0 -0
  56. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/config/token_estimator.py +0 -0
  57. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/__init__.py +0 -0
  58. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/blocking_guard.py +0 -0
  59. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/compaction_service.py +0 -0
  60. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/message_utils.py +0 -0
  61. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/pipeline.py +0 -0
  62. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/settings.py +0 -0
  63. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/__init__.py +0 -0
  64. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/autocompact.py +0 -0
  65. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/base.py +0 -0
  66. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/collapse.py +0 -0
  67. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/microcompact.py +0 -0
  68. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/noop.py +0 -0
  69. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/snip.py +0 -0
  70. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/stages/tool_result_budget.py +0 -0
  71. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/context/types.py +0 -0
  72. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/exit/__init__.py +0 -0
  73. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/exit/exit_logic.py +0 -0
  74. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/exit/reason_codes.py +0 -0
  75. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/graph/__init__.py +0 -0
  76. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/graph/builtin_loop_control.py +0 -0
  77. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/graph/factory.py +0 -0
  78. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/graph/graph_edges.py +0 -0
  79. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/__init__.py +0 -0
  80. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/async_hook_runner.py +0 -0
  81. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/config.py +0 -0
  82. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/engine.py +0 -0
  83. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/executors/__init__.py +0 -0
  84. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/executors/agent.py +0 -0
  85. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/executors/command.py +0 -0
  86. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/executors/http.py +0 -0
  87. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/executors/prompt.py +0 -0
  88. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/graph_wiring.py +0 -0
  89. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/trust.py +0 -0
  90. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/hook/types.py +0 -0
  91. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/injection/__init__.py +0 -0
  92. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/injection/dedup.py +0 -0
  93. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/loop_abort.py +0 -0
  94. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/__init__.py +0 -0
  95. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/model_node.py +0 -0
  96. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/model_nodes.py +0 -0
  97. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/orphan_tool_results.py +0 -0
  98. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/retrier.py +0 -0
  99. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/retry_bridge.py +0 -0
  100. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/retry_events.py +0 -0
  101. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/retry_policy.py +0 -0
  102. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/schema_and_format.py +0 -0
  103. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/tool_and_model_binding.py +0 -0
  104. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/tool_call_degradation_corrector.py +0 -0
  105. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/model/tool_transcript_guard.py +0 -0
  106. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/prompt/__init__.py +0 -0
  107. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/prompt/builder.py +0 -0
  108. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/prompt/builtin.py +0 -0
  109. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/prompt/compact.py +0 -0
  110. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/prompt/sections.py +0 -0
  111. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/runtime/__init__.py +0 -0
  112. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/runtime/context.py +0 -0
  113. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/runtime/context_factory.py +0 -0
  114. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/runtime/subagent_execution_paths.py +0 -0
  115. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/__init__.py +0 -0
  116. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/async_runner.py +0 -0
  117. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/context.py +0 -0
  118. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/fork_worktree_notice.py +0 -0
  119. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/graph.py +0 -0
  120. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/orchestrator.py +0 -0
  121. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/progress.py +0 -0
  122. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/prompt.py +0 -0
  123. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/runner.py +0 -0
  124. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/loop/subagent/transcript.py +0 -0
  125. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/__init__.py +0 -0
  126. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/instruction/__init__.py +0 -0
  127. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/instruction/loader.py +0 -0
  128. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/instruction/resolver.py +0 -0
  129. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/instruction/runtime.py +0 -0
  130. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/instruction/sections.py +0 -0
  131. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/instruction/types.py +0 -0
  132. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/__init__.py +0 -0
  133. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/age.py +0 -0
  134. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/agent_memory.py +0 -0
  135. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/extractor.py +0 -0
  136. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/loader.py +0 -0
  137. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/paths.py +0 -0
  138. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/recall.py +0 -0
  139. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/runtime.py +0 -0
  140. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/scan.py +0 -0
  141. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/memdir/types.py +0 -0
  142. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/session/__init__.py +0 -0
  143. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/session/compact_bridge.py +0 -0
  144. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/session/prompts.py +0 -0
  145. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/memory/session/session_memory.py +0 -0
  146. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/__init__.py +0 -0
  147. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/__init__.py +0 -0
  148. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/__init__.py +0 -0
  149. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/base.py +0 -0
  150. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/compaction.py +0 -0
  151. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/degradation.py +0 -0
  152. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/exit_quality.py +0 -0
  153. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/session_memory.py +0 -0
  154. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/checkers/tool_behavior.py +0 -0
  155. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/retention_scheduler.py +0 -0
  156. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/service.py +0 -0
  157. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/state.py +0 -0
  158. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/evaluation/store.py +0 -0
  159. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/events/__init__.py +0 -0
  160. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/events/langchain_agentx_event_adapter.py +0 -0
  161. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/logging/__init__.py +0 -0
  162. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/logging/debug_burst.py +0 -0
  163. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/logging/logging_config.py +0 -0
  164. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/logging/logging_contract.py +0 -0
  165. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/replay/__init__.py +0 -0
  166. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/replay/cli.py +0 -0
  167. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/replay/service.py +0 -0
  168. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/replay/store.py +0 -0
  169. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/replay/ui.py +0 -0
  170. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/__init__.py +0 -0
  171. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/collector.py +0 -0
  172. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/event_emitter.py +0 -0
  173. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/hook_event_emitter.py +0 -0
  174. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/models.py +0 -0
  175. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/sqlite_store.py +0 -0
  176. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/trace_callback.py +0 -0
  177. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/observability/trace/trace_lifecycle_collector.py +0 -0
  178. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/__init__.py +0 -0
  179. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/builtin.py +0 -0
  180. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/config.py +0 -0
  181. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/loader.py +0 -0
  182. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/manifest.py +0 -0
  183. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/registries.py +0 -0
  184. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/plugin/types.py +0 -0
  185. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/provider/__init__.py +0 -0
  186. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/provider/anthropic.py +0 -0
  187. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/provider/compatible_chat_openai.py +0 -0
  188. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/provider/env.py +0 -0
  189. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/provider/model_profile.py +0 -0
  190. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/provider/openai.py +0 -0
  191. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/__init__.py +0 -0
  192. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/agent_session.py +0 -0
  193. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/conversation_factory.py +0 -0
  194. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/conversation_recovery.py +0 -0
  195. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/conversation_session.py +0 -0
  196. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/factory.py +0 -0
  197. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/session/protocol.py +0 -0
  198. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/core/__init__.py +0 -0
  199. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/core/ids.py +0 -0
  200. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/core/interfaces.py +0 -0
  201. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/core/notification_priority.py +0 -0
  202. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/core/types.py +0 -0
  203. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/__init__.py +0 -0
  204. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/loop_adapter.py +0 -0
  205. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/loop_integration.py +0 -0
  206. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/prefetch_providers.py +0 -0
  207. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/provider_factory.py +0 -0
  208. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/queued_command_provider.py +0 -0
  209. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/sqlite_queued_command_provider.py +0 -0
  210. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/integrations/tool_use_summary_provider.py +0 -0
  211. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/orchestrator/__init__.py +0 -0
  212. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/orchestrator/runtime.py +0 -0
  213. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/output/__init__.py +0 -0
  214. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/output/sink.py +0 -0
  215. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/policy/__init__.py +0 -0
  216. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/policy/withhold_visibility.py +0 -0
  217. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/queue/__init__.py +0 -0
  218. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/queue/in_memory.py +0 -0
  219. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/skill_prefetch/__init__.py +0 -0
  220. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/skill_prefetch/attachments.py +0 -0
  221. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/skill_prefetch/models.py +0 -0
  222. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/skill_prefetch/provider.py +0 -0
  223. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/store/__init__.py +0 -0
  224. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/store/in_memory.py +0 -0
  225. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/store/sqlite_store.py +0 -0
  226. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/__init__.py +0 -0
  227. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/ai_analysis/__init__.py +0 -0
  228. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/ai_analysis/base.py +0 -0
  229. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/ai_analysis/evaluation.py +0 -0
  230. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/ai_analysis/registry.py +0 -0
  231. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/ai_analysis/scheduler.py +0 -0
  232. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/base/__init__.py +0 -0
  233. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/base/contracts.py +0 -0
  234. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/custom/__init__.py +0 -0
  235. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/custom/executor.py +0 -0
  236. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/custom/notification.py +0 -0
  237. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/custom/semantics.py +0 -0
  238. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/custom/spec.py +0 -0
  239. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/dream_task/__init__.py +0 -0
  240. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/dream_task/executor.py +0 -0
  241. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/dream_task/notification.py +0 -0
  242. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/dream_task/semantics.py +0 -0
  243. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/dream_task/spec.py +0 -0
  244. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/dream_task/state.py +0 -0
  245. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/__init__.py +0 -0
  246. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/executor.py +0 -0
  247. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/notification.py +0 -0
  248. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/semantics.py +0 -0
  249. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/in_process_teammate/spec.py +0 -0
  250. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_agent/__init__.py +0 -0
  251. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_agent/executor.py +0 -0
  252. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_agent/notification.py +0 -0
  253. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_agent/runner.py +0 -0
  254. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_agent/semantics.py +0 -0
  255. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_agent/spec.py +0 -0
  256. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_bash/__init__.py +0 -0
  257. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_bash/executor.py +0 -0
  258. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_bash/notification.py +0 -0
  259. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_bash/semantics.py +0 -0
  260. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/local_bash/spec.py +0 -0
  261. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/remote_agent/__init__.py +0 -0
  262. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/remote_agent/backend.py +0 -0
  263. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/remote_agent/executor.py +0 -0
  264. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/remote_agent/notification.py +0 -0
  265. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/remote_agent/semantics.py +0 -0
  266. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/remote_agent/spec.py +0 -0
  267. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/__init__.py +0 -0
  268. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/bootstrap.py +0 -0
  269. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/executor.py +0 -0
  270. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/task_runtime/tasks/trace_cleanup/scheduler.py +0 -0
  271. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/__init__.py +0 -0
  272. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/adapter.py +0 -0
  273. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/base.py +0 -0
  274. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/errors.py +0 -0
  275. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/identical_call_cache.py +0 -0
  276. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/models.py +0 -0
  277. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/permission_context.py +0 -0
  278. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/pipeline.py +0 -0
  279. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/policy.py +0 -0
  280. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/registry.py +0 -0
  281. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/resolvers/__init__.py +0 -0
  282. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/resolvers/agent_session.py +0 -0
  283. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/resolvers/background.py +0 -0
  284. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/resolvers/base.py +0 -0
  285. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/resolvers/conversation.py +0 -0
  286. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/resolvers/workflow.py +0 -0
  287. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/session_store.py +0 -0
  288. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/smoke_test_runtime.py +0 -0
  289. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tool_runtime/state_bridge.py +0 -0
  290. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/__init__.py +0 -0
  291. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/__init__.py +0 -0
  292. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/backend.py +0 -0
  293. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/__init__.py +0 -0
  294. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/agentx_guide.py +0 -0
  295. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/explore.py +0 -0
  296. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/general.py +0 -0
  297. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/plan.py +0 -0
  298. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/statusline_setup.py +0 -0
  299. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/built_in/verification.py +0 -0
  300. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/builtin_subagent_loader.py +0 -0
  301. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/cwd_resolution.py +0 -0
  302. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/limits.py +0 -0
  303. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/loader.py +0 -0
  304. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/models.py +0 -0
  305. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/prompt.py +0 -0
  306. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/registry/__init__.py +0 -0
  307. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/registry/config.py +0 -0
  308. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/registry/registry.py +0 -0
  309. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/scope.py +0 -0
  310. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/agent/tool.py +0 -0
  311. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/__init__.py +0 -0
  312. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/constants.py +0 -0
  313. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/html_preview.py +0 -0
  314. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/models.py +0 -0
  315. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/prompt.py +0 -0
  316. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/tool.py +0 -0
  317. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ask_user_question/validators.py +0 -0
  318. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/__init__.py +0 -0
  319. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/ast_security.py +0 -0
  320. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/backend.py +0 -0
  321. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/bash_hardening.py +0 -0
  322. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/bash_runtime_contract.py +0 -0
  323. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/cwd_reporter.py +0 -0
  324. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/limits.py +0 -0
  325. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/mode_validation.py +0 -0
  326. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/models.py +0 -0
  327. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/observability.py +0 -0
  328. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/output_utils.py +0 -0
  329. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/path_security.py +0 -0
  330. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/prompt.py +0 -0
  331. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/read_only_validation.py +0 -0
  332. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/result_presenter.py +0 -0
  333. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/sandbox_decision.py +0 -0
  334. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/security.py +0 -0
  335. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/sed_edit_parser.py +0 -0
  336. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/sed_validation.py +0 -0
  337. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/semantics.py +0 -0
  338. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/session_manager.py +0 -0
  339. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/session_runtime.py +0 -0
  340. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/shell_locator.py +0 -0
  341. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/task_runtime.py +0 -0
  342. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/tool.py +0 -0
  343. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/bash/windows_shell_quoting.py +0 -0
  344. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/__init__.py +0 -0
  345. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/backend.py +0 -0
  346. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/batch_tool.py +0 -0
  347. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/diff_generator.py +0 -0
  348. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/git_diff_generator.py +0 -0
  349. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/limits.py +0 -0
  350. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/models.py +0 -0
  351. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/prompt.py +0 -0
  352. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/quote_match.py +0 -0
  353. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/quote_normalizer.py +0 -0
  354. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/settings_validator.py +0 -0
  355. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/staleness.py +0 -0
  356. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/tool.py +0 -0
  357. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/edit/validator.py +0 -0
  358. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/__init__.py +0 -0
  359. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/models.py +0 -0
  360. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/pagination.py +0 -0
  361. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/prompt.py +0 -0
  362. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/rg_list_backend.py +0 -0
  363. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/rg_pattern.py +0 -0
  364. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/glob/tool.py +0 -0
  365. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/grep/__init__.py +0 -0
  366. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/grep/backend.py +0 -0
  367. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/grep/models.py +0 -0
  368. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/grep/prompt.py +0 -0
  369. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/grep/rg_subprocess_controller.py +0 -0
  370. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/grep/tool.py +0 -0
  371. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/read/__init__.py +0 -0
  372. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/read/backend.py +0 -0
  373. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/read/limits.py +0 -0
  374. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/read/models.py +0 -0
  375. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/read/prompt.py +0 -0
  376. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/read/tool.py +0 -0
  377. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/ripgrep_plugin_exclusions.py +0 -0
  378. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/__init__.py +0 -0
  379. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/argument_substitution.py +0 -0
  380. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/loader.py +0 -0
  381. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/models.py +0 -0
  382. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/policy.py +0 -0
  383. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/prompt.py +0 -0
  384. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/skill/tool.py +0 -0
  385. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/user_message/__init__.py +0 -0
  386. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/user_message/attachments.py +0 -0
  387. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/user_message/models.py +0 -0
  388. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/user_message/prompt.py +0 -0
  389. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/user_message/runtime_config.py +0 -0
  390. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/user_message/tool.py +0 -0
  391. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/__init__.py +0 -0
  392. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/backend.py +0 -0
  393. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/limits.py +0 -0
  394. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/models.py +0 -0
  395. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/prompt.py +0 -0
  396. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/tool.py +0 -0
  397. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/tools/write/validator.py +0 -0
  398. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/__init__.py +0 -0
  399. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/cwd.py +0 -0
  400. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/host_platform.py +0 -0
  401. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/path_hierarchy.py +0 -0
  402. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/path_user_input.py +0 -0
  403. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/rg_executable.py +0 -0
  404. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/subprocess_text.py +0 -0
  405. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/temp_paths.py +0 -0
  406. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/unc_path.py +0 -0
  407. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/utils/win_reserved_paths.py +0 -0
  408. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/__init__.py +0 -0
  409. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/base.py +0 -0
  410. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/batch.py +0 -0
  411. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/dag.py +0 -0
  412. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/__init__.py +0 -0
  413. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/adapter.py +0 -0
  414. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/depth_resolver.py +0 -0
  415. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/handlers/__init__.py +0 -0
  416. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +0 -0
  417. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/handlers/route_handler.py +0 -0
  418. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/handlers/stage_handler.py +0 -0
  419. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/stack.py +0 -0
  420. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/event_adapter/types.py +0 -0
  421. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/node.py +0 -0
  422. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/patterns/__init__.py +0 -0
  423. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/patterns/chaining.py +0 -0
  424. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/patterns/evaluator_optimizer.py +0 -0
  425. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/patterns/orchestrator.py +0 -0
  426. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/patterns/parallelization.py +0 -0
  427. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/patterns/routing.py +0 -0
  428. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workflow/state.py +0 -0
  429. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workspace/__init__.py +0 -0
  430. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workspace/path_key_normalizer.py +0 -0
  431. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workspace/resolver.py +0 -0
  432. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx/workspace/validators.py +0 -0
  433. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx_python.egg-info/dependency_links.txt +0 -0
  434. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx_python.egg-info/not-zip-safe +0 -0
  435. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx_python.egg-info/requires.txt +0 -0
  436. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/langchain_agentx_python.egg-info/top_level.txt +0 -0
  437. {langchain-agentx-python-0.2.1 → langchain-agentx-python-0.2.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langchain-agentx-python
3
- Version: 0.2.1
3
+ Version: 0.2.3
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,6 +11,8 @@ registry.py — HookRegistry 用户侧入口。
11
11
 
12
12
  当前裁剪范围:
13
13
  已支持 P1/P2 执行器注册(function/callback/command/http/prompt/agent)。
14
+ 已支持任务完成 hooks(register_task_completed/get_task_completed_hooks)。
15
+ 已支持任务创建 hooks(register_task_created/get_task_created_hooks),与 TaskCreateRuntimeTool 对齐。
14
16
  """
15
17
 
16
18
  from __future__ import annotations
@@ -21,6 +23,33 @@ from .config import HookSpec, HooksConfigSnapshot
21
23
  from .types import HookEvent
22
24
 
23
25
 
26
+ # ── 任务完成 Hook 类型定义 ────────────────────────────────────────
27
+
28
+ TaskCompletedHook = Callable[[str, str, str, str | None], str | None]
29
+ """
30
+ 任务完成 hook 类型。
31
+
32
+ Args:
33
+ task_id: 完成的任务 ID
34
+ subject: 任务标题
35
+ description: 任务描述
36
+ agent_id: 当前 agent ID(可能为 None)
37
+
38
+ Returns:
39
+ str | None: 阻塞性错误消息,如果有则阻止任务完成
40
+
41
+ 用法:
42
+ def my_hook(task_id: str, subject: str, description: str, agent_id: str | None) -> str | None:
43
+ if "critical" in subject:
44
+ return "Critical task cannot be marked completed without review"
45
+ return None
46
+
47
+ HookRegistry.register_task_completed(my_hook)
48
+ """
49
+
50
+ # task_id, subject, description, teammate_name, team_name → 阻塞错误信息或 None
51
+ TaskCreatedHook = Callable[[str, str, str, str | None, str | None], str | None]
52
+ """任务创建 hook(v1 同步);与 CC executeTaskCreatedHooks 阻塞语义对齐。"""
24
53
  class HookRegistry:
25
54
  """用户侧 Hook 注册入口。
26
55
 
@@ -232,6 +261,61 @@ class HookRegistry:
232
261
  def __len__(self) -> int:
233
262
  return len(self._specs)
234
263
 
264
+ # ── 任务完成 Hook API ────────────────────────────────────────────
265
+
266
+ # 类变量:存储所有任务完成 hooks
267
+ _task_completed_hooks: list[Callable] = []
268
+
269
+ @classmethod
270
+ def register_task_completed(cls, hook: Callable) -> None:
271
+ """注册任务完成 hook。
272
+
273
+ Args:
274
+ hook: 任务完成回调函数(TaskCompletedHook 类型)
275
+
276
+ 用法:
277
+ def my_hook(task_id: str, subject: str, description: str, agent_id: str | None) -> str | None:
278
+ if "critical" in subject:
279
+ return "Critical task cannot be marked completed"
280
+ return None
281
+
282
+ HookRegistry.register_task_completed(my_hook)
283
+ """
284
+ cls._task_completed_hooks.append(hook)
285
+
286
+ @classmethod
287
+ def get_task_completed_hooks(cls) -> list[Callable]:
288
+ """获取所有任务完成 hooks。
289
+
290
+ Returns:
291
+ list[Callable]: hooks 副本(避免外部修改内部列表)
292
+ """
293
+ return cls._task_completed_hooks.copy()
294
+
295
+ @classmethod
296
+ def clear_task_completed_hooks(cls) -> None:
297
+ """清空所有任务完成 hooks(主要用于测试)。"""
298
+ cls._task_completed_hooks.clear()
299
+
300
+ # ── 任务创建 Hook API(TaskCreateRuntimeTool)────────────────────────
301
+
302
+ _task_created_hooks: list[Callable] = []
303
+
304
+ @classmethod
305
+ def register_task_created(cls, hook: Callable) -> None:
306
+ """注册任务创建 hook(TaskCreatedHook 类型)。"""
307
+ cls._task_created_hooks.append(hook)
308
+
309
+ @classmethod
310
+ def get_task_created_hooks(cls) -> list[Callable]:
311
+ """获取所有任务创建 hooks 副本。"""
312
+ return cls._task_created_hooks.copy()
313
+
314
+ @classmethod
315
+ def clear_task_created_hooks(cls) -> None:
316
+ """清空所有任务创建 hooks(主要用于测试)。"""
317
+ cls._task_created_hooks.clear()
318
+
235
319
  def _make_spec(
236
320
  self,
237
321
  *,
@@ -259,4 +343,8 @@ class HookRegistry:
259
343
  return spec
260
344
 
261
345
 
262
- __all__ = ["HookRegistry"]
346
+ __all__ = [
347
+ "HookRegistry",
348
+ "TaskCompletedHook",
349
+ "TaskCreatedHook",
350
+ ]
@@ -3,6 +3,19 @@
3
3
  Shared task scheduling primitives for loop and tools.
4
4
  """
5
5
 
6
+ # CC 任务列表存储子系统(TaskListStatus:Todo JSON 状态字面量,勿与编排层 TaskStatus 枚举混淆)
7
+ from .tasklist import (
8
+ ClaimResult,
9
+ FileLockNotAvailableError,
10
+ Task,
11
+ TaskCreate,
12
+ TaskFilters,
13
+ TaskListStatus,
14
+ TaskStore,
15
+ TaskStoreLockManager,
16
+ TaskUpdate,
17
+ )
18
+
6
19
  from .core.interfaces import TaskExecutor
7
20
  from .orchestrator.runtime import DefaultTaskRuntime
8
21
  from .queue.in_memory import InMemoryTaskCommandQueue
@@ -61,6 +74,17 @@ from .policy import (
61
74
  )
62
75
 
63
76
  __all__ = [
77
+ # Tasklist (CC 任务列表)
78
+ "TaskStore",
79
+ "Task",
80
+ "TaskCreate",
81
+ "TaskUpdate",
82
+ "TaskFilters",
83
+ "TaskListStatus",
84
+ "ClaimResult",
85
+ "TaskStoreLockManager",
86
+ "FileLockNotAvailableError",
87
+ # Queued commands
64
88
  "QueuedCommandProvider",
65
89
  "encode_provider_batch_id",
66
90
  "decode_provider_batch_id",
@@ -0,0 +1,48 @@
1
+ """
2
+ task_runtime/tasklist/ — CC 任务列表存储子系统
3
+
4
+ 职责:
5
+ 实现 Claude Code 对等的任务列表管理能力:
6
+ - 任务持久化存储(文件系统,每个任务一个 JSON 文件)
7
+ - 任务依赖关系管理(blocks / blockedBy 双向维护)
8
+ - 高水位标记机制(防止删除后 ID 重用)
9
+ - 文件锁保护(多进程并发安全)
10
+ - 任务认领与状态流转
11
+
12
+ 与 CC 对应:
13
+ CC src/utils/tasks.ts(863 行)是任务存储核心,本模块与其对等。
14
+ """
15
+
16
+ from .models import (
17
+ MAX_ACTIVE_FORM_LENGTH,
18
+ MAX_DESCRIPTION_LENGTH,
19
+ MAX_SUBJECT_LENGTH,
20
+ ClaimResult,
21
+ Task,
22
+ TaskCreate,
23
+ TaskFilters,
24
+ TaskListStatus,
25
+ TaskStatus,
26
+ TaskUpdate,
27
+ TaskUpdateStatus,
28
+ )
29
+ from .store import TaskStore, TaskStoreSync
30
+ from .lock import FileLockNotAvailableError, TaskStoreLockManager
31
+
32
+ __all__ = [
33
+ "TaskStore",
34
+ "TaskStoreSync",
35
+ "Task",
36
+ "TaskCreate",
37
+ "TaskUpdate",
38
+ "TaskFilters",
39
+ "TaskStatus",
40
+ "TaskListStatus",
41
+ "TaskUpdateStatus",
42
+ "ClaimResult",
43
+ "TaskStoreLockManager",
44
+ "FileLockNotAvailableError",
45
+ "MAX_SUBJECT_LENGTH",
46
+ "MAX_DESCRIPTION_LENGTH",
47
+ "MAX_ACTIVE_FORM_LENGTH",
48
+ ]
@@ -0,0 +1,220 @@
1
+ """
2
+ task_runtime/tasklist/high_water_mark.py — 高水位标记管理
3
+
4
+ 职责:
5
+ 管理任务 ID 高水位标记,防止删除后 ID 重用:
6
+ - 读取当前高水位值
7
+ - 写入新的高水位值
8
+ - 扫描文件找出最大 ID
9
+
10
+ 链路位置:
11
+ TaskStore.create_task → HighWaterMarkManager.get_next_id
12
+
13
+ 与 CC 对应:
14
+ CC src/utils/tasks.ts 中 highWaterMark 相关函数。
15
+
16
+ 裁剪范围(v1):
17
+ - 文件锁由调用方(TaskStore)负责
18
+ - 降级策略:文件损坏时扫描目录
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ import asyncio
24
+ from pathlib import Path
25
+ from typing import Optional
26
+
27
+
28
+ class HighWaterMarkManager:
29
+ """高水位标记管理器。
30
+
31
+ 确保任务 ID 单调递增,删除任务后不会重用 ID。
32
+
33
+ 高水位文件路径:{tasks_dir}/.highwatermark
34
+ 文件内容:纯数字字符串,表示已分配的最大 ID。
35
+ """
36
+
37
+ def __init__(self, timeout: float = 3.0) -> None:
38
+ """初始化高水位标记管理器。
39
+
40
+ Args:
41
+ timeout: 文件操作超时(秒)
42
+ """
43
+ self.timeout = timeout
44
+
45
+ def _get_highwatermark_path(self, tasks_dir: Path) -> Path:
46
+ """获取高水位文件路径。"""
47
+ return tasks_dir / ".highwatermark"
48
+
49
+ async def read(self, tasks_dir: Path) -> int:
50
+ """读取当前高水位值。
51
+
52
+ Args:
53
+ tasks_dir: 任务目录
54
+
55
+ Returns:
56
+ 当前高水位值,文件不存在或损坏时返回 0
57
+ """
58
+ hw_path = self._get_highwatermark_path(tasks_dir)
59
+
60
+ try:
61
+ content = await asyncio.to_thread(hw_path.read_text, encoding="utf-8")
62
+ return int(content.strip())
63
+ except (FileNotFoundError, ValueError, OSError):
64
+ return 0
65
+
66
+ async def write(self, tasks_dir: Path, value: int) -> None:
67
+ """写入新的高水位值。
68
+
69
+ Args:
70
+ tasks_dir: 任务目录
71
+ value: 新的高水位值
72
+ """
73
+ hw_path = self._get_highwatermark_path(tasks_dir)
74
+
75
+ # 确保目录存在
76
+ await asyncio.to_thread(tasks_dir.mkdir, parents=True, exist_ok=True)
77
+
78
+ # 原子写入:先写临时文件,再重命名
79
+ temp_path = hw_path.with_suffix(".tmp")
80
+ content = str(value)
81
+
82
+ await asyncio.to_thread(temp_path.write_text, content, encoding="utf-8")
83
+
84
+ # Windows 需要 replace,Posix rename 可原子替换
85
+ try:
86
+ await asyncio.to_thread(temp_path.replace, hw_path)
87
+ except OSError:
88
+ # 降级:删除后重命名
89
+ if hw_path.exists():
90
+ await asyncio.to_thread(hw_path.unlink)
91
+ await asyncio.to_thread(temp_path.rename, hw_path)
92
+
93
+ async def find_highest_id(self, tasks_dir: Path) -> int:
94
+ """扫描任务文件找出最大 ID。
95
+
96
+ 作为高水位文件的降级策略。
97
+
98
+ Args:
99
+ tasks_dir: 任务目录
100
+
101
+ Returns:
102
+ 找到的最大 ID,目录不存在或无任务时返回 0
103
+ """
104
+ if not await asyncio.to_thread(tasks_dir.exists):
105
+ return 0
106
+
107
+ max_id = 0
108
+
109
+ try:
110
+ for entry in await asyncio.to_thread(lambda: list(tasks_dir.iterdir())):
111
+ if entry.suffix == ".json":
112
+ # 从文件名提取 ID(如 "123.json" -> 123)
113
+ try:
114
+ task_id = int(entry.stem)
115
+ max_id = max(max_id, task_id)
116
+ except ValueError:
117
+ continue
118
+ except OSError:
119
+ pass
120
+
121
+ return max_id
122
+
123
+ async def get_next_id(self, tasks_dir: Path) -> int:
124
+ """获取下一个可用的任务 ID。
125
+
126
+ Args:
127
+ tasks_dir: 任务目录
128
+
129
+ Returns:
130
+ 下一个 ID(max(高水位文件, 文件中最大ID) + 1)
131
+ """
132
+ hw_value = await self.read(tasks_dir)
133
+ file_max = await self.find_highest_id(tasks_dir)
134
+
135
+ current = max(hw_value, file_max)
136
+ next_id = current + 1
137
+
138
+ # 更新高水位
139
+ await self.write(tasks_dir, next_id)
140
+
141
+ return next_id
142
+
143
+ # ------------------------------------------------------------------
144
+ # 同步版本(用于文件锁保护下的同步上下文)
145
+ # ------------------------------------------------------------------
146
+
147
+ def _read_sync(self, tasks_dir: Path) -> int:
148
+ """同步读取当前高水位值。"""
149
+ hw_path = self._get_highwatermark_path(tasks_dir)
150
+
151
+ try:
152
+ content = hw_path.read_text(encoding="utf-8")
153
+ return int(content.strip())
154
+ except (FileNotFoundError, ValueError, OSError):
155
+ return 0
156
+
157
+ def _write_sync(self, tasks_dir: Path, value: int) -> None:
158
+ """同步写入新的高水位值。"""
159
+ hw_path = self._get_highwatermark_path(tasks_dir)
160
+
161
+ # 确保目录存在
162
+ tasks_dir.mkdir(parents=True, exist_ok=True)
163
+
164
+ # 原子写入:先写临时文件,再重命名
165
+ temp_path = hw_path.with_suffix(".tmp")
166
+ content = str(value)
167
+
168
+ temp_path.write_text(content, encoding="utf-8")
169
+
170
+ # Windows 需要 replace,Posix rename 可原子替换
171
+ try:
172
+ temp_path.replace(hw_path)
173
+ except OSError:
174
+ # 降级:删除后重命名
175
+ if hw_path.exists():
176
+ hw_path.unlink()
177
+ temp_path.rename(hw_path)
178
+
179
+ def _find_highest_id_sync(self, tasks_dir: Path) -> int:
180
+ """同步扫描任务文件找出最大 ID。"""
181
+ if not tasks_dir.exists():
182
+ return 0
183
+
184
+ max_id = 0
185
+
186
+ try:
187
+ for entry in list(tasks_dir.iterdir()):
188
+ if entry.suffix == ".json":
189
+ # 从文件名提取 ID(如 "123.json" -> 123)
190
+ try:
191
+ task_id = int(entry.stem)
192
+ max_id = max(max_id, task_id)
193
+ except ValueError:
194
+ continue
195
+ except OSError:
196
+ pass
197
+
198
+ return max_id
199
+
200
+ def get_next_id_sync(self, tasks_dir: Path) -> int:
201
+ """同步获取下一个可用的任务 ID。
202
+
203
+ 用于文件锁保护下的同步上下文。
204
+
205
+ Args:
206
+ tasks_dir: 任务目录
207
+
208
+ Returns:
209
+ 下一个 ID(max(高水位文件, 文件中最大ID) + 1)
210
+ """
211
+ hw_value = self._read_sync(tasks_dir)
212
+ file_max = self._find_highest_id_sync(tasks_dir)
213
+
214
+ current = max(hw_value, file_max)
215
+ next_id = current + 1
216
+
217
+ # 更新高水位
218
+ self._write_sync(tasks_dir, next_id)
219
+
220
+ return next_id
@@ -0,0 +1,113 @@
1
+ """
2
+ task_runtime/tasklist/lock.py — 任务存储文件锁管理
3
+
4
+ 职责:
5
+ 提供文件锁保护,确保多进程并发安全:
6
+ - 单个任务文件锁
7
+ - 任务列表目录锁
8
+ - 软依赖处理(filelock 不存在时友好错误)
9
+
10
+ 链路位置:
11
+ TaskStore → TaskStoreLockManager → filelock.FileLock
12
+
13
+ 与 CC 对应:
14
+ CC src/utils/tasks.ts 中 withFileLock 函数。
15
+
16
+ 裁剪范围(v1):
17
+ - 使用 filelock 库作为实现
18
+ - 默认超时 3.0 秒
19
+ - 错误信息包含锁文件路径
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ from pathlib import Path
25
+ from typing import TYPE_CHECKING
26
+
27
+ if TYPE_CHECKING:
28
+ from filelock import FileLock
29
+
30
+
31
+ class FileLockNotAvailableError(RuntimeError):
32
+ """filelock 库未安装错误。"""
33
+
34
+ def __init__(self) -> None:
35
+ super().__init__(
36
+ "filelock library is required for task store. "
37
+ "Install with: pip install filelock"
38
+ )
39
+
40
+
41
+ class TaskStoreLockTimeoutError(TimeoutError):
42
+ """获取文件锁超时错误。"""
43
+
44
+ def __init__(self, lock_path: Path, timeout: float) -> None:
45
+ super().__init__(
46
+ f"Timeout waiting for lock after {timeout}s: {lock_path}. "
47
+ "Another process may be holding the lock."
48
+ )
49
+ self.lock_path = lock_path
50
+ self.timeout = timeout
51
+
52
+
53
+ def _ensure_filelock() -> type[FileLock]:
54
+ """确保 filelock 库可用。"""
55
+ try:
56
+ from filelock import FileLock as FL
57
+ return FL # type: ignore
58
+ except ImportError as e:
59
+ raise FileLockNotAvailableError() from e
60
+
61
+
62
+ class TaskStoreLockManager:
63
+ """任务存储文件锁管理器。
64
+
65
+ 为任务存储提供文件锁保护,防止多进程并发冲突。
66
+
67
+ 锁文件路径:
68
+ - 任务锁:{task_path}.lock
69
+ - 目录锁:{tasks_dir}/.lock
70
+ """
71
+
72
+ def __init__(self, timeout: float = 3.0) -> None:
73
+ """初始化锁管理器。
74
+
75
+ Args:
76
+ timeout: 锁超时时间(秒),默认 3.0
77
+ """
78
+ self.timeout = timeout
79
+ self._filelock_class: type[FileLock] | None = None
80
+
81
+ def _get_filelock_class(self) -> type[FileLock]:
82
+ """延迟导入 FileLock 类(软依赖)。"""
83
+ if self._filelock_class is None:
84
+ self._filelock_class = _ensure_filelock()
85
+ return self._filelock_class
86
+
87
+ def get_lock(self, task_path: Path) -> "FileLock":
88
+ """获取单个任务的文件锁。
89
+
90
+ Args:
91
+ task_path: 任务文件路径
92
+
93
+ Returns:
94
+ FileLock 实例
95
+ """
96
+ lock_path = task_path.with_suffix(task_path.suffix + ".lock")
97
+ FileLock = self._get_filelock_class()
98
+ return FileLock(lock_path, timeout=self.timeout)
99
+
100
+ def get_list_lock(self, tasks_dir: Path) -> "FileLock":
101
+ """获取任务列表目录锁。
102
+
103
+ 用于原子性操作(如认领任务、高水位更新)。
104
+
105
+ Args:
106
+ tasks_dir: 任务目录
107
+
108
+ Returns:
109
+ FileLock 实例
110
+ """
111
+ lock_path = tasks_dir / ".lock"
112
+ FileLock = self._get_filelock_class()
113
+ return FileLock(lock_path, timeout=self.timeout)
@@ -0,0 +1,131 @@
1
+ """
2
+ task_runtime/tasklist/models.py — CC 任务列表数据模型
3
+
4
+ 职责:
5
+ 定义 Claude Code 对等的任务列表数据契约:
6
+ - TaskStatus:任务状态(pending/in_progress/committed)
7
+ - Task:任务完整数据结构
8
+ - TaskCreate:创建任务输入(不含自动生成字段)
9
+ - TaskUpdate:更新任务输入(全部可选)
10
+ - TaskFilters:列表过滤条件
11
+ - ClaimResult:任务认领结果
12
+
13
+ 链路位置:
14
+ TaskListRuntimeTool/TaskGetRuntimeTool → TaskStore → models
15
+
16
+ 与 CC 对应:
17
+ CC src/utils/tasks.ts 中 Task 接口、TaskStatus、ClaimResult 等。
18
+
19
+ 裁剪范围(v1):
20
+ - 基础字段:id, subject, description, status, blocks, blockedBy
21
+ - metadata 支持 _internal 标记
22
+ - owner 字段预留(v1 简化,仅存储不校验)
23
+ - active_form 用于 UI 显示
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ from dataclasses import dataclass, field
29
+ from typing import Any, Literal, Optional
30
+
31
+ TaskStatus = Literal["pending", "in_progress", "completed"]
32
+
33
+ # 与 TaskStatus 同一对象;供 langchain_agentx.task_runtime 顶层导出为 TaskListStatus,
34
+ # 以区别于编排层 core.types.TaskStatus 枚举。
35
+ TaskListStatus = TaskStatus
36
+
37
+ # 任务更新状态(包含 deleted,用于 TaskUpdate 工具)
38
+ TaskUpdateStatus = Literal["pending", "in_progress", "completed", "deleted"]
39
+
40
+ # 字段长度限制常量(基于用户体验与 CC 实践)
41
+ MAX_SUBJECT_LENGTH: int = 120
42
+ MAX_DESCRIPTION_LENGTH: int = 5000
43
+ MAX_ACTIVE_FORM_LENGTH: int = 100
44
+
45
+
46
+ @dataclass
47
+ class Task:
48
+ """任务完整数据结构。
49
+
50
+ 对应 CC Task 接口,每个任务对应一个 JSON 文件。
51
+
52
+ 字段说明:
53
+ id: 任务唯一 ID(数字字符串,高水位标记生成)
54
+ subject: 任务简短标题
55
+ description: 任务详细描述
56
+ active_form: 进行中时显示的文本(如 "Fixing authentication bug")
57
+ owner: 任务所有者(Agent ID 或 None)
58
+ status: 任务状态
59
+ blocks: 此任务阻塞的任务 ID 列表
60
+ blocked_by: 阻塞此任务的任务 ID 列表
61
+ metadata: 附加元数据(_internal=True 表示内部任务)
62
+ """
63
+
64
+ id: str
65
+ subject: str
66
+ description: str
67
+ active_form: Optional[str] = None
68
+ owner: Optional[str] = None
69
+ status: TaskStatus = "pending"
70
+ blocks: list[str] = field(default_factory=list)
71
+ blocked_by: list[str] = field(default_factory=list)
72
+ metadata: dict[str, Any] = field(default_factory=dict)
73
+
74
+ def is_internal(self) -> bool:
75
+ """判断是否为内部任务(不在 UI 显示)。"""
76
+ return self.metadata.get("_internal", False)
77
+
78
+
79
+ @dataclass
80
+ class TaskCreate:
81
+ """创建任务输入模型。
82
+
83
+ 不含自动生成字段(id、默认字段)。
84
+ """
85
+
86
+ subject: str
87
+ description: str
88
+ active_form: Optional[str] = None
89
+ owner: Optional[str] = None
90
+ status: TaskStatus = "pending"
91
+ blocks: list[str] = field(default_factory=list)
92
+ blocked_by: list[str] = field(default_factory=list)
93
+ metadata: dict[str, Any] = field(default_factory=dict)
94
+
95
+
96
+ @dataclass
97
+ class TaskUpdate:
98
+ """更新任务输入模型。
99
+
100
+ 全部可选,仅更新提供的字段。
101
+ """
102
+
103
+ subject: Optional[str] = None
104
+ description: Optional[str] = None
105
+ active_form: Optional[str] = None
106
+ owner: Optional[str] = None
107
+ status: Optional[TaskStatus] = None
108
+ blocks: Optional[list[str]] = None
109
+ blocked_by: Optional[list[str]] = None
110
+ metadata: Optional[dict[str, Any]] = None
111
+
112
+
113
+ @dataclass
114
+ class TaskFilters:
115
+ """任务列表过滤条件。"""
116
+
117
+ status: Optional[TaskStatus] = None
118
+ owner: Optional[str] = None
119
+ exclude_internal: bool = True
120
+
121
+
122
+ @dataclass
123
+ class ClaimResult:
124
+ """任务认领结果。
125
+
126
+ 对应 CC ClaimResult 接口。
127
+ """
128
+
129
+ success: bool
130
+ reason: Optional[str] = None
131
+ task: Optional[Task] = None