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.
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.gitignore +2 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CLAUDE.md +5 -3
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/Makefile +4 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/PKG-INFO +5 -4
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/README.md +4 -3
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/README_zh.md +4 -3
- by_framework-0.2.2.dev2/docs/by-framework-trace-change-usage.html +627 -0
- by_framework-0.2.2.dev2/docs/by-framework-trace-complete-guide.html +1280 -0
- by_framework-0.2.2.dev2/docs/plans/2026-06-10-trace-metrics-correlation.md +77 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/worker.py +4 -2
- by_framework-0.2.2.dev2/libs/by-framework-dashboard/README.md +151 -0
- by_framework-0.2.2.dev2/libs/by-framework-dashboard/pyproject.toml +37 -0
- by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard/__init__.py +5 -0
- by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard/adapters.py +42 -0
- {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
- by_framework-0.2.2.dev2/libs/by-framework-dashboard/src/by_framework_dashboard/static/__init__.py +1 -0
- {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
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/pyproject.toml +1 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/adapter.py +213 -2
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/tools.py +37 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/tests/test_adapter.py +103 -7
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/tests/test_tools.py +51 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/pyproject.toml +1 -1
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/pyproject.toml +1 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/tests/test_phoenix_plugin.py +1 -1
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/pyproject.toml +28 -0
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/__init__.py +7 -0
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/client.py +204 -0
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/merger.py +187 -0
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/models.py +21 -0
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/src/by_framework_trace_query/redis_source.py +130 -0
- by_framework-0.2.2.dev2/libs/by-framework-trace-query/tests/test_trace_query_sdk.py +893 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/pyproject.toml +7 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/scripts/python_quality.sh +2 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/client/client.py +2 -6
- 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
- by_framework-0.2.2.dev2/src/by_framework/metrics/read_client.py +257 -0
- {by_framework-0.2.2.dev1/src/by_framework/observability → by_framework-0.2.2.dev2/src/by_framework/metrics}/snapshot.py +3 -3
- by_framework-0.2.2.dev2/src/by_framework/trace/__init__.py +55 -0
- {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
- {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
- by_framework-0.2.2.dev2/src/by_framework/trace/trace_schema.py +329 -0
- by_framework-0.2.2.dev2/src/by_framework/trace/trace_writer.py +157 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/_control_handling.py +1 -1
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/context.py +208 -129
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/runner.py +29 -9
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/worker.py +116 -9
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/client/test_client.py +1 -1
- {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/metrics}/test_metrics.py +3 -3
- by_framework-0.2.2.dev2/tests/metrics/test_read_client.py +101 -0
- {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/metrics}/test_snapshot.py +2 -2
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_langfuse_plugin.py +387 -42
- {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_external_trace.py +2 -2
- {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_otel_exporter.py +6 -4
- {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_span_recorder.py +15 -3
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_context.py +282 -30
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_gateway_worker.py +34 -6
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_runner.py +48 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/uv.lock +77 -5
- by_framework-0.2.2.dev1/src/by_framework/observability/__init__.py +0 -62
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/RELEASING.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/workflows/ci.yml +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/workflows/publish.yml +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.github/workflows/stale.yml +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/.pre-commit-config.yaml +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/AGENTS.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CHANGELOG.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CODE_OF_CONDUCT.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/CONTRIBUTING.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/LICENSE +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/SECURITY.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/assets/img/architecture_en.png +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/assets/img/architecture_zh.png +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/autoformat.sh +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/docs/README.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/docs/plans/2026-05-15-worker-task-state-stats.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/README.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/pyproject.toml +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/_utils.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/src/by_framework_adk/adapter.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-adk/tests/test_worker.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/README.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/pyproject.toml +0 -0
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-byclaw/tests/test_byclaw_history.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/README.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-history-postgres/pyproject.toml +0 -0
- {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
- {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
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/README.md +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/_utils.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/src/by_framework_langgraph/worker.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-langgraph/tests/test_utils.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/README.md +0 -0
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-langfuse/tests/test_langfuse_import.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/README.md +0 -0
- {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
- {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
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/libs/by-framework-trace-phoenix/tests/test_phoenix_import.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/pylintrc +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/__main__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/client/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/client/byai_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/config.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/constants.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/emitter.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/exceptions.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/logger.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/common/redis_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/base.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/common.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/execution.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/http.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/protocol.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/errors/registry.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/discovery_http_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/generate_message_id.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/util/http_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/_execution_tracking.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/_message_processing.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/app.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/byai_context.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/byai_worker.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/heartbeat.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/processor.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/sandbox/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/src/by_framework/worker/sandbox/hook_sandbox.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/client/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_config.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_exceptions.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_logger.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/common/test_redis_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/conftest.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_ask_user_flow.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_callback_flow.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_logger_integration.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/integration/test_scatter_gather.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_discovery.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_improvements.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_registry.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/plugin/test_plugin_system.py +0 -0
- {by_framework-0.2.2.dev1/tests/observability → by_framework-0.2.2.dev2/tests/trace}/test_logger_correlation.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_discovery_http_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_discovery_http_client_download.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_discovery_http_client_upload.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/util/test_http_client.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/__init__.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_app.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_byai_worker.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_control_handling.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_emitter.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_heartbeat.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_message_processing.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_processor.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_sandbox.py +0 -0
- {by_framework-0.2.2.dev1 → by_framework-0.2.2.dev2}/tests/worker/test_workspace.py +0 -0
|
@@ -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
|
-
- `
|
|
69
|
-
- `
|
|
70
|
-
- `
|
|
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.
|
|
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
|
|
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
|
-
`
|
|
660
|
-
`src/
|
|
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
|
|
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
|
-
`
|
|
636
|
-
`src/
|
|
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
|
|
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
|
-
`
|
|
632
|
-
`src/
|
|
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
|
|