clawmetry 0.12.330__tar.gz → 0.12.332__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.
- {clawmetry-0.12.330 → clawmetry-0.12.332}/CHANGELOG.md +7 -0
- {clawmetry-0.12.330/clawmetry.egg-info → clawmetry-0.12.332}/PKG-INFO +1 -1
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/app.js +20 -2
- {clawmetry-0.12.330 → clawmetry-0.12.332/clawmetry.egg-info}/PKG-INFO +1 -1
- {clawmetry-0.12.330 → clawmetry-0.12.332}/dashboard.py +1 -1
- {clawmetry-0.12.330 → clawmetry-0.12.332}/ARCHITECTURE.md +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/CLAUDE.md +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/LICENSE +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/MANIFEST.in +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/README.md +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/__main__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/aider.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/base.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/claude_code.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/codex.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/cursor.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/goose.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/hermes.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/nanoclaw.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/nemo.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/openclaw.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/opencode.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/picoclaw.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/qwen_code.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/adapters/registry.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/alert_evaluator.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/approvals.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/blueprints/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/cli.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/config.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/connector_health.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/dives_prompt.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/dives_sql_safety.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/error_patterns.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/eval_regression_replay.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/eval_runner.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/eval_suite_runner.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/extensions.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/gateway_tap.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/insights.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/interceptor.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/latency_tracker.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/local_server.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/otel_exporter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/outcome_classifier.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/providers/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/providers/base.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/providers/local.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/providers/turso.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/providers_pricing.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/proxy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/py.typed +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/relay.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/resources/add-nemoclaw-clawmetry-preset.sh +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/risk.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/css/dashboard.css +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/img/logo.svg +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/alerts.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/auth-bootstrap.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/dives.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/gw-setup.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/i18n.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/js/nav-dropdown.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/_glossary.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/_meta.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ar.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/bn.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/de.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/el.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/en.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/es-419.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/es.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/fa.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/fil.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/fr.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/gu.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/he.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/hi.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/id.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/it.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ja.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/kn.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ko.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ml.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/mr.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/nl.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/pa.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/pl.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/pt-BR.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/pt-PT.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ru.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/sv.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ta.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/te.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/th.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/tr.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/uk.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/ur.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/vi.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/zh-CN.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/locales/zh-TW.json +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/v2/dist/assets/index-BP9nlZ3e.js +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/v2/dist/assets/index-NbINX9rU.css +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/v2/dist/index.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/sync.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/telemetry.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/README.md +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/partials/banners.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/partials/budget-modal.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/partials/cloud-modal.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/partials/overlays.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/partials/paywall_modal.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/alerts.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/approvals.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/brain.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/clusters.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/context-economics.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/context.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/crons.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/dives.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/flow.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/history.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/logs.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/memory.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/models.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/nemoclaw.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/notifications.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/overview.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/policy.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/security.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/selfevolve.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/skills.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/subagents.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/tool-catalog.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/tracing.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/transcripts.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/turn-anatomy.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/usage.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/templates/tabs/version-impact.html +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/tests/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/tests/e2e/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/tests/e2e/test_cloud_sync_resilience.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/tests/integration/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/tests/integration/test_fast_paths_cross_process.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/token_confidence.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/track.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/v2/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/v2/routes.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry.egg-info/SOURCES.txt +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry.egg-info/dependency_links.txt +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry.egg-info/entry_points.txt +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry.egg-info/requires.txt +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry.egg-info/top_level.txt +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/gateway.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/hardware.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/logs.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/openapi.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/pricing.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/streams.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/helpers/system.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/_dedupe.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/advisor.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/agents.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/alerts.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/autonomy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/bootstrap.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/brain.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/channels.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/components.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/context_economics.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/crons.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/dives.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/evals.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/fleet_history.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/health.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/heartbeat.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/infra.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/insights.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/local_query.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/meta.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/nemoclaw.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/overview.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/plugins.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/policy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/reasoning.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/review.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/scheduler.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/selfconfig.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/selfevolve.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/sessions.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/skills.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/tool_catalog.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/tracing.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/turn_anatomy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/update_check.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/usage.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/routes/workspaces.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/setup.cfg +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/setup.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/__init__.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/_moat_perf_fixture.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/conftest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/eval_ci_mock_agent.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_adapter_claude_code.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_adapter_hermes.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_adapters.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_adaptive_heartbeat.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_advisor_auth_resolution.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_aesgcm_swallow_fix.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_aider_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_alert_evaluator_unit.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_alert_rules_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_alerts_evaluator_duckdb.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_anon_auth_fail_ping.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_api.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_appjs_units.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_approvals_duckdb_watcher.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_approvals_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_auth_detected_token.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_auto_update.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_automation_analysis_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_autonomy_v3_shape.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_backfill_family_cost.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_bootstrap_capture.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_cache_push.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_cache_push_channel_events.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_history_v3_event_detail.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_llm_call_timeline.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_local_fastpath.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_no_log_keyword_noise.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_brain_sse_reconnect.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_budget_cap.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cache_trends.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_bluebubbles_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_config_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_event_chokepoint.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_signal_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_telegram_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_tui_duckdb_fastpath.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channel_whatsapp_duckdb_fastpath.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_channels_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_circular_import.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_class_bug_parent_sid_drain.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_claude_code_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_claude_sessions_privacy_boundary.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_claudecode.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cli.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cli_banner.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_codex_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_component_gateway_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_component_tool_model_completed.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_component_tool_timeout.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_connector_health.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_context_anatomy_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_context_window_model_aware.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cost_optimizer_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cron_health.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cron_runs_duckdb_ingest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cron_runs_events_only.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_crons_cache_push.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_crons_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_crons_runs_endpoint.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_cursor_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_daemon_error_event_pipeline.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_daemon_health_endpoint.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_dashboard_perf_hotfix.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_decoding_config_extract.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_delegation_tree_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_dives_prompt.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_dives_sql_safety.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_duckdb_coverage_batch_2026_05_13.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_duckdb_coverage_phase2_2026_05_13.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_duckdb_coverage_phase3_2026_05_13.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_duckdb_coverage_phase4_channels_2026_05_13.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_duckdb_coverage_phase5_channels_2026_05_13.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_duckdb_fastpath_v3_invariants.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_browserstack.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_cross_repo_handoff.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_duckdb_relay.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_nightly_workflow.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_oss_all_tabs.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_oss_golden_path.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_real_openclaw_pipeline.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_e2e_telegram_brain_ingest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_error_patterns.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_eval_regression_replay.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_eval_runner.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_eval_suite_runner.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_evaluate_alerts_integration.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_event_id_unification_and_dedup.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_event_metrics_extraction.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_events_only_computation.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_fallbacks_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_family_runtime_ingest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_first_heartbeat_onboarding.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_flow_events_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_flow_runs_endpoint.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_flow_sse_reconnect.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_forward_progress.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_health.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_health_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_metric_history.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_tap.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_tap_opt_in_banner.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_token_fallback.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_gateway_ws_handshake_client_id.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_goose_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_hallucination_risk.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_health_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_heartbeat_agent_install_piggyback.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_heartbeat_dispatch.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_heartbeat_envelope.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_heartbeat_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_heartbeat_relay_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_i18n_catalog.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_insights.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_install_script_linux_restart.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_install_script_no_duplicate_daemon.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_interceptor.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_issue_1127_ux_dead_ends.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_latency_tracker.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_max_bytes_auto_vacuum.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_query_api.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_server_proxy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store_concurrent_flush_1590.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store_default_on.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store_missing_writers.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store_multi_agent.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store_rename.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_local_store_sync_integration.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_log_sse_reconnect.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_loop_signals_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_memory_cache_push.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_memory_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_memory_rag.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_bug_class_v3_event_shape_gate.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_cloud_robustness.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_cloud_roundtrip_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_cloud_sync_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_component_tool_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_cross_repo_version_skew.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_daemon_crash_recovery.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_e2e_regression_1129.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_event_shape_manifest_guard.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_live_openclaw_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_perf_benchmark.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_real_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_send_message_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_moat_tier1_daemon_proxy_sweep.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_model_transitions_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_multi_workspace_discovery.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_nanoclaw_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_nemo_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_nemo_adapter_pro_gate.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_nemoclaw_governance.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_no_agent_detected_state.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_no_direct_get_store_in_routes.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_oauth_detection.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_openclaw_claude_session_ingest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_openclaw_sessions_followup.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_opencode_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_oss_routes_source_canary.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_outcome_classifier.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_overview_autonomy_score.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_overview_heartbeat.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_overview_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_pending_query_dispatch.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_per_agent_budget.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_phase_2_to_5_live_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_picoclaw_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_plugins_invocations_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_proxy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_proxy_budget_abort.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_query_sessions_message_count.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_qwen_code_adapter.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_rate_limits_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_read_cloud_token_fallback.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_real_openclaw_binary_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_reasoning_v3_shape.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_relay.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_reliability.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_review_queue.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_run_daemon_uniqueness.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_runtime_detection_snapshot.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_schema_migration_failure_integrity.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_selfconfig_session_attribution.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_session_export.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_session_export_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_session_tools_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sessions_by_type_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sessions_clusters_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sessions_local_fastpath.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sessions_retention_cap.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sigterm_ring_flush.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_skills_fidelity_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_skills_fidelity_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_skills_multi_dir_discovery.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_spans_e2e.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_spans_ingest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_subagent_attribution_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_subagents_events_only.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_subagents_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_subscribe_queue_bounded.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sync_daemon_crash_recovery.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sync_main_block_at_eof.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sync_progress_sticky.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sync_reliability.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sync_skip_sidecar_jsonls.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_sync_trial_gating.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_system_snapshot_dlq.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_task_runs_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_telegram_gatewaylog_parser.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_telegram_ingest.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_telemetry.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_tier1_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_tier_pro_paywall_no_flash.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_token_attribution_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_token_confidence.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_token_spike_rules.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_token_velocity_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_tool_alternatives.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_tool_modal_fastpath_2026_05_13.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_tracing_accuracy.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_track.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_transcript_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_transcript_openclaw_shapes.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_transcripts_list_detail_count_parity.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_update_banner_live_version.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_uptime_portable.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_usage_cache_trends_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_usage_forecast_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_usage_local_store.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_usage_per_session.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_v3_schema_parser.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_version_impact.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_version_impact_local_store_v3.py +0 -0
- {clawmetry-0.12.330 → clawmetry-0.12.332}/tests/test_workspace_switcher_copy.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
### Release: runtime switcher scopes Tracing + clearer "N sessions" labels (2026-05-27)
|
|
4
|
+
- The global runtime switcher now also filters the **Tracing** tab (event-derived traces set `trace_id = session_id`, whose prefix is the runtime). Brain + Transcripts + Tracing now all de-merge by runtime. (#2167)
|
|
5
|
+
- Switcher option labels now read **"Claude Code · 22 sessions"** / **"OpenClaw · 1 session"** / **"All runtimes · 23 sessions"** instead of a bare `(22)`, which had read as "22 Claude Code runtimes" (there is one runtime running many sessions). (#2167)
|
|
6
|
+
|
|
7
|
+
### Release: runtime switcher now scopes the Brain activity stream (2026-05-27)
|
|
8
|
+
- The global runtime switcher (header dropdown) now filters the Brain "Unified Activity Stream" too, not just Transcripts. The Brain feed merged every runtime (OpenClaw + Claude Code + Codex + …) with no separation, which is the spot the merge most confused debugging. `renderBrainStream` honours `cm-runtime-filter` alongside the existing source/type/channel filters (each event's `sessionId` prefix is the runtime discriminator). Picking a runtime scopes the stream in place. Transcripts + Brain now both filter; Tracing/Cost/Overview still merge (follow-ups). (#2160)
|
|
9
|
+
|
|
3
10
|
### Release: per-MCP-server rollup + global runtime switcher (2026-05-27)
|
|
4
11
|
- **Per-MCP-server cost & latency rollup (#2156, closes #2007):** new `GET /api/mcp-servers` + a "MCP servers" card on the Tool Catalog tab that groups the agent's MCP tool calls by server (the `mcp__<server>__<tool>` prefix) so you can see which MCP server is hot, slow, or error-prone: call volume, p50/p95 latency, error rate, the tools each server exposes, and the model spend of the turns that called it. Reuses the tool catalog's `tool_call`→`tool_result` join; latency/volume/error-rate are exact, cost is best-effort (the calling turn's cache-aware spend, labelled as such), and transport (stdio/sse/http) + cold-start are omitted rather than faked (they need new ingest). A bounded `mcpServers` snapshot slice ships the same rollup to the cloud. Verified live: `chrome-devtools-mcp` · 26 calls · 229ms/2.9s p50/p95 · 23% errors · $30.69 turn spend.
|
|
5
12
|
- **Global runtime switcher (#2157):** the per-runtime filter that previously only rendered on the Transcripts tab is now an always-visible header control (`Runtime ▾` → All / OpenClaw / Claude Code / Codex / NanoClaw / …), shown only when more than one runtime is detected so single-runtime installs are unchanged. The runtime is derived from the session-id prefix; the selection persists and reloads the current tab so runtime-aware views re-filter. Makes the multi-runtime de-merge discoverable instead of buried on one tab.
|
|
@@ -3859,6 +3859,13 @@ function renderBrainStream(events) {
|
|
|
3859
3859
|
if (_brainChannelFilter !== 'all') {
|
|
3860
3860
|
filtered = filtered.filter(function(ev) { return (ev.channel || '') === _brainChannelFilter; });
|
|
3861
3861
|
}
|
|
3862
|
+
// Global runtime switcher (header): scope the activity stream to one runtime
|
|
3863
|
+
// so Brain stops mixing OpenClaw with Claude Code / Codex / etc. Each event
|
|
3864
|
+
// carries `sessionId`, whose prefix is the runtime discriminator.
|
|
3865
|
+
var _brainRt = (typeof _cmRuntimeFilter === 'function') ? _cmRuntimeFilter() : 'all';
|
|
3866
|
+
if (_brainRt && _brainRt !== 'all') {
|
|
3867
|
+
filtered = filtered.filter(function(ev) { return _cmRuntimeOf(ev) === _brainRt; });
|
|
3868
|
+
}
|
|
3862
3869
|
// Plumbing toggle: hide QUEUE-OPERATION rows unless user opted in.
|
|
3863
3870
|
// Updates the "Show plumbing (N hidden)" label as a side-effect so the
|
|
3864
3871
|
// count stays in sync with whatever the current filter set surfaces.
|
|
@@ -6775,9 +6782,13 @@ function _cmPopulateGlobalRuntime(counts) {
|
|
|
6775
6782
|
var active = _cmRuntimeFilter();
|
|
6776
6783
|
if (active !== 'all' && !counts[active]) active = 'all';
|
|
6777
6784
|
var total = order.reduce(function(a, k) { return a + counts[k]; }, 0);
|
|
6778
|
-
|
|
6785
|
+
// The count is the number of SESSIONS for that runtime — spell it out so the
|
|
6786
|
+
// chip doesn't read as "22 Claude Code runtimes" (there's one runtime, many
|
|
6787
|
+
// sessions). Singular/plural for the "1 session" case.
|
|
6788
|
+
function _sessLabel(n) { return n + (n === 1 ? ' session' : ' sessions'); }
|
|
6789
|
+
var html = '<option value="all">All runtimes · ' + _sessLabel(total) + '</option>';
|
|
6779
6790
|
order.forEach(function(k) {
|
|
6780
|
-
html += '<option value="' + k + '">' + escHtml(_CM_RT_LABEL[k] || k) + '
|
|
6791
|
+
html += '<option value="' + k + '">' + escHtml(_CM_RT_LABEL[k] || k) + ' · ' + _sessLabel(counts[k]) + '</option>';
|
|
6781
6792
|
});
|
|
6782
6793
|
sel.innerHTML = html;
|
|
6783
6794
|
sel.value = active;
|
|
@@ -8832,6 +8843,13 @@ function _renderTraceRows() {
|
|
|
8832
8843
|
var box = document.getElementById('trace-rows');
|
|
8833
8844
|
if (!box) return;
|
|
8834
8845
|
var traces = (window._allTraces || []).slice();
|
|
8846
|
+
// Global runtime switcher (header): scope traces to one runtime. Each
|
|
8847
|
+
// event-derived trace's `trace_id` IS its session_id, whose prefix is the
|
|
8848
|
+
// runtime discriminator (OTLP traces with hex ids fall through to OpenClaw).
|
|
8849
|
+
var _trRt = (typeof _cmRuntimeFilter === 'function') ? _cmRuntimeFilter() : 'all';
|
|
8850
|
+
if (_trRt && _trRt !== 'all') {
|
|
8851
|
+
traces = traces.filter(function(t) { return _cmRuntimeOf({ id: t.trace_id }) === _trRt; });
|
|
8852
|
+
}
|
|
8835
8853
|
var f = window._traceListFilter, q = window._traceListSearch;
|
|
8836
8854
|
if (q) traces = traces.filter(function(t) {
|
|
8837
8855
|
return (((t.trace_id || '') + ' ' + (t.model || '')).toLowerCase().indexOf(q) !== -1);
|
|
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
|
|
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
|
|
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
|
{clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/resources/add-nemoclaw-clawmetry-preset.sh
RENAMED
|
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
|
|
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
|
|
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
|
{clawmetry-0.12.330 → clawmetry-0.12.332}/clawmetry/static/v2/dist/assets/index-NbINX9rU.css
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|