agstack 1.8.3__tar.gz → 1.8.4__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 (60) hide show
  1. {agstack-1.8.3 → agstack-1.8.4}/PKG-INFO +1 -1
  2. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/tool_node.py +5 -2
  3. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/tool.py +4 -0
  4. {agstack-1.8.3 → agstack-1.8.4}/agstack.egg-info/PKG-INFO +1 -1
  5. {agstack-1.8.3 → agstack-1.8.4}/pyproject.toml +1 -1
  6. {agstack-1.8.3 → agstack-1.8.4}/LICENSE +0 -0
  7. {agstack-1.8.3 → agstack-1.8.4}/README.md +0 -0
  8. {agstack-1.8.3 → agstack-1.8.4}/agstack/__init__.py +0 -0
  9. {agstack-1.8.3 → agstack-1.8.4}/agstack/config/__init__.py +0 -0
  10. {agstack-1.8.3 → agstack-1.8.4}/agstack/config/logger.py +0 -0
  11. {agstack-1.8.3 → agstack-1.8.4}/agstack/config/manager.py +0 -0
  12. {agstack-1.8.3 → agstack-1.8.4}/agstack/config/types.py +0 -0
  13. {agstack-1.8.3 → agstack-1.8.4}/agstack/contexts.py +0 -0
  14. {agstack-1.8.3 → agstack-1.8.4}/agstack/decorators.py +0 -0
  15. {agstack-1.8.3 → agstack-1.8.4}/agstack/events.py +0 -0
  16. {agstack-1.8.3 → agstack-1.8.4}/agstack/exceptions.py +0 -0
  17. {agstack-1.8.3 → agstack-1.8.4}/agstack/fastapi/__init__.py +0 -0
  18. {agstack-1.8.3 → agstack-1.8.4}/agstack/fastapi/exception.py +0 -0
  19. {agstack-1.8.3 → agstack-1.8.4}/agstack/fastapi/middleware.py +0 -0
  20. {agstack-1.8.3 → agstack-1.8.4}/agstack/fastapi/offline.py +0 -0
  21. {agstack-1.8.3 → agstack-1.8.4}/agstack/fastapi/sse.py +0 -0
  22. {agstack-1.8.3 → agstack-1.8.4}/agstack/infra/db/__init__.py +0 -0
  23. {agstack-1.8.3 → agstack-1.8.4}/agstack/infra/es/__init__.py +0 -0
  24. {agstack-1.8.3 → agstack-1.8.4}/agstack/infra/kg/__init__.py +0 -0
  25. {agstack-1.8.3 → agstack-1.8.4}/agstack/infra/mq/__init__.py +0 -0
  26. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/__init__.py +0 -0
  27. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/client.py +0 -0
  28. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/__init__.py +0 -0
  29. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/agent.py +0 -0
  30. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/context.py +0 -0
  31. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/event.py +0 -0
  32. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/exceptions.py +0 -0
  33. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/factory.py +0 -0
  34. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/flow.py +0 -0
  35. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/loader.py +0 -0
  36. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/__init__.py +0 -0
  37. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/agent_node.py +0 -0
  38. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/base.py +0 -0
  39. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/detect_node.py +0 -0
  40. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/llm_chat_node.py +0 -0
  41. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/llm_embed_node.py +0 -0
  42. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/llm_rerank_node.py +0 -0
  43. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/nodes/python_node.py +0 -0
  44. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/records.py +0 -0
  45. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/registry.py +0 -0
  46. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/sandbox.py +0 -0
  47. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/flow/state.py +0 -0
  48. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/prompts.py +0 -0
  49. {agstack-1.8.3 → agstack-1.8.4}/agstack/llm/token.py +0 -0
  50. {agstack-1.8.3 → agstack-1.8.4}/agstack/schema.py +0 -0
  51. {agstack-1.8.3 → agstack-1.8.4}/agstack/security/__init__.py +0 -0
  52. {agstack-1.8.3 → agstack-1.8.4}/agstack/security/casbin.py +0 -0
  53. {agstack-1.8.3 → agstack-1.8.4}/agstack/security/crypt.py +0 -0
  54. {agstack-1.8.3 → agstack-1.8.4}/agstack/status.py +0 -0
  55. {agstack-1.8.3 → agstack-1.8.4}/agstack.egg-info/SOURCES.txt +0 -0
  56. {agstack-1.8.3 → agstack-1.8.4}/agstack.egg-info/dependency_links.txt +0 -0
  57. {agstack-1.8.3 → agstack-1.8.4}/agstack.egg-info/requires.txt +0 -0
  58. {agstack-1.8.3 → agstack-1.8.4}/agstack.egg-info/top_level.txt +0 -0
  59. {agstack-1.8.3 → agstack-1.8.4}/setup.cfg +0 -0
  60. {agstack-1.8.3 → agstack-1.8.4}/tests/test_flow_io.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agstack
