dispatch_agents 0.14.1__tar.gz → 0.14.2__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 (163) hide show
  1. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/PKG-INFO +1 -1
  2. dispatch_agents-0.14.2/RELEASE_NOTES.md +2 -0
  3. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/grpc_server.py +1 -1
  4. dispatch_agents-0.14.1/dispatch_agents/_internal/logging_config.py → dispatch_agents-0.14.2/dispatch_agents/logging.py +8 -1
  5. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/uv.lock +1 -1
  6. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/pyproject.toml +1 -1
  7. dispatch_agents-0.14.1/tests/test_logging_config.py → dispatch_agents-0.14.2/tests/test_logging.py +17 -17
  8. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/uv.lock +7 -7
  9. dispatch_agents-0.14.1/RELEASE_NOTES.md +0 -1
  10. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.claude-plugin/marketplace.json +0 -0
  11. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/scripts/change_scope.py +0 -0
  12. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/scripts/ci_git.py +0 -0
  13. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/scripts/version_policy.py +0 -0
  14. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/tests/test_change_scope.py +0 -0
  15. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/tests/test_ci_git.py +0 -0
  16. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/tests/test_version_policy.py +0 -0
  17. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/workflows/ci-reusable.yml +0 -0
  18. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/workflows/feature-branch.yml +0 -0
  19. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/workflows/release.yml +0 -0
  20. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.github/workflows/version-policy-reusable.yml +0 -0
  21. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/.gitignore +0 -0
  22. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/CONTRIBUTING.md +0 -0
  23. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/LICENSE +0 -0
  24. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/LICENSE-3rdparty.csv +0 -0
  25. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/NOTICE +0 -0
  26. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/README.md +0 -0
  27. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/__init__.py +0 -0
  28. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/py.typed +0 -0
  29. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/__init__.py +0 -0
  30. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/message_pb2.py +0 -0
  31. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/message_pb2.pyi +0 -0
  32. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/message_pb2_grpc.py +0 -0
  33. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/request_response_pb2.py +0 -0
  34. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/request_response_pb2.pyi +0 -0
  35. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/request_response_pb2_grpc.py +0 -0
  36. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/service_pb2.py +0 -0
  37. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/service_pb2.pyi +0 -0
  38. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/agentservice/v1/service_pb2_grpc.py +0 -0
  39. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/__init__.py +0 -0
  40. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_deprecated_public_api.py +0 -0
  41. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/__init__.py +0 -0
  42. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/agent_service.py +0 -0
  43. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/bootstrap.py +0 -0
  44. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/config_validation.py +0 -0
  45. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/dev.py +0 -0
  46. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/dispatch.py +0 -0
  47. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/instrument.py +0 -0
  48. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/llm_langchain.py +0 -0
  49. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/models.py +0 -0
  50. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/proxy/__init__.py +0 -0
  51. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/proxy/server.py +0 -0
  52. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/proxy/sse_utils.py +0 -0
  53. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/transport.py +0 -0
  54. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/_internal/version.py +0 -0
  55. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/config.py +0 -0
  56. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/context.py +0 -0
  57. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/contrib/__init__.py +0 -0
  58. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/contrib/claude/__init__.py +0 -0
  59. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/contrib/openai/__init__.py +0 -0
  60. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/events.py +0 -0
  61. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/handlers.py +0 -0
  62. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/integrations/__init__.py +0 -0
  63. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/integrations/github/README.md +0 -0
  64. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/integrations/github/__init__.py +0 -0
  65. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/integrations/github/client.py +0 -0
  66. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/integrations/github/events.py +0 -0
  67. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/invocation.py +0 -0
  68. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/llm.py +0 -0
  69. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/mcp.py +0 -0
  70. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/memory.py +0 -0
  71. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/models.py +0 -0
  72. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/py.typed +0 -0
  73. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/dispatch_agents/storage.py +0 -0
  74. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/README.md +0 -0
  75. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/.gitignore +0 -0
  76. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/AGENTS.md +0 -0
  77. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/README.md +0 -0
  78. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/agent.py +0 -0
  79. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/dispatch.yaml +0 -0
  80. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/pyproject.toml +0 -0
  81. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/company-researcher/uv.lock +0 -0
  82. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/conversational-agent/README.md +0 -0
  83. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/conversational-agent/agent.py +0 -0
  84. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/conversational-agent/dispatch.yaml +0 -0
  85. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/conversational-agent/pyproject.toml +0 -0
  86. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/daily-digest/README.md +0 -0
  87. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/daily-digest/agent.py +0 -0
  88. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/daily-digest/dispatch.yaml +0 -0
  89. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/daily-digest/pyproject.toml +0 -0
  90. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/README.md +0 -0
  91. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/agent.py +0 -0
  92. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/configuration.py +0 -0
  93. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/deep_researcher.py +0 -0
  94. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/dispatch.yaml +0 -0
  95. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/prompts.py +0 -0
  96. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/pyproject.toml +0 -0
  97. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/state.py +0 -0
  98. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/deep-research/tools.py +0 -0
  99. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/.gitignore +0 -0
  100. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/AGENTS.md +0 -0
  101. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/README.md +0 -0
  102. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/agent.py +0 -0
  103. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/dispatch.yaml +0 -0
  104. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/pyproject.toml +0 -0
  105. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/hello_world/test_agent.py +0 -0
  106. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/knowledge-base-query/.env.example +0 -0
  107. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/knowledge-base-query/.gitignore +0 -0
  108. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/knowledge-base-query/AGENTS.md +0 -0
  109. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/knowledge-base-query/agent.py +0 -0
  110. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/knowledge-base-query/dispatch.yaml +0 -0
  111. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/knowledge-base-query/pyproject.toml +0 -0
  112. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/multi-framework/README.md +0 -0
  113. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/multi-framework/agent.py +0 -0
  114. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/multi-framework/dispatch.yaml +0 -0
  115. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/multi-framework/pyproject.toml +0 -0
  116. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/pyproject.toml +0 -0
  117. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/uv.lock +0 -0
  118. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-assistant/.gitignore +0 -0
  119. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-assistant/AGENTS.md +0 -0
  120. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-assistant/agent.py +0 -0
  121. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-assistant/dispatch.yaml +0 -0
  122. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-assistant/pyproject.toml +0 -0
  123. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-assistant/uv.lock +0 -0
  124. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-service/.gitignore +0 -0
  125. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-service/AGENTS.md +0 -0
  126. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-service/agent.py +0 -0
  127. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-service/dispatch.yaml +0 -0
  128. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-service/pyproject.toml +0 -0
  129. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/examples/weather-service/uv.lock +0 -0
  130. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/internal/py.typed +0 -0
  131. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/plugins/README.md +0 -0
  132. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/__init__.py +0 -0
  133. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/conftest.py +0 -0
  134. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/e2e_claude_mcp_proxy.py +0 -0
  135. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/schemas/README.md +0 -0
  136. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/schemas/octokit-webhooks.json +0 -0
  137. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test.py +0 -0
  138. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_agent_service.py +0 -0
  139. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_agent_uid.py +0 -0
  140. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_config.py +0 -0
  141. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_contrib_claude.py +0 -0
  142. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_contrib_openai.py +0 -0
  143. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_dev_mode_isolation.py +0 -0
  144. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_extra_headers.py +0 -0
  145. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_fn_decorator.py +0 -0
  146. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_github_client.py +0 -0
  147. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_github_integration.py +0 -0
  148. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_github_schema_compliance.py +0 -0
  149. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_grpc_server.py +0 -0
  150. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_init.py +0 -0
  151. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_instrument.py +0 -0
  152. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_llm_langchain.py +0 -0
  153. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_llm_logging.py +0 -0
  154. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_mcp.py +0 -0
  155. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_memory.py +0 -0
  156. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_proxy_e2e.py +0 -0
  157. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_proxy_server.py +0 -0
  158. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_public_api.py +0 -0
  159. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_resources.py +0 -0
  160. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_sse_utils.py +0 -0
  161. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_trace_context.py +0 -0
  162. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/test_typed_events.py +0 -0
  163. {dispatch_agents-0.14.1 → dispatch_agents-0.14.2}/tests/typing_checks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dispatch_agents
