detectkit 0.62.0__tar.gz → 0.62.1__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.
- {detectkit-0.62.0/detectkit.egg-info → detectkit-0.62.1}/PKG-INFO +3 -2
- {detectkit-0.62.0 → detectkit-0.62.1}/README.md +2 -1
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/__init__.py +1 -1
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/cli.md +7 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/overview.md +3 -2
- {detectkit-0.62.0 → detectkit-0.62.1/detectkit.egg-info}/PKG-INFO +3 -2
- {detectkit-0.62.0 → detectkit-0.62.1}/LICENSE +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/MANIFEST.in +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/base.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/branding.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/discord.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/email.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/factory.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/googlechat.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/mattermost.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/ntfy.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/slack.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/teams.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/telegram.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/channels/webhook.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_base.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_cooldown.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_decision.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_dispatch.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_recovery.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_replay.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/_types.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/alerting/orchestrator/orchestrator.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/_base.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/_types.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/autotuner.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/axis_spec.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/config_emitter.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/crossval.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/detector_select.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/distribution.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/grid_search.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/labels.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/result.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/runner.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/scoring.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/seasonality_search.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/settings.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/autotune/window_select.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/_output.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/CLAUDE.section.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/alerting.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/autotune.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/detectors.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/metrics.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/rules/project.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-autotune/SKILL.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-feedback/SKILL.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-new-metric/SKILL.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-setup-project/SKILL.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-tune/SKILL.md +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/autotune.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/clean.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/init.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/init_claude.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/mcp.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/osi.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/run.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/test_alert.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/tune.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/ui.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/commands/unlock.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/main.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/config/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/config/metric_config.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/config/metric_io.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/config/profile.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/config/project_config.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/config/validator.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/core/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/core/interval.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/core/models.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/_sql_manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/clickhouse_manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/duckdb_manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_alert_states.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_autotune_runs.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_base.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_datapoints.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_detections.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_maintenance.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_metrics.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_schema.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/_tasks.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/internal_tables/manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/mysql_manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/postgres_manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/database/tables.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/base.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/factory.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/seasonality.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/_windowed.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/autoreg.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/iqr.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/mad.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/manual_bounds.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/detectors/statistical/zscore.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/loaders/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/loaders/errors.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/loaders/metric_loader.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/loaders/query_template.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/mcp/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/mcp/context.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/mcp/errors.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/mcp/serialize.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/mcp/server.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/mcp/tools.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/error_dispatch.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/_alert_step.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/_base.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/_detect_step.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/_load_step.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/_types.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/orchestration/task_manager/manager.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/reporting/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/reporting/assets/report.js +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/reporting/builder.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/reporting/html_report.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/semantic/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/semantic/errors.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/semantic/exporter.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/semantic/importer.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/semantic/osi_model.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/semantic/query_gen.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/tuning/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/tuning/assets/tune.js +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/tuning/config_writer.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/tuning/html.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/tuning/payload.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/tuning/server.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/assets/ui.js +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/html.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/jobs.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/metric_files.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/overview.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/ui/server.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/utils/__init__.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/utils/datetime_utils.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/utils/env_interpolation.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/utils/json_utils.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit/utils/stats.py +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit.egg-info/SOURCES.txt +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit.egg-info/dependency_links.txt +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit.egg-info/entry_points.txt +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit.egg-info/requires.txt +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/detectkit.egg-info/top_level.txt +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/pyproject.toml +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/requirements.txt +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/setup.cfg +0 -0
- {detectkit-0.62.0 → detectkit-0.62.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: detectkit
|
|
3
|
-
Version: 0.62.
|
|
3
|
+
Version: 0.62.1
|
|
4
4
|
Summary: Metric monitoring with automatic anomaly detection
|
|
5
5
|
Author: detectkit team
|
|
6
6
|
License: MIT
|
|
@@ -110,7 +110,7 @@ Dynamic: license-file
|
|
|
110
110
|
- **Hybrid mode** — read metric SQL from a billed-per-query warehouse while all pipeline state lives in a cheap local database
|
|
111
111
|
- **Idempotent** — resume from interruptions, no duplicate processing
|
|
112
112
|
- **CLI** — `dtk init`, `dtk run --select`, `dtk unlock`, `dtk clean`, tag-based selectors
|
|
113
|
-
- **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules +
|
|
113
|
+
- **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + five skills) so an assistant can scaffold metrics, configure databases, and file feedback upstream
|
|
114
114
|
|
|
115
115
|
## Installation
|
|
116
116
|
|
|
@@ -122,6 +122,7 @@ With database drivers:
|
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
124
|
pip install detectkit[clickhouse] # ClickHouse
|
|
125
|
+
pip install detectkit[duckdb] # DuckDB - single file, no server
|
|
125
126
|
pip install detectkit[all-db] # All databases
|
|
126
127
|
```
|
|
127
128
|
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
- **Hybrid mode** — read metric SQL from a billed-per-query warehouse while all pipeline state lives in a cheap local database
|
|
29
29
|
- **Idempotent** — resume from interruptions, no duplicate processing
|
|
30
30
|
- **CLI** — `dtk init`, `dtk run --select`, `dtk unlock`, `dtk clean`, tag-based selectors
|
|
31
|
-
- **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules +
|
|
31
|
+
- **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + five skills) so an assistant can scaffold metrics, configure databases, and file feedback upstream
|
|
32
32
|
|
|
33
33
|
## Installation
|
|
34
34
|
|
|
@@ -40,6 +40,7 @@ With database drivers:
|
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
pip install detectkit[clickhouse] # ClickHouse
|
|
43
|
+
pip install detectkit[duckdb] # DuckDB - single file, no server
|
|
43
44
|
pip install detectkit[all-db] # All databases
|
|
44
45
|
```
|
|
45
46
|
|
|
@@ -4,7 +4,7 @@ detectk - Anomaly Detection for Time-Series Metrics
|
|
|
4
4
|
A Python library for data analysts and engineers to monitor metrics with automatic anomaly detection.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
__version__ = "0.62.
|
|
7
|
+
__version__ = "0.62.1"
|
|
8
8
|
|
|
9
9
|
from detectkit.core.interval import Interval
|
|
10
10
|
from detectkit.core.models import ColumnDefinition, TableModel
|
|
@@ -458,6 +458,13 @@ fail their step when `dtk run` / `dtk autotune` / `dtk clean` exits non-zero
|
|
|
458
458
|
(see "Exit codes" above), and can additionally parse `dtk run --json`'s stdout
|
|
459
459
|
summary for per-metric detail.
|
|
460
460
|
|
|
461
|
+
On GitHub Actions specifically, detectkit ships a ready-made composite action
|
|
462
|
+
instead of hand-rolling those steps: `uses: alexeiveselov92/detectkit@vX.Y.Z`
|
|
463
|
+
installs detectkit from PyPI and runs `dtk run` / `dtk autotune` / `dtk clean`
|
|
464
|
+
in a given project directory. It surfaces the 0/1/2 exit-code contract (see
|
|
465
|
+
"Exit codes" above) as the job's own outcome, and exposes the
|
|
466
|
+
`dtk run --json` summary as an action output for downstream steps to consume.
|
|
467
|
+
|
|
461
468
|
## Troubleshooting
|
|
462
469
|
|
|
463
470
|
- **"Metric not found"** — selector doesn't match. Use the bare name
|
|
@@ -4,8 +4,9 @@ detectkit is a Python library and CLI (`dtk`) for monitoring time-series
|
|
|
4
4
|
metrics with automatic anomaly detection and multi-channel alerting. It is
|
|
5
5
|
**dbt-like**: metrics live as YAML + SQL in a project directory, and you run
|
|
6
6
|
them with one command. Core logic is pure numpy (no pandas). **ClickHouse,
|
|
7
|
-
PostgreSQL and
|
|
8
|
-
dialect of your metric queries differ between them
|
|
7
|
+
PostgreSQL, MySQL/MariaDB and DuckDB are all fully supported** — only the
|
|
8
|
+
connection and the SQL dialect of your metric queries differ between them
|
|
9
|
+
(DuckDB additionally needs no server at all — just a local file).
|
|
9
10
|
|
|
10
11
|
## The pipeline: load → detect → alert
|
|
11
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: detectkit
|
|
3
|
-
Version: 0.62.
|
|
3
|
+
Version: 0.62.1
|
|
4
4
|
Summary: Metric monitoring with automatic anomaly detection
|
|
5
5
|
Author: detectkit team
|
|
6
6
|
License: MIT
|
|
@@ -110,7 +110,7 @@ Dynamic: license-file
|
|
|
110
110
|
- **Hybrid mode** — read metric SQL from a billed-per-query warehouse while all pipeline state lives in a cheap local database
|
|
111
111
|
- **Idempotent** — resume from interruptions, no duplicate processing
|
|
112
112
|
- **CLI** — `dtk init`, `dtk run --select`, `dtk unlock`, `dtk clean`, tag-based selectors
|
|
113
|
-
- **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules +
|
|
113
|
+
- **AI-native onboarding** — `dtk init-claude` sets up Claude Code context (CLAUDE.md + rules + five skills) so an assistant can scaffold metrics, configure databases, and file feedback upstream
|
|
114
114
|
|
|
115
115
|
## Installation
|
|
116
116
|
|
|
@@ -122,6 +122,7 @@ With database drivers:
|
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
124
|
pip install detectkit[clickhouse] # ClickHouse
|
|
125
|
+
pip install detectkit[duckdb] # DuckDB - single file, no server
|
|
125
126
|
pip install detectkit[all-db] # All databases
|
|
126
127
|
```
|
|
127
128
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-autotune/SKILL.md
RENAMED
|
File without changes
|
{detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-feedback/SKILL.md
RENAMED
|
File without changes
|
{detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-new-metric/SKILL.md
RENAMED
|
File without changes
|
{detectkit-0.62.0 → detectkit-0.62.1}/detectkit/cli/assets/claude/skills/dtk-setup-project/SKILL.md
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|