3
- Version: 1.8.3
3
+ Version: 1.8.4
4
4
  Summary: Production-ready toolkit for building FastAPI and LLM applications
5
5
  Author-email: XtraVisions <gitadmin@xtravisions.com>, Chen Hao <chenhao@xtravisions.com>
6
6
  Maintainer-email: XtraVisions <gitadmin@xtravisions.com>, Chen Hao <chenhao@xtravisions.com>
@@ -4,7 +4,7 @@
4
4
 
5
5
  from typing import TYPE_CHECKING, Any
6
6
 
7
- from ..exceptions import FlowError
7
+ from ..exceptions import FlowError, ToolExecutionError
8
8
  from ..registry import registry
9
9
  from .base import NodeHandler
10
10
 
@@ -31,4 +31,7 @@ class ToolNodeHandler(NodeHandler):
31
31
  config = node.get("config", {})
32
32
  resolved = self.resolve_inputs(config, context)
33
33
  tool = self._create_tool(config)
34
- return await tool.run(context, inputs=resolved)
34
+ result = await tool.execute_async(context, inputs=resolved)
35
+ if not result.success:
36
+ raise ToolExecutionError("TOOL_EXECUTION_FAILED", args={"tool_name": tool.name, "error": result.error})
37
+ return result.result
@@ -2,6 +2,7 @@
2
2
 
3
3
  """工具定义和执行"""
4
4
 
5
+ import logging
5
6
  from dataclasses import dataclass
6
7
  from typing import TYPE_CHECKING, Any, Callable
7
8
 
@@ -9,6 +10,8 @@ from typing import TYPE_CHECKING, Any, Callable
9
10
  if TYPE_CHECKING:
10
11
  from .context import FlowContext
11
12
 
13
+ logger = logging.getLogger(__name__)
14
+
12
15
 
13
16
  @dataclass
14
17
  class ToolResult:
@@ -52,6 +55,7 @@ class Tool:
52
55
 
53
56
  return ToolResult(name=self.name, arguments=inputs or {}, result=result, success=True)
54
57
  except Exception as e:
58
+ logger.warning("Tool %s failed: %s", self.name, e, exc_info=True)
55
59
  return ToolResult(
56
60
  name=self.name,
57
61
  arguments=inputs or {},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agstack
3
- Version: 1.8.3
3
+ Version: 1.8.4
4
4
  Summary: Production-ready toolkit for building FastAPI and LLM applications
5
5
  Author-email: XtraVisions <gitadmin@xtravisions.com>, Chen Hao <chenhao@xtravisions.com>
6
6
  Maintainer-email: XtraVisions <gitadmin@xtravisions.com>, Chen Hao <chenhao@xtravisions.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agstack"
3
- version = "1.8.3"
3
+ version = "1.8.4"
4
4
  description = "Production-ready toolkit for building FastAPI and LLM applications"
5
5
  readme = "README.md"
6
6
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes