agent-api-server 2.1.14__tar.gz → 2.1.15__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 (91) hide show
  1. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/PKG-INFO +5 -5
  2. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/README.md +3 -3
  3. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/cache/redis_cache.py +9 -4
  4. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/listener/redis_listener.py +2 -1
  5. agent_api_server-2.1.15/agent_api_server/shared/redis_url.py +22 -0
  6. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/pyproject.toml +1 -1
  7. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/__init__.py +0 -0
  8. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/a2a_bridge/__init__.py +0 -0
  9. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/a2a_bridge/agent_card_builder.py +0 -0
  10. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/a2a_bridge/call_a2a_client.py +0 -0
  11. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/a2a_bridge/langgraph_executor.py +0 -0
  12. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/a2a_bridge/redis_task_store.py +0 -0
  13. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/a2a_bridge/server.py +0 -0
  14. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/acp_bridge/go/Makefile +0 -0
  15. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/acp_bridge/go/agent.go +0 -0
  16. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/acp_bridge/go/agent_test.go +0 -0
  17. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/acp_bridge/go/go.mod +0 -0
  18. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/acp_bridge/go/go.sum +0 -0
  19. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/acp_bridge/go/main.go +0 -0
  20. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/agent_registration.py +0 -0
  21. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/__init__.py +0 -0
  22. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/v1/__init__.py +0 -0
  23. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/v1/api.py +0 -0
  24. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/v1/config.py +0 -0
  25. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/v1/graph.py +0 -0
  26. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/v1/schema.py +0 -0
  27. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/api/v1/thread.py +0 -0
  28. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/app.py +0 -0
  29. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/cache/__init__.py +0 -0
  30. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/callback_handler.py +0 -0
  31. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/client/css/styles.css +0 -0
  32. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/client/favicon.ico +0 -0
  33. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/client/index.html +0 -0
  34. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/client/js/app.js +0 -0
  35. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/client/js/index.umd.js +0 -0
  36. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/config_center/config_center.py +0 -0
  37. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/configs/__init__.py +0 -0
  38. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/configs/config.py +0 -0
  39. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/dynamic_llm/__init__.py +0 -0
  40. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/dynamic_llm/dynamic_llm.py +0 -0
  41. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/listener/__init__.py +0 -0
  42. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/listener/base.py +0 -0
  43. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/listener/nats_listener.py +0 -0
  44. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/log/__init__.py +0 -0
  45. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/log/formatters.py +0 -0
  46. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/log/logging.json +0 -0
  47. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/mcp_convert/__init__.py +0 -0
  48. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/mcp_convert/mcp_convert.py +0 -0
  49. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/mcp_server.py +0 -0
  50. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/memory/__init__.py +0 -0
  51. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/memory/postgres.py +0 -0
  52. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/__init__.py +0 -0
  53. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/agent_registry.py +0 -0
  54. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/modes/__init__.py +0 -0
  55. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/modes/chain.py +0 -0
  56. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/modes/discussion.py +0 -0
  57. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/orchestrator.py +0 -0
  58. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/orchestrator/types.py +0 -0
  59. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/register/__init__.py +0 -0
  60. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/register/register.py +0 -0
  61. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/service.py +0 -0
  62. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/service_hub/service_hub.py +0 -0
  63. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/service_hub/service_hub_test.py +0 -0
  64. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/services/__init__.py +0 -0
  65. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/services/config_builder.py +0 -0
  66. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/services/stream_service.py +0 -0
  67. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/__init__.py +0 -0
  68. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/ase.py +0 -0
  69. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/base_model.py +0 -0
  70. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/common.py +0 -0
  71. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/context_manager.py +0 -0
  72. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/decode_token.py +0 -0
  73. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/detect_message.py +0 -0
  74. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/exceptions.py +0 -0
  75. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/get_model_info.py +0 -0
  76. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/graph_loader.py +0 -0
  77. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/loop_agent.py +0 -0
  78. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/markdown_fixer.py +0 -0
  79. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/mcp_auth.py +0 -0
  80. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/message.py +0 -0
  81. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/model_config.py +0 -0
  82. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/model_manager_client.py +0 -0
  83. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/request_context.py +0 -0
  84. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/shared/util_func.py +0 -0
  85. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/sso_service/__init__.py +0 -0
  86. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/sso_service/sdk/__init__.py +0 -0
  87. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/sso_service/sdk/client.py +0 -0
  88. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/sso_service/sdk/credential.py +0 -0
  89. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/sso_service/sdk/encoding.py +0 -0
  90. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/sso_service/sso_service.py +0 -0
  91. {agent_api_server-2.1.14 → agent_api_server-2.1.15}/agent_api_server/startup.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: agent-api-server
3
- Version: 2.1.14
3
+ Version: 2.1.15
4
4
  Summary: A Langgraph agent API server that implements Langgraph agent's web capabilities and can interact with chatbot
5
5
  Author: zijie.zhang@advantech.com.cn
6
6
  Requires-Python: >=3.10,<3.13
@@ -613,13 +613,13 @@ ACP 采用**代理模式(Proxy Mode)**,CLI 进程作为编辑器与 FastAP
613
613
 
614
614
  ```bash
615
615
  # 从 PyPI 安装
616
- pip install agent-api-server==2.1.14
616
+ pip install agent-api-server==2.1.15
617
617
 
618
618
  # 或从本地 wheel 安装
619
- pip install dist/agent_api_server-2.1.14-py3-none-any.whl
619
+ pip install dist/agent_api_server-2.1.15-py3-none-any.whl
620
620
  ```
621
621
 
622
- `2.1.14` 使用本仓库的 LangGraph 0.6 依赖,并包含 WisePortal 组织适配。PyPI 上另有使用 LangGraph 1.x 的 `2.2.x` 版本,安装本版本时请指定版本号。
622
+ `2.1.15` 使用本仓库的 LangGraph 0.6 依赖,并包含 WisePortal 组织适配及 Redis `mode=standalone` 地址兼容。PyPI 上另有使用 LangGraph 1.x 的 `2.2.x` 版本,安装本版本时请指定版本号。
623
623
 
624
624
  ACP 命令使用仓库中的 Go 实现,需要在源码目录单独构建,并将生成的程序放入 `PATH`:
625
625
 
@@ -572,13 +572,13 @@ ACP 采用**代理模式(Proxy Mode)**,CLI 进程作为编辑器与 FastAP
572
572
 
573
573
  ```bash
574
574
  # 从 PyPI 安装
575
- pip install agent-api-server==2.1.14
575
+ pip install agent-api-server==2.1.15
576
576
 
577
577
  # 或从本地 wheel 安装
578
- pip install dist/agent_api_server-2.1.14-py3-none-any.whl
578
+ pip install dist/agent_api_server-2.1.15-py3-none-any.whl
579
579
  ```
580
580
 
581
- `2.1.14` 使用本仓库的 LangGraph 0.6 依赖,并包含 WisePortal 组织适配。PyPI 上另有使用 LangGraph 1.x 的 `2.2.x` 版本,安装本版本时请指定版本号。
581
+ `2.1.15` 使用本仓库的 LangGraph 0.6 依赖,并包含 WisePortal 组织适配及 Redis `mode=standalone` 地址兼容。PyPI 上另有使用 LangGraph 1.x 的 `2.2.x` 版本,安装本版本时请指定版本号。
582
582
 
583
583
  ACP 命令使用仓库中的 Go 实现,需要在源码目录单独构建,并将生成的程序放入 `PATH`:
584
584
 
@@ -9,6 +9,7 @@ from uuid import uuid4
9
9
  from dataclasses import dataclass
10
10
  import redis.asyncio as redis
11
11
  from agent_api_server.configs import global_config
12
+ from agent_api_server.shared.redis_url import normalize_redis_url
12
13
  from redis.exceptions import RedisError, WatchError
13
14
 
14
15
  logger = logging.getLogger(__name__)
@@ -65,9 +66,13 @@ class AsyncRedisThreadStorage:
65
66
 
66
67
  @staticmethod
67
68
  def _get_redis_url() -> str:
68
- """获取安全的Redis连接字符串(隐藏密码)"""
69
- redis_url = global_config.REDIS_URL
70
- safe_redis_url = redis_url.split('@')[0] + '@[REDACTED]' if '@' in redis_url else redis_url
69
+ """Normalize the configured Redis URL and redact credentials in logs."""
70
+ redis_url = normalize_redis_url(global_config.REDIS_URL)
71
+ scheme = redis_url.partition("://")[0]
72
+ safe_redis_url = (
73
+ f"{scheme}://[REDACTED]@{redis_url.rsplit('@', 1)[1]}"
74
+ if '@' in redis_url else redis_url
75
+ )
71
76
  logger.debug("Using Redis URL: %s", safe_redis_url)
72
77
  return redis_url
73
78
 
@@ -382,4 +387,4 @@ class AsyncRedisThreadStorage:
382
387
  return bool(exists) and status != b"stopped"
383
388
  except RedisError as e:
384
389
  logger.error(f"Failed to check stop flag: {str(e)}")
385
- return False
390
+ return False
@@ -8,6 +8,7 @@ import redis
8
8
 
9
9
  from agent_api_server.configs import global_config
10
10
  from agent_api_server.listener.base import MessageListener
11
+ from agent_api_server.shared.redis_url import normalize_redis_url
11
12
 
12
13
  import logging
13
14
 
@@ -48,7 +49,7 @@ class RedisListener(MessageListener):
48
49
  """Establish Redis connection and subscribe to channels."""
49
50
  try:
50
51
  self.redis_client = redis.Redis.from_url(
51
- url=global_config.MODEL_MANAGER_REDIS_URL,
52
+ url=normalize_redis_url(global_config.MODEL_MANAGER_REDIS_URL),
52
53
  socket_timeout=10,
53
54
  socket_keepalive=True,
54
55
  health_check_interval=15,
@@ -0,0 +1,22 @@
1
+ """Adapt Redis URLs from configuration providers for redis-py clients."""
2
+
3
+ from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit
4
+
5
+
6
+ def normalize_redis_url(url: str) -> str:
7
+ """Remove standalone topology metadata while retaining connection options.
8
+
9
+ redis-py forwards URL query parameters to the connection constructor, which
10
+ does not accept the config center's ``mode`` parameter. Other topologies
11
+ require dedicated clients and must not silently use a standalone client.
12
+ """
13
+ parsed = urlsplit(url)
14
+ parameters = parse_qsl(parsed.query, keep_blank_values=True)
15
+ modes = [value for name, value in parameters if name == "mode"]
16
+ if not modes:
17
+ return url
18
+ if any(mode.lower() != "standalone" for mode in modes):
19
+ raise ValueError("Unsupported Redis mode; only mode=standalone is supported")
20
+
21
+ query = urlencode([(name, value) for name, value in parameters if name != "mode"])
22
+ return urlunsplit(parsed._replace(query=query))
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agent-api-server"
3
- version = "2.1.14"
3
+ version = "2.1.15"
4
4
  description = "A Langgraph agent API server that implements Langgraph agent's web capabilities and can interact with chatbot"
5
5
  authors = [
6
6
  {name = "zijie.zhang@advantech.com.cn"}