by-framework 0.2.2.dev1__tar.gz → 0.2.2.dev2__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 (182) hide show
  1. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.gitignore +2 -0
  2. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CLAUDE.md +5 -3
  3. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/Makefile +4 -0
  4. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/PKG-INFO +5 -4
  5. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/README.md +4 -3
  6. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/README_zh.md +4 -3
  7. by_framework-0.2.2.dev2/docs/by-framework-trace-change-usage.html +627 -0
  8. by_framework-0.2.2.dev2/docs/by-framework-trace-complete-guide.html +1280 -0
  9. by_framework-0.2.2.dev2/docs/plans/2026-06-10-trace-metrics-correlation.md +77 -0
  10. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/worker.py +4 -2
  11. by_framework-0.2.2.dev2/libs/by-framework-dashboard/README.md +151 -0
  12. by_framework-0.2.2.dev2/libs/by-framework-dashboard/pyproject.toml +37 -0
  13. by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard/__init__.py +5 -0
  14. by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard/adapters.py +42 -0
  15. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard}/dashboard.py +105 -28
  16. by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard/static/__init__.py +1 -0
  17. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard/tests}/test_dashboard_server.py +7 -7
  18. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/src/by_framework_history_byclaw/byclaw_history.py +2 -1
  19. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/pyproject.toml +1 -1
  20. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/adapter.py +213 -2
  21. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/tools.py +37 -1
  22. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/tests/test_adapter.py +103 -7
  23. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/tests/test_tools.py +51 -1
  24. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/pyproject.toml +1 -1
  25. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/src/by_framework_trace_langfuse/langfuse.py +414 -39
  26. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/pyproject.toml +1 -1
  27. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/tests/test_phoenix_plugin.py +1 -1
  28. by_framework-0.2.2.dev2/libs/by-framework-trace-query/pyproject.toml +28 -0
  29. by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/__init__.py +7 -0
  30. by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/client.py +204 -0
  31. by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/merger.py +187 -0
  32. by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/models.py +21 -0
  33. by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/redis_source.py +130 -0
  34. by_framework-0.2.2.dev2/libs/by-framework-trace-query/tests/test_trace_query_sdk.py +893 -0
  35. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/pyproject.toml +7 -1
  36. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/scripts/python_quality.sh +2 -1
  37. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/client/client.py +2 -6
  38. by_framework-0.2.2.dev1/src/by_framework/observability/metrics.py → by_framework-0.2.2.dev2/src/by_framework/metrics/__init__.py +24 -1
  39. by_framework-0.2.2.dev2/src/by_framework/metrics/read_client.py +257 -0
  40. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/src/by_framework/metrics}/snapshot.py +3 -3
  41. by_framework-0.2.2.dev2/src/by_framework/trace/__init__.py +55 -0
  42. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/src/by_framework/trace}/external_trace.py +1 -1
  43. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/src/by_framework/trace}/span_recorder.py +116 -55
  44. by_framework-0.2.2.dev2/src/by_framework/trace/trace_schema.py +329 -0
  45. by_framework-0.2.2.dev2/src/by_framework/trace/trace_writer.py +157 -0
  46. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/_control_handling.py +1 -1
  47. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/context.py +208 -129
  48. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/runner.py +29 -9
  49. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/worker.py +116 -9
  50. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/client/test_client.py +1 -1
  51. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/metrics}/test_metrics.py +3 -3
  52. by_framework-0.2.2.dev2/tests/metrics/test_read_client.py +101 -0
  53. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/metrics}/test_snapshot.py +2 -2
  54. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_langfuse_plugin.py +387 -42
  55. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_external_trace.py +2 -2
  56. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_otel_exporter.py +6 -4
  57. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_span_recorder.py +15 -3
  58. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_context.py +282 -30
  59. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_gateway_worker.py +34 -6
  60. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_runner.py +48 -0
  61. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/uv.lock +77 -5
  62. by_framework-0.2.2.dev1/src/by_framework/observability/__init__.py +0 -62
  63. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  64. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  65. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  66. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/RELEASING.md +0 -0
  67. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/workflows/ci.yml +0 -0
  68. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/workflows/publish.yml +0 -0
  69. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/workflows/stale.yml +0 -0
  70. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.pre-commit-config.yaml +0 -0
  71. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/AGENTS.md +0 -0
  72. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CHANGELOG.md +0 -0
  73. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CODE_OF_CONDUCT.md +0 -0
  74. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CONTRIBUTING.md +0 -0
  75. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/LICENSE +0 -0
  76. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/SECURITY.md +0 -0
  77. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/assets/img/architecture_en.png +0 -0
  78. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/assets/img/architecture_zh.png +0 -0
  79. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/autoformat.sh +0 -0
  80. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/docs/README.md +0 -0
  81. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/docs/plans/2026-05-15-worker-task-state-stats.md +0 -0
  82. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/README.md +0 -0
  83. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/pyproject.toml +0 -0
  84. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/__init__.py +0 -0
  85. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/_utils.py +0 -0
  86. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/adapter.py +0 -0
  87. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/tests/test_worker.py +0 -0
  88. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard}/frontend/index.html +0 -0
  89. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard}/frontend/package-lock.json +0 -0
  90. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard}/frontend/package.json +0 -0
  91. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard}/frontend/src/main.jsx +0 -0
  92. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard}/frontend/src/styles.css +0 -0
  93. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard}/frontend/vite.config.js +0 -0
  94. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard}/static/app.js +0 -0
  95. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard}/static/index.html +0 -0
  96. {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard}/static/styles.css +0 -0
  97. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/README.md +0 -0
  98. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/pyproject.toml +0 -0
  99. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/src/by_framework_history_byclaw/__init__.py +0 -0
  100. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/tests/test_byclaw_history.py +0 -0
  101. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/README.md +0 -0
  102. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/pyproject.toml +0 -0
  103. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/src/by_framework_history_postgres/__init__.py +0 -0
  104. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/src/by_framework_history_postgres/postgres.py +0 -0
  105. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/tests/test_postgres_history_storage.py +0 -0
  106. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/README.md +0 -0
  107. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/__init__.py +0 -0
  108. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/_utils.py +0 -0
  109. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/worker.py +0 -0
  110. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/tests/test_utils.py +0 -0
  111. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/README.md +0 -0
  112. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/src/by_framework_trace_langfuse/__init__.py +0 -0
  113. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/tests/test_langfuse_import.py +0 -0
  114. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/README.md +0 -0
  115. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/src/by_framework_trace_phoenix/__init__.py +0 -0
  116. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/src/by_framework_trace_phoenix/phoenix.py +0 -0
  117. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/tests/test_phoenix_import.py +0 -0
  118. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/pylintrc +0 -0
  119. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/__init__.py +0 -0
  120. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/__main__.py +0 -0
  121. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/client/__init__.py +0 -0
  122. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/client/byai_client.py +0 -0
  123. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/__init__.py +0 -0
  124. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/config.py +0 -0
  125. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/constants.py +0 -0
  126. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/emitter.py +0 -0
  127. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/exceptions.py +0 -0
  128. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/logger.py +0 -0
  129. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/redis_client.py +0 -0
  130. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/__init__.py +0 -0
  131. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/base.py +0 -0
  132. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/common.py +0 -0
  133. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/execution.py +0 -0
  134. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/http.py +0 -0
  135. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/protocol.py +0 -0
  136. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/registry.py +0 -0
  137. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/__init__.py +0 -0
  138. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/discovery_http_client.py +0 -0
  139. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/generate_message_id.py +0 -0
  140. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/http_client.py +0 -0
  141. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/__init__.py +0 -0
  142. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/_execution_tracking.py +0 -0
  143. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/_message_processing.py +0 -0
  144. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/app.py +0 -0
  145. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/byai_context.py +0 -0
  146. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/byai_worker.py +0 -0
  147. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/heartbeat.py +0 -0
  148. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/processor.py +0 -0
  149. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/sandbox/__init__.py +0 -0
  150. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/sandbox/hook_sandbox.py +0 -0
  151. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/client/__init__.py +0 -0
  152. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/__init__.py +0 -0
  153. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_config.py +0 -0
  154. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_exceptions.py +0 -0
  155. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_logger.py +0 -0
  156. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_redis_client.py +0 -0
  157. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/conftest.py +0 -0
  158. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/__init__.py +0 -0
  159. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_ask_user_flow.py +0 -0
  160. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_callback_flow.py +0 -0
  161. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_logger_integration.py +0 -0
  162. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_scatter_gather.py +0 -0
  163. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/__init__.py +0 -0
  164. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_discovery.py +0 -0
  165. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_improvements.py +0 -0
  166. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_registry.py +0 -0
  167. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_system.py +0 -0
  168. {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_logger_correlation.py +0 -0
  169. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_discovery_http_client.py +0 -0
  170. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_discovery_http_client_download.py +0 -0
  171. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_discovery_http_client_upload.py +0 -0
  172. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_http_client.py +0 -0
  173. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/__init__.py +0 -0
  174. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_app.py +0 -0
  175. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_byai_worker.py +0 -0
  176. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_control_handling.py +0 -0
  177. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_emitter.py +0 -0
  178. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_heartbeat.py +0 -0
  179. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_message_processing.py +0 -0
  180. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_processor.py +0 -0
  181. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_sandbox.py +0 -0
  182. {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_workspace.py +0 -0
@@ -71,3 +71,5 @@ Thumbs.db
71
71
  core
72
72
 
73
73
  .coderfleet-uploads/
74
+
75
+ .claude/skills
@@ -65,9 +65,11 @@ Plugins can implement: `on_worker_startup`, `on_worker_shutdown`, `on_task_start
65
65
 
66
66
  ### Redis Key Patterns
67
67
 
68
- - `queue:ctrl:{agent_type}` - Control stream for agent commands
69
- - `queue:data:stream` - Data stream for events/chunks
70
- - `worker:active:{worker_id}` - Worker heartbeat registration
68
+ - `byai_gateway:ctrl:agent_type:{agent_type}` Control stream; competitive consume per agent type
69
+ - `byai_gateway:ctrl:worker:{worker_id}` Direct per-worker routing
70
+ - `byai_gateway:session:{session_id}:data_stream` — Session-scoped output events
71
+ - `byai_gateway:registry:worker:online:{worker_id}` — Heartbeat TTL key
72
+ - `byai_gateway:task_group:{group_id}` — Scatter-gather group tracker
71
73
 
72
74
  ## Test Structure
73
75
 
@@ -82,6 +82,10 @@ lint-changed:
82
82
 
83
83
  test:
84
84
  @set -e; for project in $(PROJECTS); do \
85
+ if ! find "$$project/tests" -type f \( -name 'test_*.py' -o -name '*_test.py' \) -print -quit 2>/dev/null | grep -q .; then \
86
+ echo "==> Skipping $$project (no test files)"; \
87
+ continue; \
88
+ fi; \
85
89
  echo "==> Testing $$project"; \
86
90
  (cd $$project && uv run --extra dev pytest); \
87
91
  done
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: by-framework
3
- Version: 0.2.2.dev1
3
+ Version: 0.2.2.dev2
4
4
  Summary: 分布式 Agent 调度框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -640,7 +640,7 @@ pending/lag, failure details, routing decisions, derived alerts, and segmented
640
640
  queue/run/end-to-end task latency:
641
641
 
642
642
  ```bash
643
- uv run python -m by_framework.observability.dashboard --host 127.0.0.1 --port 8765
643
+ uv run --package by-framework-dashboard by-framework-dashboard --host 127.0.0.1 --port 8765
644
644
  ```
645
645
 
646
646
  Open `http://127.0.0.1:8765/`. For a local UI preview without Redis, open
@@ -656,8 +656,9 @@ Alert thresholds can be tuned with `--queue-backlog-threshold`,
656
656
  `--failed-execution-threshold`.
657
657
 
658
658
  The dashboard frontend is built with React/Vite under
659
- `src/by_framework/observability/frontend`; its production build is packaged in
660
- `src/by_framework/observability/static`.
659
+ `libs/by-framework-dashboard/frontend`; its production build is packaged in
660
+ `libs/by-framework-dashboard/src/by_framework_dashboard/static`. See
661
+ `libs/by-framework-dashboard/README.md` for dashboard-specific runbook details.
661
662
 
662
663
  ---
663
664
 
@@ -616,7 +616,7 @@ pending/lag, failure details, routing decisions, derived alerts, and segmented
616
616
  queue/run/end-to-end task latency:
617
617
 
618
618
  ```bash
619
- uv run python -m by_framework.observability.dashboard --host 127.0.0.1 --port 8765
619
+ uv run --package by-framework-dashboard by-framework-dashboard --host 127.0.0.1 --port 8765
620
620
  ```
621
621
 
622
622
  Open `http://127.0.0.1:8765/`. For a local UI preview without Redis, open
@@ -632,8 +632,9 @@ Alert thresholds can be tuned with `--queue-backlog-threshold`,
632
632
  `--failed-execution-threshold`.
633
633
 
634
634
  The dashboard frontend is built with React/Vite under
635
- `src/by_framework/observability/frontend`; its production build is packaged in
636
- `src/by_framework/observability/static`.
635
+ `libs/by-framework-dashboard/frontend`; its production build is packaged in
636
+ `libs/by-framework-dashboard/src/by_framework_dashboard/static`. See
637
+ `libs/by-framework-dashboard/README.md` for dashboard-specific runbook details.
637
638
 
638
639
  ---
639
640
 
@@ -613,7 +613,7 @@ setup_logging(level=logging.INFO, use_json=True) # JSON 格式便于日志聚
613
613
  启动内置仪表盘,用于查看 Worker 健康、Agent 健康、执行状态计数、最近执行、Redis Stream 队列深度、consumer group pending/lag、失败详情、路由决策、派生告警,以及排队/执行/端到端分段延迟:
614
614
 
615
615
  ```bash
616
- uv run python -m by_framework.observability.dashboard --host 127.0.0.1 --port 8765
616
+ uv run --package by-framework-dashboard by-framework-dashboard --host 127.0.0.1 --port 8765
617
617
  ```
618
618
 
619
619
  打开 `http://127.0.0.1:8765/`。如果本地没有 Redis,可打开
@@ -628,8 +628,9 @@ uv run python -m by_framework.observability.dashboard --host 127.0.0.1 --port 87
628
628
  `--failed-execution-threshold` 调整。
629
629
 
630
630
  仪表盘前端使用 React/Vite 构建,源码位于
631
- `src/by_framework/observability/frontend`,生产构建产物打包在
632
- `src/by_framework/observability/static`。
631
+ `libs/by-framework-dashboard/frontend`,生产构建产物打包在
632
+ `libs/by-framework-dashboard/src/by_framework_dashboard/static`。更多运行说明见
633
+ `libs/by-framework-dashboard/README.md`。
633
634
 
634
635
  ---
635
636