@merittdev/horus 0.23.0 → 0.24.1

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.
package/README.md CHANGED
@@ -1,377 +1,87 @@
1
- <p align="center">
2
- <img src="https://meritt-dev-assets.s3.eu-central-1.amazonaws.com/public/horus-logo-dark-20260614171147.svg" width="72" alt="Horus" />
3
- </p>
4
-
5
1
  # Horus
6
2
 
7
- **Understand what happened.**
8
-
9
- Open-source incident investigation. Horus connects Elasticsearch, Sentry, Grafana, MongoDB, Postgres, Redis (incl. BullMQ queues), Axiom logs, Shopify Admin, Azure Monitor, CloudWatch Logs, Google Cloud Logging, Prometheus, Azure Service Bus, Kafka, Firestore, SQL Server, and source intelligence into deterministic reports — installable today.
10
-
11
- CLI-only. Read-only against production systems. Horus never writes to your infrastructure.
12
-
13
- **Website:** [horus.sh](https://horus.sh) · **Source:** [github.com/meritt-dev/horus](https://github.com/meritt-dev/horus)
14
-
15
- ```bash
16
- curl -fsSL https://horus.sh/install.sh | bash
17
- npm install -g @merittdev/horus
18
- brew install meritt-dev/tap/horus
19
- ```
20
-
21
- Homebrew tap is live through meritt-dev/tap.
22
-
23
- ---
24
-
25
- ## What Horus does
26
-
27
- Horus reads from your existing systems and reconstructs the incident through evidence, correlation, and ranked hypotheses.
28
-
29
- It does not dump thousands of logs. It connects runtime signals to source context and returns a **deterministic report** — suspected causes (ranked), hypotheses, evidence, gaps, and next actions. Evidence before inference. Optional `--ai` adds an Anthropic narrative on top.
30
-
31
- Every incident leaves evidence.
32
-
33
- ## What Horus is not
34
-
35
- | | |
36
- |---|---|
37
- | **Monitoring** | Detects problems |
38
- | **Observability** | Shows signals |
39
- | **Horus** | Reconstructs what happened |
40
-
41
- Horus is not another dashboard, alerting tool, or log viewer. It sits on top of the systems you already use.
42
-
43
- > Monitoring detects. Observability shows. Horus reconstructs.
44
-
45
- ## Getting started
46
-
47
- ```bash
48
- horus init
49
- horus connect elasticsearch # optional runtime connectors
50
- horus investigate "checkout latency spike"
51
- horus investigations # list saved IDs
52
- horus replay <id>
53
- horus postmortem <id>
54
- ```
55
-
56
- Horus source intelligence requires a local code-graph host (the curl installer attempts to install it). Postgres is required for the audit store.
57
-
58
- ## How it works
59
-
60
- **Evidence in. Explanation out.**
61
-
62
- | Runtime + Source | Investigation Engine | Investigation Report |
63
- |---|---|---|
64
- | Elasticsearch · Axiom logs · Sentry errors | Correlation | Suspected causes (ranked) |
65
- | Grafana metrics | Timeline | Hypotheses + confidence |
66
- | MongoDB · Postgres · Redis state | Cause ranking | Evidence + gaps |
67
- | BullMQ queue runtime | | Next actions |
68
- | Source graph + git | | |
69
-
70
- Pipeline: **Evidence → Correlation → Hypotheses → Timeline → Report**
71
-
72
- ## Sources Horus investigates
73
-
74
- Elasticsearch · Sentry · Grafana · MongoDB · Postgres · Redis · BullMQ · Axiom · Git changes · Source graph · Queue map · Ownership
75
-
76
- [Set up the eight new connectors](docs/connectors.md): cloud logs, direct Prometheus, broker snapshots, Firestore and SQL Server.
77
-
78
- Trace reconstruction is not shipped yet. Connectors are read-only and project-scoped.
79
-
80
- ## Example output (illustrative)
81
-
82
- ```bash
83
- cd ~/code/atlas-payments
84
- horus investigate --env production "checkout latency spike"
85
- ```
86
-
87
- ```text
88
- # Investigation inv-347
89
- Hint: checkout latency spike
90
-
91
- ## Suspected causes (ranked)
92
- 1. [0.82 / high] Redis connection pool exhaustion [↑ queue]
93
-
94
- ## Hypotheses
95
- [supported] [0.78] queue: backlog growth preceded latency spike
96
-
97
- ## Evidence gaps
98
- - queue runtime state: worker heartbeat unavailable
99
-
100
- ## Evidence
101
- - ev-01 [elasticsearch/error] Request timeout increase
102
- - ev-04 [bullmq/queue] checkout-jobs backlog growth
103
-
104
- ## Next actions
105
- - Inspect worker concurrency changes in deploy #784
106
- ```
107
-
108
- ## Principles
109
-
110
- **Read-only** — Horus never writes to your production systems.
111
-
112
- **Deterministic first** — The engine is deterministic; optional `--ai` adds an Anthropic narrative.
113
-
114
- **Local-first** — Connectors read from your own clusters, not a hosted black box.
115
-
116
- **Project-scoped** — The repo you run in (its `.horus/config.json`) is the project identity; `--config <path>` targets another repo.
117
-
118
- **Agent-ready** — Every investigation/analysis command takes `--json` (compact by default, `--full` for the raw structure) with a `nextSteps` array to chain from. `horus packet` builds a compact, honesty-framed briefing sized for an agent's context window.
119
-
120
- ## Capabilities
121
-
122
- Installable today. More connectors and AI providers are in progress.
123
-
124
- **Today**
125
-
126
- - Elasticsearch logs
127
- - Axiom logs
128
- - Sentry errors
129
- - Grafana metrics
130
- - MongoDB / Postgres / Redis state
131
- - BullMQ queue evidence
132
- - Shopify Admin (GraphQL — queries you supply)
133
- - Source intelligence (code graph)
134
- - Timeline generation
135
- - Evidence correlation
136
- - Investigation replay
137
- - Postmortem drafts
138
-
139
- **Coming next**
3
+ [Horus](https://horus.sh), the incident-investigation CLI. From 0.24.0 this Rust implementation **is** `horus`: the npm package `@merittdev/horus`, the Homebrew formula `horus` and the GitHub release binaries all ship it.
4
+ It traces a production symptom through the code (via the source-intelligence backend) and your runtime systems:
5
+ - logs
6
+ - metrics
7
+ - queues
8
+ - databases
9
+ - error trackers
10
+ - Horus Cloud memory
140
11
 
141
- - Kubernetes evidence
142
- - Distributed trace reconstruction
143
- - Slack evidence ingestion
144
- - Local AI provider execution
12
+ It then ranks the likely causes and states its confidence plainly.
145
13
 
146
- ---
147
-
148
- ## Architecture
149
-
150
- Horus is organized in four layers:
151
-
152
- **Source Intelligence**
153
-
154
- - Horus source intelligence backend (`packages/source-py`, ships inside the bundle) — code graph, semantic search, impact analysis, ownership across TypeScript/JavaScript, Python, Go, Java, and Rust (tree-sitter).
155
-
156
- **Runtime Evidence**
157
-
158
- - **Elasticsearch** — logs → synthesized error-signature evidence
159
- - **Axiom** — structured logs (APL) → synthesized error-signature evidence, same path as Elasticsearch
160
- - **Sentry** — grouped exceptions (issues) → same error-signature / direct-seed path as logs
161
- - **MongoDB / Postgres** — application/operational state
162
- - **Grafana** — metrics via its datasource proxy
163
- - **Redis / BullMQ** — cache & queue runtime state
164
- - **Shopify Admin** — application state via GraphQL queries you supply at investigation time (`--shopify-query`) or declare in config; the connector embeds none. Read-only, Client-Credentials auth.
165
- - **Git** — change history, ownership signals
166
-
167
- **Investigation** (deterministic)
168
-
169
- - **Queue Stitcher** — connects producer `queue.add(...)` to consumer `@Processor` handlers
170
- - **Timeline Engine** — orders evidence into a sequence of events
171
- - **Correlation Engine** — connects evidence across sources into incident threads
172
-
173
- **Presentation**
174
-
175
- - **Deterministic investigation report** — evidence, timeline, hypotheses, gap analysis, next actions
176
- - **Optional AI narrative** — a later layer on top of the deterministic report
177
-
178
- ### Source intelligence is built into Horus
179
-
180
- **Source intelligence is the expected intelligence layer used by Horus** — not an optional integration. Semantic search, impact analysis, ownership signals, change detection, and the process graph live in the Horus source intelligence backend; Horus does not duplicate them.
181
-
182
- The **only** code-intelligence gap Horus owns is **queue-boundary stitching**: the source graph terminates around `queue.add(...)` and doesn't connect a producer to the consumer's `@Processor`. The stitcher synthesizes those producer → queue → worker edges.
183
-
184
- > If the Horus source intelligence backend is unavailable, Horus can still collect runtime evidence, but source context, impact analysis, change analysis, and queue stitching become degraded.
185
-
186
- Horus talks to the source intelligence backend over **HTTP/MCP only** (no CLI shell-outs for queries). Run `horus init` in a repository to start and register its source intelligence host.
187
-
188
- ## Configuration
189
-
190
- The config model separates **code** from **runtime**:
191
-
192
- - **Code belongs to the project** — `repositories[]`, each served by its own source intelligence host.
193
- - **Runtime belongs to the environment** — `environments[].connectors` (Elasticsearch, Sentry, MongoDB, Postgres, Grafana, Redis/BullMQ, Axiom).
194
-
195
- ```ts
196
- // config/horus.config.ts
197
- export default defineConfig({
198
- projects: [
199
- {
200
- name: 'atlas-payments',
201
- repositories: [
202
- {
203
- name: 'atlas-payments',
204
- path: '/repos/atlas-payments',
205
- source: { hostUrl: 'http://127.0.0.1:8420' },
206
- },
207
- ],
208
- environments: [
209
- {
210
- name: 'production',
211
- readOnly: true,
212
- connectors: {
213
- elasticsearch: {
214
- indexPattern: 'atlas-payments-prod-*',
215
- serviceName: 'atlas-payments-prod',
216
- },
217
- mongodb: {
218
- database: 'atlas_payments_prod',
219
- collections: ['orders', 'payments', 'workers'],
220
- },
221
- grafana: {},
222
- },
223
- },
224
- ],
225
- },
226
- ],
227
- });
228
- ```
229
-
230
- Local persistence is **embedded** (a bundled pglite database at `~/.horus/horus.db`) — no database to run or configure. Teams that need shared state use **Horus Cloud** (an API mirror), not a self-run Postgres.
231
-
232
- **No connector runs without an explicit project/env scope** — there are no global connector defaults.
233
-
234
- **Secrets are never committed.** `horus connect` encrypts connector credentials at rest into `.horus/secrets.local.json` (AES-256-GCM, never `config.json`) and auto-adds `.horus/` to `.gitignore`; environment variables are also supported at runtime. For the full secrets and gitignore model, see **[horus.sh/docs/security](https://horus.sh/docs/security)**.
14
+ It is a command-for-command port of the TypeScript `horus` 0.23.0 ([Meritt-dev/horus](https://github.com/Meritt-dev/horus)): same commands, flags, help text, output and exit codes, now as a single native binary.
235
15
 
236
16
  ## Install
237
17
 
238
- See **[horus.sh/docs/installation](https://horus.sh/docs/installation)** for full install, update, and uninstall instructions.
239
-
240
- ```bash
241
- curl -fsSL https://horus.sh/install.sh | bash
242
- npm install -g @merittdev/horus
243
- brew install meritt-dev/tap/horus
244
- horus --version
245
- horus init
18
+ ```sh
19
+ npm i -g @merittdev/horus # npm (macOS / Linux, arm64 / x64)
20
+ brew install meritt-dev/tap/horus # Homebrew
21
+ curl --proto '=https' --tlsv1.2 -LsSf \
22
+ https://github.com/Meritt-dev/horus-rust/releases/latest/download/horus-cli-installer.sh | sh
23
+ horus update --force # after the curl installer: installs the bundled backend
246
24
  ```
247
25
 
248
- The curl installer downloads the Horus CLI from GitHub Releases and installs the source intelligence backend from the wheel **bundled in the same release** — one bundle, one version, nothing on PyPI. All three channels ship the same `horus` binary with the backend wheel alongside it; `horus init` installs the backend automatically when it's missing.
26
+ The npm and Homebrew packages bundle the matching source-intelligence backend wheel. `horus init` installs it with [uv](https://docs.astral.sh/uv/).
249
27
 
250
- ### What the installer installs
28
+ ## Upgrading from the TypeScript horus (≤ 0.23.0)
251
29
 
252
- | Component | Role | Required |
253
- | --- | --- | --- |
254
- | **Horus CLI** | The `horus` command | Yes |
255
- | **Horus source intelligence backend** | Enables `horus init`, `horus explain`, `horus changes`, `horus architecture` | Optional |
30
+ - **npm:** `npm i -g @merittdev/horus@latest` (or `horus update`) replaces the TS build with this one. Node is still required for npm itself, not for Horus.
31
+ - **Homebrew:** `brew upgrade horus`. The formula no longer depends on `node`.
32
+ - **Config and secrets** in `~/.horus` and `.horus/config.json` are read as-is.
33
+ - **Local history.** The TS CLI kept investigations and memory in a PGlite store at `~/.horus/horus.db`. This build uses SQLite at `~/.horus/horus-rust.db`. Copy the history over once (needs `node`/`npx`; the TS store is only read):
256
34
 
257
- ### Prerequisites
35
+ ```sh
36
+ horus db migrate-from-ts
37
+ ```
258
38
 
259
- | Requirement | Role |
260
- | --- | --- |
261
- | Node.js 22+ | Horus CLI runtime (the installed binary needs Node.js) |
262
- | Python 3.11+ + uv/pip | Required only for the Horus source intelligence backend |
39
+ Until you do, `horus` prints a one-line reminder while the new store is empty. Re-running the migration is safe.
263
40
 
264
- The investigation audit store is **embedded** (bundled pglite, zero setup) — there is no Postgres to install. Teams that need shared state use **Horus Cloud**.
41
+ ## Use
265
42
 
266
- The installer **does not** configure Elasticsearch, MongoDB, Grafana, Redis, or any production system. Runtime connectors are added per-project after install via `horus connect`.
267
-
268
- ### Direct download (without the curl installer)
269
-
270
- ```bash
271
- # Replace vX.Y.Z with the current release tag (see github.com/meritt-dev/horus/releases)
272
- curl -fsSL https://github.com/meritt-dev/horus/releases/download/vX.Y.Z/horus-vX.Y.Z -o horus
273
- chmod +x horus
274
- sudo mv horus /usr/local/bin/horus
275
- horus --version
276
- ```
277
-
278
- To **update** to a newer version, re-run the installer — it overwrites the binary and leaves your config untouched. To **uninstall**, see **[horus.sh/docs/installation#uninstall](https://horus.sh/docs/installation#uninstall)**.
279
-
280
- If something goes wrong after install, run `horus doctor` and see **[horus.sh/docs/installation#troubleshooting](https://horus.sh/docs/installation#troubleshooting)**.
281
-
282
- ## Local development
283
-
284
- ```bash
285
- pnpm install
286
- pnpm build # builds apps/horus/dist/index.cjs
287
-
288
- # Per repository: start the source intelligence host and stitch queue boundaries
289
- horus init
290
-
291
- source ~/.horus.env
292
-
293
- node apps/horus/dist/index.cjs status
294
- ```
295
-
296
- **Verify the full v0.1 user path (init → investigate → replay → postmortem):**
297
-
298
- ```bash
299
- # No-services startup check (version, help, doctor):
300
- ./scripts/smoke-test.sh apps/horus/dist/index.cjs
301
-
302
- # Full end-to-end flow (uses the embedded pglite store — no services to start):
303
- ./scripts/e2e-smoke.sh apps/horus/dist/index.cjs
304
- ```
305
-
306
- ```bash
307
- horus --help
308
- horus help <command>
309
- horus investigate --help
43
+ ```sh
44
+ cd your-service
45
+ horus init # index the repo, start the source host, write .horus/config.json
46
+ horus connect elasticsearch … # add runtime connectors (see `horus connect --help`)
47
+ horus doctor
48
+ horus investigate "checkout requests timing out since the last deploy"
310
49
  ```
311
50
 
312
- ### Core commands
313
-
314
- | Command | What it does |
315
- | --- | --- |
316
- | `horus status [--env]` | Per-project/env connector-health matrix |
317
- | `horus connect <type>` | Add/update a runtime connector — `elasticsearch` / `mongodb` / `postgres` / `sentry` / `axiom` / `grafana` / `redis` (plus `ai` to configure an AI provider) |
318
- | `horus init [--env <e>]` | Set up the current repo: config, source-intelligence host, index, queue map |
319
- | `horus hosts [--reap]` | List source-intelligence hosts and live status; `--reap` stops orphaned hosts |
320
- | `horus stop [--all]` | Stop this repo's source-intelligence host (`--all` stops every host) |
321
- | `horus investigate --env <e> "<hint>"` | Full deterministic investigation report (`--format json` for agents) |
322
- | `horus packet <hint\|savedId> [--for claude] [--json]` | Compact, honesty-framed briefing for a coding-agent context window |
323
- | `horus logs [service] --env <e>` | Error-signature evidence (`--raw` for lines) |
324
- | `horus state --env <e>` | MongoDB application-state evidence (read-only) |
325
- | `horus metrics [hint] --env <e>` | Grafana metrics evidence |
326
- | `horus queues [name] [--live]` | Queue topology from source intelligence; `--live` reads real-time Redis/BullMQ state |
327
- | `horus search <query>` · `explain <symbol>` · `blast-radius` · `architecture` · `what-changed` | Source-aware code intelligence — one canonical resolver, so a query resolves to the same symbol across commands (qualified `Class.method` supported) |
328
- | `horus memory <show\|add\|list\|link\|...>` | Inspect/author deterministic incident memory; `memory link` adds `supersedes` / `contradicts` / `recurs-with` edges |
329
- | `horus feedback <id> [--resolved] [--note] [--cause]` | Record outcome feedback on an investigation (improves Horus) |
330
- | `horus report [hint] [--title --body --labels]` | File a Horus bug or capability gap — opens a pre-filled GitHub issue (no auth, nothing sent automatically) |
331
-
332
- ## Local project workflow (git-style)
51
+ `horus --help` lists every command.
333
52
 
334
- A repo carries a `.horus/config.json` (discovered by walking up from the working directory, like `.git`) — the repo's config IS the project identity. Work from inside the repo, or pass `--config <path>` to target another repo explicitly.
53
+ ## How it compares to the TypeScript CLI
335
54
 
336
- ```bash
337
- cd /repos/atlas-payments
338
- horus init
55
+ We ran side-by-side benchmarks against 12 real repositories ([docs/BENCHMARK.md](docs/BENCHMARK.md)):
56
+ - **Startup:** 5 ms vs 158 ms cold start.
57
+ - **Memory:** 10 MB vs 153 MB idle; 140–175 MB vs about 1 GB for a full investigation.
58
+ - **Speed:** 2.5–11.8× faster per project.
59
+ - **Output parity:** 98–100% mean match.
339
60
 
340
- horus investigate "checkout latency spike"
341
- horus investigate --config /repos/atlas-payments/.horus/config.json "checkout latency spike" # from anywhere
342
- horus projects # list registered repos (informational)
343
- ```
344
-
345
- `horus init` reuses an already-running source intelligence host when one is healthy. Runtime connectors are added to the env block of `.horus/config.json` afterwards.
346
-
347
- ## For coding agents
61
+ The intended differences are listed in [DIVERGENCES.md](DIVERGENCES.md). The main ones:
62
+ - **Local database.** History lives in `~/.horus/horus-rust.db` (SQLite), not the TS CLI's PGlite `~/.horus/horus.db`; `horus db migrate-from-ts` copies it over. Horus Cloud memory syncs into both.
63
+ - **JS/TS config files.** `horus.config.{js,ts}` is loaded through an installed `node`. `.horus/config.json` needs nothing extra.
64
+ - **Cloud writes switch.** `HORUS_RUST_CLOUD_WRITE=0` keeps a run local: no Cloud writes and no telemetry.
348
65
 
349
- Horus is built to be an agent's evidence layer. Install a skill that teaches your agent to reach for Horus before guessing:
66
+ ## Build from source
350
67
 
351
- ```bash
352
- horus skill install claude # .claude/skills/horus/SKILL.md (also: codex · gemini · cursor · generic)
353
- horus mcp # expose the local knowledge index to agents over MCP (stdio)
68
+ ```sh
69
+ HORUS_VERSION=0.24.1 cargo build --release -p horus-cli # → target/release/horus
354
70
  ```
355
71
 
356
- Every investigation/analysis command takes `--json` (`--format json` for `investigate`/`replay`) — compact by default, `--full` for the raw structure — and each result carries a deterministic `nextSteps` array. `horus packet "<hint>" --json` returns a compact briefing sized for a context window.
72
+ Cross-platform release builds are covered in [PORTING.md](PORTING.md), and cutting a release in [docs/RELEASE.md](docs/RELEASE.md).
357
73
 
358
- ## Layout
359
-
360
- ```
361
- packages/
362
- core/ evidence model, config schema + project/env resolution, version pins
363
- connectors/ provider contracts + source intelligence (HTTP/MCP) · Elasticsearch · Sentry · Axiom · Grafana · MongoDB · Postgres · Redis · BullMQ · application-state · Git
364
- stitcher/ queue-boundary stitcher
365
- db/ Drizzle schema + migrations (plain Postgres, no pgvector)
366
- engine/ deterministic investigation pipeline (timeline, correlation, hypotheses, gaps)
367
- cli/ commander CLI
368
- apps/horus/ composition root (bundled bin)
369
- config/ horus.config.ts
370
- ```
74
+ The workspace mirrors the TS monorepo crate-for-package:
75
+ - `core`
76
+ - `connectors`
77
+ - `db`
78
+ - `stitcher`
79
+ - `engine`
80
+ - `ai`
81
+ - `knowledge`
82
+ - `eval`
83
+ - `cli`
371
84
 
372
- ## Foundation
85
+ ## License
373
86
 
374
- - TypeScript monorepo (pnpm + Turborepo)
375
- - Postgres + Drizzle — semantic search delegated to source intelligence backend
376
- - Built-in **Horus source intelligence backend**, over HTTP/MCP only
377
- - Project/environment-scoped connectors; read-only against production
87
+ MIT
package/bin/horus.js ADDED
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ // Launcher for the native Horus binary (esbuild/biome pattern). npm installs exactly one
3
+ // platform package through optionalDependencies; this shim runs its `bin/horus`, inheriting
4
+ // stdio and forwarding signals and the exit status. No postinstall, no download.
5
+ 'use strict';
6
+ const { spawn } = require('node:child_process');
7
+ const fs = require('node:fs');
8
+ const path = require('node:path');
9
+
10
+ const launcher = require('../package.json').name;
11
+ const pkg = `${launcher}-${process.platform}-${process.arch}`;
12
+
13
+ let binary;
14
+ try {
15
+ binary = path.join(path.dirname(require.resolve(`${pkg}/package.json`)), 'bin', 'horus');
16
+ } catch {
17
+ const supported = Object.keys(require('../package.json').optionalDependencies || {}).join(', ');
18
+ console.error(
19
+ `horus: no native binary for ${process.platform}-${process.arch} (expected the optional package ${pkg}).\n` +
20
+ `Supported: ${supported}.\n` +
21
+ 'If you installed with --omit=optional or --no-optional, reinstall without it.',
22
+ );
23
+ process.exit(1);
24
+ }
25
+
26
+ // Some npm versions drop the executable bit from non-`bin` files.
27
+ try {
28
+ fs.accessSync(binary, fs.constants.X_OK);
29
+ } catch {
30
+ fs.chmodSync(binary, 0o755);
31
+ }
32
+
33
+ const child = spawn(binary, process.argv.slice(2), { stdio: 'inherit' });
34
+ const forward = (signal) => child.kill(signal);
35
+ const signals = ['SIGINT', 'SIGTERM', 'SIGHUP', 'SIGQUIT'];
36
+ for (const s of signals) process.on(s, forward);
37
+ child.on('error', (err) => {
38
+ console.error(`horus: failed to start ${binary}: ${err.message}`);
39
+ process.exit(1);
40
+ });
41
+ child.on('exit', (code, signal) => {
42
+ for (const s of signals) process.off(s, forward);
43
+ if (signal) process.kill(process.pid, signal);
44
+ else process.exit(code ?? 1);
45
+ });
package/package.json CHANGED
@@ -1,39 +1,8 @@
1
1
  {
2
2
  "name": "@merittdev/horus",
3
- "version": "0.23.0",
3
+ "version": "0.24.1",
4
4
  "description": "Local-first, source-aware production-incident investigation engine",
5
- "type": "module",
6
- "bin": {
7
- "horus": "./dist/index.cjs"
8
- },
9
- "files": [
10
- "dist"
11
- ],
12
- "scripts": {
13
- "build": "tsup",
14
- "typecheck": "tsc --noEmit",
15
- "test": "tsup && vitest run --passWithNoTests",
16
- "prepublishOnly": "tsup",
17
- "prepack": "cp ../../README.md README.md"
18
- },
19
- "engines": {
20
- "node": ">=22"
21
- },
22
- "devDependencies": {
23
- "@electric-sql/pglite": "^0.5.3",
24
- "@horus/ai": "workspace:*",
25
- "@horus/cli": "workspace:*",
26
- "@horus/connectors": "workspace:*",
27
- "@horus/core": "workspace:*",
28
- "@horus/db": "workspace:*",
29
- "@horus/engine": "workspace:*",
30
- "@horus/eval": "workspace:*",
31
- "@horus/stitcher": "workspace:*",
32
- "@types/node": "^22.10.2",
33
- "tsup": "^8.3.5",
34
- "typescript": "^5.7.2",
35
- "vitest": "^2.1.8"
36
- },
5
+ "license": "MIT",
37
6
  "keywords": [
38
7
  "incident-investigation",
39
8
  "observability",
@@ -41,19 +10,29 @@
41
10
  "debugging",
42
11
  "cli"
43
12
  ],
44
- "license": "MIT",
45
- "author": {
46
- "name": "Meritt Dev",
47
- "url": "https://horus.sh"
48
- },
13
+ "homepage": "https://horus.sh",
49
14
  "repository": {
50
15
  "type": "git",
51
- "url": "https://github.com/meritt-dev/horus"
16
+ "url": "https://github.com/Meritt-dev/horus-rust"
52
17
  },
53
18
  "bugs": {
54
- "url": "https://github.com/meritt-dev/horus/issues"
19
+ "url": "https://github.com/Meritt-dev/horus-rust/issues"
20
+ },
21
+ "bin": {
22
+ "horus": "bin/horus.js"
23
+ },
24
+ "files": [
25
+ "bin"
26
+ ],
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "optionalDependencies": {
31
+ "@merittdev/horus-darwin-arm64": "0.24.1",
32
+ "@merittdev/horus-darwin-x64": "0.24.1",
33
+ "@merittdev/horus-linux-arm64": "0.24.1",
34
+ "@merittdev/horus-linux-x64": "0.24.1"
55
35
  },
56
- "homepage": "https://horus.sh",
57
36
  "publishConfig": {
58
37
  "access": "public"
59
38
  }
Binary file