3
- Version: 0.14.1
3
+ Version: 0.14.2
4
4
  Summary: Dispatch Agents SDK
5
5
  License-File: LICENSE
6
6
  License-File: LICENSE-3rdparty.csv
@@ -0,0 +1,2 @@
1
+ ## Features
2
+ - The logging configuration module is now publicly accessible as `dispatch_agents.logging`, allowing users to directly import and use logging utilities from the top-level package.
@@ -25,7 +25,6 @@ from dispatch_agents._internal.dispatch import (
25
25
  _dispatch_message,
26
26
  _run_init_hook,
27
27
  )
28
- from dispatch_agents._internal.logging_config import get_logger
29
28
  from dispatch_agents._internal.models import (
30
29
  AgentFunction,
31
30
  ErrorPayload,
@@ -46,6 +45,7 @@ from dispatch_agents.handlers import (
46
45
  _REGISTERED_HANDLERS,
47
46
  _TOPIC_HANDLERS,
48
47
  )
48
+ from dispatch_agents.logging import get_logger
49
49
 
50
50
  logger = get_logger(__name__)
51
51
 
@@ -18,6 +18,13 @@ import logging
18
18
  import os
19
19
  import sys
20
20
 
21
+ __all__ = [
22
+ "SDK_LOGGER_NAME",
23
+ "configure_logging",
24
+ "get_logger",
25
+ "is_verbose",
26
+ ]
27
+
21
28
  # SDK logger namespace
22
29
  SDK_LOGGER_NAME = "dispatch_agents"
23
30
 
@@ -119,7 +126,7 @@ def get_logger(name: str | None = None) -> logging.Logger:
119
126
  configure_logging()
120
127
 
121
128
  if name:
122
- # Create child logger: dispatch_agents._internal.grpc_server, etc.
129
+ # Create child logger: dispatch_agents.grpc_server, etc.
123
130
  if name.startswith(SDK_LOGGER_NAME):
124
131
  return logging.getLogger(name)
125
132
  return logging.getLogger(f"{SDK_LOGGER_NAME}.{name}")
@@ -181,7 +181,7 @@ wheels = [
181
181
 
182
182
  [[package]]
183
183
  name = "dispatch-agents"
184
- version = "0.14.0"
184
+ version = "0.14.2"
185
185
  source = { directory = "../../sdk" }
186
186
  dependencies = [
187
187
  { name = "aiohttp" },
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "dispatch_agents"
7
- version = "0.14.1"
7
+ version = "0.14.2"
8
8
  description = "Dispatch Agents SDK"
9
9
  requires-python = ">=3.11"
10
10
  dependencies = [
@@ -1,4 +1,4 @@
1
- """Tests for dispatch_agents._internal.logging_config module.
1
+ """Tests for the dispatch_agents.logging module.
2
2
 
3
3
  Log level resolves as: ``DISPATCH_LOG_LEVEL`` env override → the ``log_level``
4
4
  field in dispatch.yaml (read through the runtime config model) → WARNING. Tests
@@ -43,42 +43,42 @@ class TestGetLogLevel:
43
43
  def test_default_is_warning_when_no_file(self, monkeypatch, tmp_path):
44
44
  _point_at(monkeypatch, str(tmp_path / "missing.yaml"))
45
45
 
46
- from dispatch_agents._internal.logging_config import _get_log_level
46
+ from dispatch_agents.logging import _get_log_level
47
47
 
48
48
  assert _get_log_level() == logging.WARNING
49
49
 
50
50
  def test_default_is_warning_when_key_absent(self, monkeypatch, tmp_path):
51
51
  _point_at(monkeypatch, _write_config(tmp_path, "namespace: dev\n"))
52
52
 
53
- from dispatch_agents._internal.logging_config import _get_log_level
53
+ from dispatch_agents.logging import _get_log_level
54
54
 
55
55
  assert _get_log_level() == logging.WARNING
56
56
 
57
57
  def test_explicit_debug(self, monkeypatch, tmp_path):
58
58
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: DEBUG\n"))
59
59
 
60
- from dispatch_agents._internal.logging_config import _get_log_level
60
+ from dispatch_agents.logging import _get_log_level
61
61
 
62
62
  assert _get_log_level() == logging.DEBUG
63
63
 
64
64
  def test_explicit_info(self, monkeypatch, tmp_path):
65
65
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: INFO\n"))
66
66
 
67
- from dispatch_agents._internal.logging_config import _get_log_level
67
+ from dispatch_agents.logging import _get_log_level
68
68
 
69
69
  assert _get_log_level() == logging.INFO
70
70
 
71
71
  def test_explicit_error(self, monkeypatch, tmp_path):
72
72
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: ERROR\n"))
73
73
 
74
- from dispatch_agents._internal.logging_config import _get_log_level
74
+ from dispatch_agents.logging import _get_log_level
75
75
 
76
76
  assert _get_log_level() == logging.ERROR
77
77
 
78
78
  def test_case_insensitive(self, monkeypatch, tmp_path):
79
79
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: debug\n"))
80
80
 
81
- from dispatch_agents._internal.logging_config import _get_log_level
81
+ from dispatch_agents.logging import _get_log_level
82
82
 
83
83
  assert _get_log_level() == logging.DEBUG
84
84
 
@@ -90,7 +90,7 @@ class TestEnvOverride:
90
90
  _point_at(monkeypatch, str(tmp_path / "missing.yaml"))
91
91
  monkeypatch.setenv("DISPATCH_LOG_LEVEL", "DEBUG")
92
92
 
93
- from dispatch_agents._internal.logging_config import _get_log_level
93
+ from dispatch_agents.logging import _get_log_level
94
94
 
95
95
  assert _get_log_level() == logging.DEBUG
96
96
 
@@ -98,7 +98,7 @@ class TestEnvOverride:
98
98
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: ERROR\n"))
99
99
  monkeypatch.setenv("DISPATCH_LOG_LEVEL", "DEBUG")
100
100
 
101
- from dispatch_agents._internal.logging_config import _get_log_level
101
+ from dispatch_agents.logging import _get_log_level
102
102
 
103
103
  assert _get_log_level() == logging.DEBUG
104
104
 
@@ -106,7 +106,7 @@ class TestEnvOverride:
106
106
  _point_at(monkeypatch, str(tmp_path / "missing.yaml"))
107
107
  monkeypatch.setenv("DISPATCH_LOG_LEVEL", "info")
108
108
 
109
- from dispatch_agents._internal.logging_config import _get_log_level
109
+ from dispatch_agents.logging import _get_log_level
110
110
 
111
111
  assert _get_log_level() == logging.INFO
112
112
 
@@ -115,7 +115,7 @@ class TestConfigureLogging:
115
115
  def test_sets_level(self, monkeypatch, tmp_path):
116
116
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: INFO\n"))
117
117
 
118
- import dispatch_agents._internal.logging_config as lc
118
+ import dispatch_agents.logging as lc
119
119
 
120
120
  lc._logging_configured = False
121
121
  lc.configure_logging(force=True)
@@ -126,7 +126,7 @@ class TestConfigureLogging:
126
126
  def test_idempotent_without_force(self, monkeypatch, tmp_path):
127
127
  _point_at(monkeypatch, _write_config(tmp_path, None))
128
128
 
129
- import dispatch_agents._internal.logging_config as lc
129
+ import dispatch_agents.logging as lc
130
130
 
131
131
  lc._logging_configured = False
132
132
 
@@ -143,19 +143,19 @@ class TestConfigureLogging:
143
143
 
144
144
  class TestGetLogger:
145
145
  def test_child_logger(self):
146
- from dispatch_agents._internal.logging_config import SDK_LOGGER_NAME, get_logger
146
+ from dispatch_agents.logging import SDK_LOGGER_NAME, get_logger
147
147
 
148
148
  logger = get_logger("grpc_server")
149
149
  assert logger.name == f"{SDK_LOGGER_NAME}.grpc_server"
150
150
 
151
151
  def test_root_logger(self):
152
- from dispatch_agents._internal.logging_config import SDK_LOGGER_NAME, get_logger
152
+ from dispatch_agents.logging import SDK_LOGGER_NAME, get_logger
153
153
 
154
154
  logger = get_logger()
155
155
  assert logger.name == SDK_LOGGER_NAME
156
156
 
157
157
  def test_fully_qualified_name_passthrough(self):
158
- from dispatch_agents._internal.logging_config import SDK_LOGGER_NAME, get_logger
158
+ from dispatch_agents.logging import SDK_LOGGER_NAME, get_logger
159
159
 
160
160
  fqn = f"{SDK_LOGGER_NAME}.some_module"
161
161
  logger = get_logger(fqn)
@@ -166,13 +166,13 @@ class TestIsVerbose:
166
166
  def test_false_by_default(self, monkeypatch, tmp_path):
167
167
  _point_at(monkeypatch, _write_config(tmp_path, None))
168
168
 
169
- from dispatch_agents._internal.logging_config import is_verbose
169
+ from dispatch_agents.logging import is_verbose
170
170
 
171
171
  assert is_verbose() is False
172
172
 
173
173
  def test_true_when_debug(self, monkeypatch, tmp_path):
174
174
  _point_at(monkeypatch, _write_config(tmp_path, "log_level: DEBUG\n"))
175
175
 
176
- from dispatch_agents._internal.logging_config import is_verbose
176
+ from dispatch_agents.logging import is_verbose
177
177
 
178
178
  assert is_verbose() is True
@@ -3,15 +3,15 @@ revision = 3
3
3
  requires-python = ">=3.11"
4
4
 
5
5
  [options]
6
- exclude-newer = "2026-05-11T17:42:21.67162Z"
6
+ exclude-newer = "2026-05-11T22:04:24.44015Z"
7
7
  exclude-newer-span = "P30D"
8
8
 
9
9
  [options.exclude-newer-package]
10
- dispatch-agents = { timestamp = "2026-06-10T17:42:21.671628Z", span = "PT0S" }
11
- claude-agent-sdk = { timestamp = "2026-05-27T17:42:21.671635Z", span = "P14D" }
12
- openai = { timestamp = "2026-05-27T17:42:21.671635Z", span = "P14D" }
13
- langchain-openai = { timestamp = "2026-05-27T17:42:21.671636Z", span = "P14D" }
14
- openai-agents = { timestamp = "2026-05-27T17:42:21.671636Z", span = "P14D" }
10
+ dispatch-agents = { timestamp = "2026-06-10T22:04:24.440155Z", span = "PT0S" }
11
+ claude-agent-sdk = { timestamp = "2026-05-27T22:04:24.44016Z", span = "P14D" }
12
+ openai = { timestamp = "2026-05-27T22:04:24.440161Z", span = "P14D" }
13
+ langchain-openai = { timestamp = "2026-05-27T22:04:24.440161Z", span = "P14D" }
14
+ openai-agents = { timestamp = "2026-05-27T22:04:24.440161Z", span = "P14D" }
15
15
 
16
16
  [[package]]
17
17
  name = "aiohappyeyeballs"
@@ -567,7 +567,7 @@ wheels = [
567
567
 
568
568
  [[package]]
569
569
  name = "dispatch-agents"
570
- version = "0.14.1"
570
+ version = "0.14.2"
571
571
  source = { editable = "." }
572
572
  dependencies = [
573
573
  { name = "aiohttp" },
@@ -1 +0,0 @@
1
- ## Description ## Breaking Changes - reorganize SDK with intentional public interfaces - **Custom `base_image` configurations are now explicitly rejected** rather than silently ignored, and will raise an error at deploy time. ## Features - **Behavioral configuration via `dispatch.yaml`:** Dispatch behavioral toggles (previously set via environment variables) are now configurable directly as fields in `dispatch.yaml`. -**Dev router** UI improvements ## BUG FIX - **MCP stability on read-only filesystems:** Fixed a crash that occurred when the MCP configuration could not be written to a read-only filesystem; MCP config is now constructed in-memory.