clawmetry 0.12.413__tar.gz → 0.12.415__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.413/clawmetry.egg-info → clawmetry-0.12.415}/PKG-INFO +1 -1
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/sync.py +85 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415/clawmetry.egg-info}/PKG-INFO +1 -1
- {clawmetry-0.12.413 → clawmetry-0.12.415}/dashboard.py +1 -1
- {clawmetry-0.12.413 → clawmetry-0.12.415}/ARCHITECTURE.md +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/CHANGELOG.md +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/CLAUDE.md +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/LICENSE +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/MANIFEST.in +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/README.md +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/__main__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/_gate.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/adapters/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/adapters/base.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/adapters/nemo.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/adapters/openclaw.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/adapters/registry.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/alert_evaluator.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/approvals.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/audit.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/blueprints/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/cli.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/config.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/connector_health.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/dives_prompt.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/dives_sql_safety.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/entitlements.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/error_patterns.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/error_signal.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/eval_regression_replay.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/eval_runner.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/eval_suite_runner.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/extensions.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/gateway_tap.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/insights.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/interceptor.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/latency_tracker.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/license.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/local_server.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/otel_exporter.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/otel_push.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/outcome_classifier.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/providers/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/providers/base.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/providers/local.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/providers/turso.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/providers_pricing.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/proxy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/py.typed +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/redaction.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/relay.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/resources/add-nemoclaw-clawmetry-preset.sh +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/risk.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/siem.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/css/dashboard.css +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/img/logo.svg +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/alerts.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/app.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/auth-bootstrap.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/dives.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/gw-setup.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/i18n.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/js/nav-dropdown.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/_glossary.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/_meta.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ar.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/bn.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/de.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/el.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/en.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/es-419.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/es.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/fa.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/fil.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/fr.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/gu.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/he.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/hi.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/id.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/it.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ja.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/kn.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ko.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ml.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/mr.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/nl.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/pa.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/pl.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/pt-BR.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/pt-PT.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ru.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/sv.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ta.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/te.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/th.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/tr.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/uk.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/ur.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/vi.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/zh-CN.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/locales/zh-TW.json +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/v2/dist/assets/index-Dtt_uBk_.js +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/v2/dist/assets/index-NbINX9rU.css +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/static/v2/dist/index.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/telemetry.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/README.md +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/partials/banners.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/partials/budget-modal.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/partials/cloud-modal.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/partials/overlays.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/partials/paywall_modal.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/alerts.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/approvals.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/brain.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/clusters.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/context-economics.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/context.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/crons.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/dives.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/flow.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/history.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/logs.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/memory.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/models.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/nemoclaw.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/notifications.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/overview.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/policy.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/security.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/selfevolve.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/skills.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/subagents.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/swimlane.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/tool-catalog.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/tracing.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/transcripts.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/turn-anatomy.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/usage.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/templates/tabs/version-impact.html +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/tests/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/tests/e2e/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/tests/e2e/test_cloud_sync_resilience.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/tests/integration/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/tests/integration/test_fast_paths_cross_process.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/token_confidence.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/track.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/v2/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/v2/routes.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry/waste_flags.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry.egg-info/SOURCES.txt +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry.egg-info/dependency_links.txt +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry.egg-info/entry_points.txt +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry.egg-info/requires.txt +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/clawmetry.egg-info/top_level.txt +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/gateway.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/hardware.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/logs.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/openapi.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/pricing.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/streams.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/helpers/system.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/_dedupe.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/advisor.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/agents.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/alerts.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/assets.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/audit.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/autonomy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/bootstrap.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/brain.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/channels.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/components.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/context_economics.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/crons.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/dives.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/entitlement.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/evals.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/fleet_history.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/health.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/heartbeat.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/hitl.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/infra.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/insights.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/local_query.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/meta.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/nemoclaw.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/otel_export.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/overview.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/plugins.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/policy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/reasoning.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/review.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/runtime_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/scheduler.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/selfconfig.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/selfevolve.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/sessions.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/skills.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/sla.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/tool_catalog.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/tracing.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/turn_anatomy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/update_check.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/usage.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/routes/workspaces.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/setup.cfg +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/setup.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/__init__.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/_moat_perf_fixture.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/conftest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/eval_ci_mock_agent.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_adapter_gating.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_adapter_registry_override.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_adapters.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_adaptive_heartbeat.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_advertised_runtimes_match_catalogue.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_advisor_auth_resolution.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_aesgcm_swallow_fix.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_alert_evaluator_unit.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_alert_rules_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_alerts_evaluator_duckdb.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_anon_auth_fail_ping.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_api.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_appjs_units.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_approvals_duckdb_watcher.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_approvals_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_audit.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_auth_detected_token.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_auto_update.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_automation_analysis_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_autonomy_v3_shape.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_backfill_family_cost.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_blueprint_uniqueness.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_bootstrap_capture.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_cache_push.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_cache_push_channel_events.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_clusters_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_history_v3_event_detail.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_llm_call_timeline.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_local_fastpath.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_no_log_keyword_noise.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_brain_sse_reconnect.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_budget_cap.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cache_trends.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_bluebubbles_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_config_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_event_chokepoint.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_signal_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_telegram_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_tui_duckdb_fastpath.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channel_whatsapp_duckdb_fastpath.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_channels_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_circular_import.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_class_bug_parent_sid_drain.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_claude_sessions_privacy_boundary.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_claudecode.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_claudecode_loads_plugins.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cli.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cli_banner.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_component_gateway_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_component_tool_model_completed.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_component_tool_timeout.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_connector_health.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_context_anatomy_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_context_window_model_aware.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cost_optimizer_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cron_health.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cron_runs_duckdb_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_cron_runs_events_only.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_crons_cache_push.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_crons_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_crons_runs_endpoint.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_daemon_error_event_pipeline.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_daemon_health_endpoint.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_dashboard_perf_hotfix.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_decoding_config_extract.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_delegation_tree_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_dives_prompt.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_dives_sql_safety.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_coverage_batch_2026_05_13.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_coverage_phase2_2026_05_13.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_coverage_phase3_2026_05_13.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_coverage_phase4_channels_2026_05_13.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_coverage_phase5_channels_2026_05_13.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_fastpath_v3_invariants.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_duckdb_relay_integration.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_browserstack.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_cross_repo_handoff.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_nightly_workflow.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_oss_all_tabs.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_oss_golden_path.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_real_openclaw_pipeline.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_e2e_telegram_brain_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_entitlement_api.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_entitlements.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_entitlements_catalogue.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_error_patterns.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_error_triage.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_eval_regression_replay.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_eval_runner.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_eval_suite_runner.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_evaluate_alerts_integration.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_event_id_unification_and_dedup.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_event_metrics_extraction.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_events_only_computation.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_extensions.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_fallbacks_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_family_runtime_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_first_heartbeat_onboarding.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_flow_events_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_flow_runs_endpoint.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_flow_sse_reconnect.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_forward_progress.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_health.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_health_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_metric_history.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_tap.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_tap_opt_in_banner.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_token_fallback.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_gateway_ws_handshake_client_id.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_hallucination_risk.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_health_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_heartbeat_agent_install_piggyback.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_heartbeat_dispatch.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_heartbeat_envelope.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_heartbeat_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_heartbeat_loop_detector.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_heartbeat_relay_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_i18n_catalog.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_i18n_no_raw_codes.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_insights.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_install_script_linux_restart.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_install_script_no_duplicate_daemon.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_integrity_hash_chain.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_interceptor.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_issue_1127_ux_dead_ends.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_latency_tracker.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_license.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_license_api.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_max_bytes_auto_vacuum.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_query_api.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_query_dispatch_edge_cases.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_server_proxy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store_concurrent_flush_1590.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store_default_on.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store_missing_writers.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store_multi_agent.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store_rename.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_local_store_sync_integration.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_log_sse_reconnect.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_loop_signals_integration.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_memory_cache_push.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_memory_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_memory_rag.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_bug_class_v3_event_shape_gate.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_cloud_robustness.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_cloud_roundtrip_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_cloud_sync_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_component_tool_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_cross_repo_version_skew.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_daemon_crash_recovery.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_event_shape_manifest_guard.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_live_openclaw_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_perf_benchmark.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_real_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_regression_1129.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_send_message_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_moat_tier1_daemon_proxy_sweep.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_model_transitions_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_multi_workspace_discovery.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_nemo_adapter.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_nemo_adapter_pro_gate.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_nemoclaw_events_metrics.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_nemoclaw_governance.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_nemoclaw_runtime_adapter.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_no_agent_detected_state.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_no_direct_get_store_in_routes.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_oauth_detection.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_openclaw_claude_session_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_openclaw_detection_real.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_openclaw_list_events.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_openclaw_sessions_followup.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_oss_routes_source_canary.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_oss_stubs_after_pro_move.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_otel_export.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_otlp_metrics_edge_cases.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_outcome_classifier.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_overview_autonomy_score.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_overview_heartbeat.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_overview_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_pending_query_dispatch.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_per_agent_budget.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_phase2_stubs.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_phase3_stubs.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_phase4_adapter_move.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_phase_2_to_5_live_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_plugins_invocations_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_providers_pricing.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_proxy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_proxy_budget_abort.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_proxy_loads_plugins.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_query_sessions_message_count.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_rate_limits_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_read_cloud_token_fallback.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_real_openclaw_binary_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_reasoning_v3_shape.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_redaction.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_relay.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_reliability.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_retention_prune.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_review_queue.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_route_gates.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_routes_runtimes.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_run_compare.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_run_daemon_uniqueness.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_runtime_detection_snapshot.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_runtime_filter_no_leak.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_runtime_switcher_gating.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_schema_migration_failure_integrity.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_security_threat_heuristics.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_selfconfig_session_attribution.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_session_cost_intel.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_session_export.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_session_export_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_session_insight.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_session_tools_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sessions_by_type_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sessions_clusters_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sessions_local_fastpath.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sessions_retention_cap.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sigterm_ring_flush.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_skills_fidelity_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_skills_fidelity_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_skills_multi_dir_discovery.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_spans_e2e.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_spans_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_spans_otlp_edge_cases.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_status_live.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_subagent_attribution_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_subagents_events_only.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_subagents_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_subscribe_queue_bounded.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_cloud_plan_cache.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_daemon_crash_recovery.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_loads_plugins.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_main_block_at_eof.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_progress_sticky.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_reliability.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_skip_sidecar_jsonls.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_sync_trial_gating.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_system_snapshot_dlq.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_task_runs_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_telegram_gatewaylog_parser.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_telegram_ingest.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_telemetry.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_tier1_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_tier_pro_paywall_no_flash.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_token_attribution_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_token_confidence.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_token_spike_rules.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_token_velocity_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_tool_alternatives.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_tool_catalog_provenance_and_calls.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_tool_modal_fastpath_2026_05_13.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_tracing_accuracy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_track.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_track_source.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_transcript_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_transcript_openclaw_shapes.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_transcripts_list_detail_count_parity.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_trial_copy_consistency.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_update_banner_live_version.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_uptime_portable.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_usage_cache_trends_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_usage_forecast_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_usage_local_store.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_usage_per_session.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_v3_schema_parser.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_verify_integrity_cli_proxy.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_version_impact.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_version_impact_local_store_v3.py +0 -0
- {clawmetry-0.12.413 → clawmetry-0.12.415}/tests/test_workspace_switcher_copy.py +0 -0
|
@@ -12341,6 +12341,31 @@ def run_daemon() -> None:
|
|
|
12341
12341
|
config["node_id"] = socket.gethostname() or platform.node() or "unknown"
|
|
12342
12342
|
save_config(config)
|
|
12343
12343
|
log.info(f"Auto-set node_id: → {config['node_id']!r}")
|
|
12344
|
+
# Auto-provision clawmetry-pro for an ENTITLED account (Trial/Pro/Enterprise)
|
|
12345
|
+
# on every daemon start — so an already-connected node picks up the paid
|
|
12346
|
+
# runtime adapters (Claude Code, Codex, Cursor, …) when its plan changes
|
|
12347
|
+
# (e.g. a trial starts) WITHOUT re-running `clawmetry connect`. Previously
|
|
12348
|
+
# provisioning ran only at connect time, so a node that linked while free
|
|
12349
|
+
# never gained the adapters after upgrading. Idempotent (skips when the
|
|
12350
|
+
# wheel is already current) + never-raises + installs nothing for free
|
|
12351
|
+
# accounts. Adapters import lazily per sync cycle, so a fresh install takes
|
|
12352
|
+
# effect this run; re-run plugin discovery so pro entry-points register too.
|
|
12353
|
+
try:
|
|
12354
|
+
_ak = config.get("api_key", "")
|
|
12355
|
+
if _ak:
|
|
12356
|
+
from clawmetry.license import auto_provision_pro as _auto_pro
|
|
12357
|
+
_pro_ok, _pro_msg = _auto_pro(_ak, config.get("node_id"))
|
|
12358
|
+
if _pro_ok:
|
|
12359
|
+
log.info("clawmetry-pro present (entitled account) — all runtimes enabled")
|
|
12360
|
+
try:
|
|
12361
|
+
from clawmetry.extensions import load_plugins as _ext_reload
|
|
12362
|
+
_ext_reload()
|
|
12363
|
+
except Exception:
|
|
12364
|
+
pass
|
|
12365
|
+
elif _pro_msg:
|
|
12366
|
+
log.info("clawmetry-pro: %s", _pro_msg)
|
|
12367
|
+
except Exception as _pe:
|
|
12368
|
+
log.debug("pro auto-provision (daemon) skipped: %s", _pe)
|
|
12344
12369
|
paths = detect_paths()
|
|
12345
12370
|
enc = "🔒 E2E encrypted" if config.get("encryption_key") else "⚠️ unencrypted"
|
|
12346
12371
|
try:
|
|
@@ -12691,6 +12716,66 @@ def run_daemon() -> None:
|
|
|
12691
12716
|
except Exception as _e:
|
|
12692
12717
|
log.warning(f"review sampler failed to start: {_e}")
|
|
12693
12718
|
|
|
12719
|
+
# ── Pro-entitlement watcher ──────────────────────────────────────────
|
|
12720
|
+
# A user can start a trial (or upgrade to Starter/Pro) AT ANY TIME, often
|
|
12721
|
+
# while the daemon is already running. Provisioning at connect + at daemon
|
|
12722
|
+
# start (above) covers link-time and restarts; this thread closes the gap
|
|
12723
|
+
# in between — it re-checks entitlement every ~30 min and installs
|
|
12724
|
+
# clawmetry-pro the moment the account becomes entitled, so the paid
|
|
12725
|
+
# runtime adapters (Claude Code, Codex, Cursor, …) start being ingested
|
|
12726
|
+
# within the same session, no restart needed. Idempotent + never-raises;
|
|
12727
|
+
# a free account installs nothing. Adapters import lazily per sync cycle,
|
|
12728
|
+
# so a mid-run install is picked up on the next cycle.
|
|
12729
|
+
try:
|
|
12730
|
+
_pro_stop = threading.Event()
|
|
12731
|
+
|
|
12732
|
+
def _pro_entitlement_worker():
|
|
12733
|
+
time.sleep(120) # let startup provisioning + first sync settle
|
|
12734
|
+
from clawmetry.license import (
|
|
12735
|
+
auto_provision_pro as _wp,
|
|
12736
|
+
_pro_installed_version as _pv,
|
|
12737
|
+
)
|
|
12738
|
+
while not _pro_stop.is_set():
|
|
12739
|
+
try:
|
|
12740
|
+
_ak = (load_config() or {}).get("api_key", "")
|
|
12741
|
+
if _ak:
|
|
12742
|
+
_was = bool(_pv())
|
|
12743
|
+
_ok, _msg = _wp(_ak, config.get("node_id"))
|
|
12744
|
+
if _ok and not _was:
|
|
12745
|
+
log.info("clawmetry-pro just installed (account became "
|
|
12746
|
+
"entitled) — paid runtimes now enabled")
|
|
12747
|
+
try:
|
|
12748
|
+
from clawmetry.extensions import load_plugins as _lp
|
|
12749
|
+
_lp()
|
|
12750
|
+
except Exception:
|
|
12751
|
+
pass
|
|
12752
|
+
except Exception as _pwe:
|
|
12753
|
+
log.debug("pro entitlement tick skipped: %s", _pwe)
|
|
12754
|
+
_pro_stop.wait(timeout=1800) # ~30 min
|
|
12755
|
+
|
|
12756
|
+
t_pro = threading.Thread(
|
|
12757
|
+
target=_pro_entitlement_worker, daemon=True, name="pro-entitlement"
|
|
12758
|
+
)
|
|
12759
|
+
t_pro.start()
|
|
12760
|
+
log.info("pro-entitlement watcher thread started")
|
|
12761
|
+
except Exception as _e:
|
|
12762
|
+
log.warning(f"pro-entitlement watcher failed to start: {_e}")
|
|
12763
|
+
|
|
12764
|
+
# ── Opt-in auto-update worker ────────────────────────────────────────
|
|
12765
|
+
# routes/update_check.py runs a background checker that self-updates ONLY
|
|
12766
|
+
# when the `auto_update` config is on (default OFF → no behaviour change
|
|
12767
|
+
# for anyone who hasn't opted in), via the same vetted pip+restart path as
|
|
12768
|
+
# the manual "Update now". It was started only in the DASHBOARD process —
|
|
12769
|
+
# but a headless / cloud-synced node runs only this daemon, so auto-update
|
|
12770
|
+
# never fired where it's most needed. Start it here too (idempotent: the
|
|
12771
|
+
# module guards against a double-started thread). Never blocks/raises.
|
|
12772
|
+
try:
|
|
12773
|
+
from routes.update_check import start_update_check_thread as _start_uc
|
|
12774
|
+
_start_uc()
|
|
12775
|
+
log.info("update-check thread started (auto-update honours the opt-in flag)")
|
|
12776
|
+
except Exception as _e:
|
|
12777
|
+
log.warning(f"update-check thread failed to start: {_e}")
|
|
12778
|
+
|
|
12694
12779
|
# ── Per-tier event retention prune (#2262 catalogue) ─────────────────
|
|
12695
12780
|
# Hourly tick that reads ``Entitlement.event_retention_days()`` and
|
|
12696
12781
|
# calls ``LocalStore.prune_events_by_age`` so the events table never
|
|
@@ -160,7 +160,7 @@ except ImportError:
|
|
|
160
160
|
metrics_service_pb2 = None
|
|
161
161
|
trace_service_pb2 = None
|
|
162
162
|
|
|
163
|
-
__version__ = "0.12.
|
|
163
|
+
__version__ = "0.12.415"
|
|
164
164
|
|
|
165
165
|
# Extensions (Phase 2): import the plugin host now, but defer the actual
|
|
166
166
|
# load_plugins() call until after the Flask app is created below so we can
|
|
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.413 → clawmetry-0.12.415}/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
|
|
File without changes
|
|
File without changes
|
{clawmetry-0.12.413 → clawmetry-0.12.415}/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
|