langchain-agentx-python 1.4.2__py3-none-any.whl → 1.5.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langchain_agentx/__init__.py +1 -1
- langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py +14 -1
- langchain_agentx/workflow/event_adapter/types.py +27 -0
- {langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/METADATA +8 -8
- {langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/RECORD +8 -8
- {langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/LICENSE +0 -0
- {langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/WHEEL +0 -0
- {langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/top_level.txt +0 -0
langchain_agentx/__init__.py
CHANGED
|
@@ -13,6 +13,10 @@ parallel_handler.py — ParallelizationWorkflow 事件处理器
|
|
|
13
13
|
当前裁剪范围:
|
|
14
14
|
- 只处理 parallel_* 前缀的节点和 aggregate 节点
|
|
15
15
|
- 不支持动态并发控制(max_concurrency 由 LangGraph 处理)
|
|
16
|
+
|
|
17
|
+
Phase 1 收敛:
|
|
18
|
+
- parallel item 事件 payload 必带 item_index / item_key / item_total,与 stage_total 对齐
|
|
19
|
+
- 失败事件统一使用 PARALLEL_ITEM_FAILED / PARALLEL_AGGREGATE_FAILED,不与 DONE 共用 + error
|
|
16
20
|
"""
|
|
17
21
|
|
|
18
22
|
from typing import Any, Dict, List
|
|
@@ -178,16 +182,23 @@ class ParallelHandler:
|
|
|
178
182
|
)
|
|
179
183
|
|
|
180
184
|
def _handle_parallel_item(self, event: Dict[str, Any], event_type: str, node: str) -> List[WorkflowEvent]:
|
|
181
|
-
"""处理 parallel_* 并行项事件
|
|
185
|
+
"""处理 parallel_* 并行项事件
|
|
186
|
+
|
|
187
|
+
Phase 1 收敛:payload top-level 必带 item_index / item_key / item_total,
|
|
188
|
+
与 stage_total 对齐;item_total 缺失时(无 structure spec)置 0 以保持类型稳定。
|
|
189
|
+
"""
|
|
182
190
|
events: List[WorkflowEvent] = []
|
|
183
191
|
|
|
184
192
|
# 提取并行项索引(structure 映射优先,旧数字后缀 fallback)
|
|
185
193
|
item_index = resolve_item_index(self._config, node, prefix=self._prefix)
|
|
194
|
+
item_total_raw = resolve_item_total(self._config)
|
|
195
|
+
item_total = item_total_raw if isinstance(item_total_raw, int) else 0
|
|
186
196
|
|
|
187
197
|
if event_type == "on_chain_start":
|
|
188
198
|
data = {
|
|
189
199
|
"item_index": item_index,
|
|
190
200
|
"item_key": node,
|
|
201
|
+
"item_total": item_total,
|
|
191
202
|
}
|
|
192
203
|
self._attach_item_display(data, WorkflowEventType.PARALLEL_ITEM_START, node, item_index)
|
|
193
204
|
events.append(WorkflowEvent(
|
|
@@ -202,6 +213,7 @@ class ParallelHandler:
|
|
|
202
213
|
data = {
|
|
203
214
|
"item_index": item_index,
|
|
204
215
|
"item_key": node,
|
|
216
|
+
"item_total": item_total,
|
|
205
217
|
}
|
|
206
218
|
self._attach_item_display(data, WorkflowEventType.PARALLEL_ITEM_DONE, node, item_index)
|
|
207
219
|
events.append(WorkflowEvent(
|
|
@@ -218,6 +230,7 @@ class ParallelHandler:
|
|
|
218
230
|
data = {
|
|
219
231
|
"item_index": item_index,
|
|
220
232
|
"item_key": node,
|
|
233
|
+
"item_total": item_total,
|
|
221
234
|
"error": str(error_info),
|
|
222
235
|
"error_type": type(error_info).__name__ if isinstance(error_info, Exception) else "WorkflowParallelItemError",
|
|
223
236
|
}
|
|
@@ -5,6 +5,7 @@ types.py — Workflow 事件适配器类型定义
|
|
|
5
5
|
- 定义 WorkflowEvent 数据类
|
|
6
6
|
- 定义 WorkflowEventType 枚举
|
|
7
7
|
- 定义 WorkflowAdapterState 状态类
|
|
8
|
+
- 收敛结构事件 payload 字段命名与 display 必填/可选边界
|
|
8
9
|
|
|
9
10
|
链路位置:
|
|
10
11
|
- Layer 3: Workflow 事件适配器
|
|
@@ -13,6 +14,32 @@ types.py — Workflow 事件适配器类型定义
|
|
|
13
14
|
当前裁剪范围:
|
|
14
15
|
- 不包含 OrchestratorWorkflow 事件类型(Phase 2+)
|
|
15
16
|
- 不包含 Agent 层事件类型(由 LangchainAgentEvent 处理)
|
|
17
|
+
|
|
18
|
+
事件契约(Phase 1 收敛):
|
|
19
|
+
- root workflow 失败 → WORKFLOW_FAILED(仅在 depth == 0 由 adapter 主路径发出)
|
|
20
|
+
- 局部失败(stage/item/aggregate/branch)→ 对应 *_FAILED 事件,且必带 error / error_type
|
|
21
|
+
- done / failed 不复用同一事件类型 + error 字段;done 不携带 error
|
|
22
|
+
- parallel item 事件 payload 必带 item_index / item_key / item_total(与 stage_total 对齐)
|
|
23
|
+
|
|
24
|
+
data.display 必填字段(display 存在时):
|
|
25
|
+
- version: int display schema 版本
|
|
26
|
+
- scope: str workflow / stage / item / branch / aggregate / subworkflow
|
|
27
|
+
- status: str running / completed / failed / pending / ...
|
|
28
|
+
|
|
29
|
+
data.display 可选字段(按 scope 出现):
|
|
30
|
+
- title / description UI 显示主标题与 subtitle(description 仅做 subtitle,不挂正文 preview)
|
|
31
|
+
- breadcrumb 层级路径数组
|
|
32
|
+
- progress_current / progress_total / progress_label / progress_indeterminate
|
|
33
|
+
- workflow_title / workflow_description / parent_title
|
|
34
|
+
- item_index / item_total / decision_label
|
|
35
|
+
- metrics_completed / metrics_running / metrics_failed / metrics_total
|
|
36
|
+
- status_reason / icon
|
|
37
|
+
- pattern / debug_key 运行期辅助字段,非展示语义
|
|
38
|
+
|
|
39
|
+
subtitle 边界(与正文 preview 分离):
|
|
40
|
+
- display.description ⇒ 容器 subtitle(一行简短摘要)
|
|
41
|
+
- agent / tool / message 等内容事件 ⇒ 挂在容器下作为 body / preview
|
|
42
|
+
- SDK 不在结构事件 data 中混入 agent 内容(如 reasoning_content / messages)
|
|
16
43
|
"""
|
|
17
44
|
|
|
18
45
|
from dataclasses import dataclass, field
|
{langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langchain-agentx-python
|
|
3
|
-
Version: 1.4
|
|
3
|
+
Version: 1.5.4
|
|
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
|
|
@@ -216,15 +216,15 @@ Classifier: Operating System :: OS Independent
|
|
|
216
216
|
Requires-Python: >=3.11
|
|
217
217
|
Description-Content-Type: text/markdown
|
|
218
218
|
License-File: LICENSE
|
|
219
|
-
Requires-Dist: langgraph<1.3.0,>=1.
|
|
220
|
-
Requires-Dist: langgraph-prebuilt<1.2.0,>=1.0
|
|
221
|
-
Requires-Dist: langchain<2.0.0,>=1.
|
|
222
|
-
Requires-Dist: langchain-core<2.0.0,>=1.
|
|
219
|
+
Requires-Dist: langgraph<1.3.0,>=1.2.5
|
|
220
|
+
Requires-Dist: langgraph-prebuilt<1.2.0,>=1.1.0
|
|
221
|
+
Requires-Dist: langchain<2.0.0,>=1.3.9
|
|
222
|
+
Requires-Dist: langchain-core<2.0.0,>=1.4.7
|
|
223
223
|
Requires-Dist: langchain-text-splitters>=1.1.0
|
|
224
|
-
Requires-Dist: langchain-anthropic<2.0.0,>=1.
|
|
224
|
+
Requires-Dist: langchain-anthropic<2.0.0,>=1.4.6
|
|
225
225
|
Requires-Dist: langchain-google-genai<5.0.0,>=4.2.0
|
|
226
|
-
Requires-Dist: langchain-community>=0.4.
|
|
227
|
-
Requires-Dist: langchain-openai>=1.
|
|
226
|
+
Requires-Dist: langchain-community>=0.4.2
|
|
227
|
+
Requires-Dist: langchain-openai>=1.3.2
|
|
228
228
|
Requires-Dist: openai
|
|
229
229
|
Requires-Dist: tree-sitter==0.21.3
|
|
230
230
|
Requires-Dist: tree-sitter-languages>=1.10.2
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
langchain_agentx/__init__.py,sha256=
|
|
1
|
+
langchain_agentx/__init__.py,sha256=usHZv4utHyCCpHzCj6g7iTRghMj5BFBhJE5R3BBOBFc,1614
|
|
2
2
|
langchain_agentx/command/__init__.py,sha256=Ej260S5uFQcmEtGZQG_NH7BYjHoStrpBLtGUsBTxyZk,631
|
|
3
3
|
langchain_agentx/command/allowed_tools.py,sha256=TVA0VM8rm98H-QbLK_GRiX5RhEAZFxKawliMi4kk96A,3359
|
|
4
4
|
langchain_agentx/command/context.py,sha256=DIGOGPBw5UGDBm0WNNJlKx1h_9rCRmcdROv4DT61Qug,731
|
|
@@ -692,10 +692,10 @@ langchain_agentx/workflow/event_adapter/adapter.py,sha256=RXreqtL4jJaCkdN8iwVfGO
|
|
|
692
692
|
langchain_agentx/workflow/event_adapter/depth_resolver.py,sha256=MLUTSoVbAtUieQjV79rR0HKFhEYbNuCYpArG2rv8E6c,5181
|
|
693
693
|
langchain_agentx/workflow/event_adapter/stack.py,sha256=Y5ZfRTbSAYB78XQsVrl9kyWwLspFyh6y53HUHxbrzzQ,3916
|
|
694
694
|
langchain_agentx/workflow/event_adapter/structure_utils.py,sha256=EYUKYouB44zhkppXAULlIdFZ0vz81PSnpCYCCfkJdZQ,2991
|
|
695
|
-
langchain_agentx/workflow/event_adapter/types.py,sha256=
|
|
695
|
+
langchain_agentx/workflow/event_adapter/types.py,sha256=WF4pEJdqzXTAxr8aGXrS26ucMWJW7AHaPebPnkL7SUk,8259
|
|
696
696
|
langchain_agentx/workflow/event_adapter/handlers/__init__.py,sha256=oiEWh29Vw1dJbKlS4RIaKxh4EnvRVDVDRsfGyI16b-E,493
|
|
697
697
|
langchain_agentx/workflow/event_adapter/handlers/display_support.py,sha256=pEp3SxvXzXIvms9QM3o4G0AMgUVlY_9hTqbphvq0BwI,1843
|
|
698
|
-
langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py,sha256=
|
|
698
|
+
langchain_agentx/workflow/event_adapter/handlers/parallel_handler.py,sha256=jFxjlniVMTzT_yZRF2KDxLateXGVLTUp-e6tydceFr8,10552
|
|
699
699
|
langchain_agentx/workflow/event_adapter/handlers/route_handler.py,sha256=OA7jKvFghHyyDpCNLCXCe1tY_Z0cMu1OQqShhzi5tBc,6189
|
|
700
700
|
langchain_agentx/workflow/event_adapter/handlers/stage_handler.py,sha256=7B8ZY-x9O7gVv1-xlZM2OtAnsnKXbUFTsuHxrBnkTCU,6437
|
|
701
701
|
langchain_agentx/workflow/patterns/__init__.py,sha256=JB021EXUCNO7ZdReqlc_QVCzr5BlIOY-UDjIBj1UzKA,930
|
|
@@ -722,8 +722,8 @@ langchain_agentx/workspace/root_grant_manager.py,sha256=W3gy8HTevbERbXqIgRcjzOXO
|
|
|
722
722
|
langchain_agentx/workspace/tool_boundary.py,sha256=UDwX6swpSLsx9HNkYuuRRiV5o7ZZG_Bru2Yn0c5kNX8,5724
|
|
723
723
|
langchain_agentx/workspace/validators.py,sha256=tQt-6TOcL8Fw7Ig5ebA9S7vGWh1rby920eFW6x8Tk9E,1439
|
|
724
724
|
langchain_agentx/workspace/view.py,sha256=Ip02CZNI-ZjF5k0OYT3q7RUR_auMEw83VJ6rQsaBcYU,4588
|
|
725
|
-
langchain_agentx_python-1.4.
|
|
726
|
-
langchain_agentx_python-1.4.
|
|
727
|
-
langchain_agentx_python-1.4.
|
|
728
|
-
langchain_agentx_python-1.4.
|
|
729
|
-
langchain_agentx_python-1.4.
|
|
725
|
+
langchain_agentx_python-1.5.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
726
|
+
langchain_agentx_python-1.5.4.dist-info/METADATA,sha256=i-8TFeLuqFuuACvejSDk5q7EBnoHcYwDo0ovNTBVykM,24250
|
|
727
|
+
langchain_agentx_python-1.5.4.dist-info/WHEEL,sha256=51RkbunBAw4BWsgaQWTpPhg4Diwp3c9P5iaLk67Hdtg,92
|
|
728
|
+
langchain_agentx_python-1.5.4.dist-info/top_level.txt,sha256=Ge284pniNt8xea0OLk2o9o32GqVpDhOYk20fwE-0xxA,17
|
|
729
|
+
langchain_agentx_python-1.5.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{langchain_agentx_python-1.4.2.dist-info → langchain_agentx_python-1.5.4.dist-info}/top_level.txt
RENAMED
|
File without changes
|