autonomous-flow-daemon 1.1.0 → 1.6.0

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.ko.md +124 -164
  3. package/README.md +99 -170
  4. package/package.json +11 -5
  5. package/src/adapters/index.ts +246 -35
  6. package/src/cli.ts +71 -1
  7. package/src/commands/benchmark.ts +187 -0
  8. package/src/commands/diagnose.ts +56 -14
  9. package/src/commands/doctor.ts +243 -0
  10. package/src/commands/evolution.ts +107 -0
  11. package/src/commands/fix.ts +22 -2
  12. package/src/commands/hooks.ts +136 -0
  13. package/src/commands/mcp.ts +129 -0
  14. package/src/commands/restart.ts +14 -0
  15. package/src/commands/score.ts +164 -96
  16. package/src/commands/start.ts +74 -15
  17. package/src/commands/stats.ts +103 -0
  18. package/src/commands/status.ts +157 -0
  19. package/src/commands/stop.ts +23 -4
  20. package/src/commands/sync.ts +253 -20
  21. package/src/commands/vaccine.ts +177 -0
  22. package/src/constants.ts +25 -1
  23. package/src/core/boast.ts +27 -12
  24. package/src/core/db.ts +74 -3
  25. package/src/core/evolution.ts +215 -0
  26. package/src/core/hologram/engine.ts +71 -0
  27. package/src/core/hologram/fallback.ts +11 -0
  28. package/src/core/hologram/incremental.ts +227 -0
  29. package/src/core/hologram/py-extractor.ts +132 -0
  30. package/src/core/hologram/ts-extractor.ts +320 -0
  31. package/src/core/hologram/types.ts +25 -0
  32. package/src/core/hologram.ts +64 -236
  33. package/src/core/hook-manager.ts +259 -0
  34. package/src/core/i18n/messages.ts +43 -0
  35. package/src/core/immune.ts +8 -123
  36. package/src/core/log-rotate.ts +33 -0
  37. package/src/core/log-utils.ts +38 -0
  38. package/src/core/lru-map.ts +61 -0
  39. package/src/core/notify.ts +27 -19
  40. package/src/core/rule-engine.ts +287 -0
  41. package/src/core/semantic-diff.ts +432 -0
  42. package/src/core/telemetry.ts +94 -0
  43. package/src/core/vaccine-registry.ts +212 -0
  44. package/src/core/workspace.ts +28 -0
  45. package/src/core/yaml-minimal.ts +176 -0
  46. package/src/daemon/client.ts +34 -6
  47. package/src/daemon/event-batcher.ts +108 -0
  48. package/src/daemon/guards.ts +13 -0
  49. package/src/daemon/http-routes.ts +293 -0
  50. package/src/daemon/mcp-handler.ts +270 -0
  51. package/src/daemon/server.ts +439 -353
  52. package/src/daemon/types.ts +100 -0
  53. package/src/daemon/workspace-map.ts +92 -0
  54. package/src/platform.ts +23 -2
  55. package/src/version.ts +15 -0
package/README.md CHANGED
@@ -9,16 +9,12 @@
9
9
  <a href="https://github.com/dotoricode/autonomous-flow-daemon">
10
10
  <img src="demo.gif" width="850" alt="afd demo" style="border-radius: 12px; box-shadow: 0 20px 40px rgba(0,0,0,0.4);">
11
11
  </a>
12
- <br>
13
- <br>
14
- <b>🛡️ Immortal Context Flow:</b>
15
- <em>"afd restores critical config files with <b>near-zero latency</b>, ensuring your AI workflow remains unbroken and cost-efficient."</em>
16
12
  </p>
17
13
 
18
14
  ---
19
15
 
20
16
  <p align="center">
21
- <img src="https://img.shields.io/badge/version-1.1.0-blue?style=flat-square" alt="version" />
17
+ <img src="https://img.shields.io/badge/version-1.6.0-blue?style=flat-square" alt="version" />
22
18
  <a href="https://www.npmjs.com/package/autonomous-flow-daemon"><img src="https://img.shields.io/npm/v/autonomous-flow-daemon?style=flat-square&logo=npm&color=cb0000" alt="npm" /></a>
23
19
  <img src="https://img.shields.io/badge/runtime-Bun-f472b6?style=flat-square&logo=bun" alt="Bun" />
24
20
  <img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT" />
@@ -33,49 +29,76 @@
33
29
 
34
30
  ## Why afd?
35
31
 
36
- > [afd] 🛡️ AI agent deleted '.claudeignore' | 🩹 Self-healed in 184ms | Context preserved.
32
+ > [afd] AI agent deleted '.claudeignore' | Self-healed in 184ms | Context preserved.
37
33
 
38
- You're deep in flow. Your AI agent makes a wrong move — deletes a config, corrupts a hook file, wipes a `.cursorrules`. Without `afd`, you stop everything, diagnose the breakage, manually fix it: **30 minutes gone**.
34
+ Your AI agent deletes a config, corrupts a hook file, wipes `.cursorrules`. Without `afd`, you stop everything, diagnose the breakage, manually fix it: **30 minutes gone**.
39
35
 
40
- With `afd`, the daemon noticed in 10ms, restored the file in 184ms, and logged it silently. **You never even saw it happen.**
36
+ With `afd`, the daemon noticed in 10ms, restored the file in 184ms, and logged it silently. **You never even saw it happen.** Running as a native Bun daemon, it consumes < 0.1% CPU and ~40MB RAM — zero interference with your workflow.
41
37
 
42
38
  | Situation | Without afd | With afd |
43
39
  |:----------|:------------|:---------|
44
40
  | AI deletes `.claudeignore` | 30 min manual fix | **0.2s auto-heal** |
45
41
  | Hook file corrupted | Re-inject hooks, restart session | **Silent background repair** |
46
42
  | `git checkout` triggers 50 file events | AI goes haywire | **Mass-event suppressor kicks in** |
47
- | New team member, missing context | Tribal knowledge required | **`afd sync` vaccines the setup** |
43
+ | AI reads 8 large files (114KB) | ~28,600 tokens consumed | **~1,700 tokens via hologram (94% saved)** |
48
44
 
49
45
  ---
50
46
 
51
- ## 🚀 Zero-Interference Promise
47
+ ## Key Features
52
48
 
53
- We built `afd` to protect your flow, not to slow it down.
54
-
55
- * **No Performance Hit:** Running as a native background daemon via Bun, `afd` consumes **< 0.1% CPU** and **~40MB RAM**.
56
- * **Seamless Recovery:** With **sub-millisecond healing**, files are restored before Claude Code can even register a missing context error.
57
- * **Non-Invasive:** `afd` observes file system events from the OS layer. It never intercepts or modifies Claude Code's internal execution or API calls.
49
+ | Feature | What it does |
50
+ |:--------|:-------------|
51
+ | **S.E.A.M Auto-Heal** | Detects file deletion/corruption and restores it in < 270ms |
52
+ | **Hologram Extraction** | Serves 80-93% lighter file skeletons to AI agents via MCP, slashing token costs |
53
+ | **Smart File Reader** | `afd_read` small files served raw, large files auto-compressed; supports line-range reads |
54
+ | **Workspace Map** | `afd://workspace-map` — full file tree + export signatures in one call |
55
+ | **Hologram L1** | Import-aware compression — only imported symbols get full signatures (85%+ savings) |
56
+ | **Quarantine Zone** | Backs up corrupted files to `.afd/quarantine/` before restoring |
57
+ | **Self-Evolution** | Analyzes quarantined failures and writes prevention rules to `afd-lessons.md` |
58
+ | **Mistake History** | PreToolUse hook injects past mistakes as warnings before file edits |
59
+ | **Double-Tap Heuristic** | Delete once = auto-heal; delete again within 30s = respected as intent |
60
+ | **Vaccine Network** | Export learned antibodies via `afd sync` for cross-project immunity |
61
+ | **MCP Integration** | `afd mcp install` auto-registers the daemon as an MCP server |
62
+ | **HUD Defense Counter** | Status bar shows defense count + reason summary at a glance |
58
63
 
59
64
  ---
60
65
 
61
- ## Key Features (v1.1.0)
66
+ ## Token Savings Real Measured Data
62
67
 
63
- | Feature | What it does |
64
- |:--------|:-------------|
65
- | **🛡️ S.E.A.M Auto-Heal** | Detects file deletion and restores it in < 270ms — before your AI agent notices |
66
- | **🔍 Smart Discovery** | Automatically scans for AI-context files (`.claude/`, `.cursorrules`, `.mcp.json`, etc.) — zero config required |
67
- | **🏥 Boastful Doctor** | Real-time value tracking: saved tokens, time, and cost — with witty feedback after every heal |
68
- | **🌐 Auto-Localization** | Seamlessly switches between Korean and English based on your system locale. Or set it: `afd lang ko` |
69
- | **🧬 Double-Tap Heuristic** | Distinguishes accidents from intent — delete once, afd heals it; delete again within 30s, afd respects your decision |
70
- | **💉 Vaccine Network** | Export learned antibodies via `afd sync` for cross-project, cross-team immunity |
71
- | **📊 Hologram Extraction** | Serves 80%+ lighter file skeletons to AI agents, slashing token costs |
68
+ The hologram system is afd's biggest value driver for AI-assisted development. Here's what we measured in a real session:
69
+
70
+ ### Session Snapshot (measured during a real coding session)
71
+
72
+ | Metric | Value |
73
+ |:-------|:------|
74
+ | Hologram requests | 8 calls |
75
+ | Target files total size | ~114.5 KB (8 files, avg 14.3 KB each) |
76
+ | Original token cost | ~28,600 tokens |
77
+ | After hologram compression | ~1,700 tokens |
78
+ | **Tokens saved** | **~26,900 tokens (94% reduction)** |
79
+
80
+ ### How It Scales
81
+
82
+ ```
83
+ Session tokens (at ctx ~15%): ~150,000 ████████████████
84
+ Tokens saved by hologram: ~26,900 ██░░░░░░░░░░░░░░ (18% of session)
85
+ ```
86
+
87
+ At ctx 50%+, file reads dominate the token budget. Without hologram, reading 8 large files costs ~28.6K tokens each time. With hologram, **each file costs 1/16th** of its original footprint — and the gap widens with every repeated read.
88
+
89
+ ### Three Layers of Token Optimization
90
+
91
+ | Layer | Tool | Savings | How |
92
+ |:------|:-----|:--------|:----|
93
+ | **L0 Hologram** | `afd_hologram` | 80%+ | Strip function bodies, keep type signatures |
94
+ | **L1 Hologram** | `afd_hologram` + `contextFile` | 85%+ | Filter to only imported symbols |
95
+ | **Smart Reader** | `afd_read` | Auto | Files < 10KB raw, >= 10KB auto-hologram |
96
+ | **Workspace Map** | `afd://workspace-map` | N/A | Entire project structure in one call |
72
97
 
73
98
  ---
74
99
 
75
100
  ## The One-Command Experience
76
101
 
77
- > **Zero-Config. Total Protection.**
78
-
79
102
  ```bash
80
103
  npx @dotoricode/afd start
81
104
  ```
@@ -86,27 +109,24 @@ Or install locally:
86
109
  bun link && afd start
87
110
  ```
88
111
 
89
- That's it. One command. `afd` takes over from here:
112
+ That's it. `afd` takes over from here:
90
113
 
91
- - **Auto-Injection** — Installs `PreToolUse` hooks into Claude Code silently. No manual config editing.
92
- - **Sense (Watcher)** — 10ms real-time monitoring of critical configs: `.claude/`, `CLAUDE.md`, `.cursorrules`, `.claudeignore`, `.gitignore`.
93
- - **Auto-Heal** — Silent background repair of missing or corrupted files using the **S.E.A.M cycle**. You won't even notice it happened.
114
+ - **Auto-Injection** — Installs `PreToolUse` hooks into Claude Code silently.
115
+ - **Sense (Watcher)** — 10ms real-time monitoring of critical configs.
116
+ - **Auto-Heal** — Silent background repair using the S.E.A.M cycle.
94
117
 
95
118
  ```
96
119
  $ afd start
97
- 🛡️ Daemon started (pid 4812, port 52413)
98
- 🛡️ Smart Discovery: Watching 7 AI-context targets
99
- Targets: .claude/, CLAUDE.md, .cursorrules, .claudeignore, .gitignore, mcp-config.json, .mcp.json
120
+ Daemon started (pid 4812, port 52413)
121
+ Smart Discovery: Watching 7 AI-context targets
100
122
  Hook injected into .claude/hooks.json
101
123
  ```
102
124
 
103
- > You type `afd start`. Then you forget about it. That's the entire UX.
104
-
105
125
  ---
106
126
 
107
127
  ## The S.E.A.M Cycle
108
128
 
109
- The intelligence inside `afd`. Every file event flows through four stages:
129
+ Every file event flows through four stages:
110
130
 
111
131
  ```mermaid
112
132
  graph LR
@@ -123,177 +143,88 @@ graph LR
123
143
  | Stage | What Happens | Speed |
124
144
  |:------|:-------------|:------|
125
145
  | **Sense** | Chokidar watcher detects `add`, `change`, `unlink` events | < 10ms |
126
- | **Extract** | Immune engine runs 3 built-in health checks (IMM-001..003) | < 5ms |
127
- | **Adapt** | Matches symptom to stored antibody in SQLite (WAL mode) | < 1ms |
146
+ | **Extract** | Generates hologram (type skeleton) & runs health checks | < 5ms |
147
+ | **Adapt** | Matches symptom to antibody, quarantines corrupted state | < 1ms |
128
148
  | **Mutate** | Applies RFC 6902 JSON-Patch to restore the file | < 25ms |
129
149
 
130
150
  > Full cycle: **< 270ms** from file deletion to full recovery.
131
151
 
132
- ### Watch Targets
133
-
134
- These files are monitored in real-time. Immune files (IMM-*) are automatically restored on deletion:
135
-
136
- | Target | Type | Antibody | Auto-Restore |
137
- |:-------|:-----|:---------|:-------------|
138
- | `.claude/` | Directory | IMM-002 (`hooks.json`) | ✅ |
139
- | `CLAUDE.md` | File | IMM-003 | ✅ |
140
- | `.claudeignore` | File | IMM-001 | ✅ |
141
- | `.cursorrules` | File | — | Event logging only |
142
- | `.gitignore` | File | — | Event logging only |
143
- | `mcp-config.json` | File | — | 🔍 Smart Discovery |
144
- | `.mcp.json` | File | — | 🔍 Smart Discovery |
145
- | `.ai/` | Directory | — | 🔍 Smart Discovery |
146
- | `.windsurfrules` | File | — | 🔍 Smart Discovery |
147
-
148
- > Antibodies are **auto-seeded on startup** with each file's current content, and **refreshed on every change** — so restores always reflect the latest version.
149
- >
150
- > 🔍 **Smart Discovery** scans for 12+ known AI-config patterns at startup (< 0.1ms) and adds any found files to the active watch list automatically.
151
-
152
152
  ---
153
153
 
154
154
  ## Commands
155
155
 
156
- Everything you need. Nothing you don't.
157
-
158
- | Command | Essence | Intelligence Inside |
159
- |:--------|:--------|:--------------------|
160
- | `afd start` | **Ignite** | Daemon spawn + Smart Discovery + Hook injection |
161
- | `afd fix` | **Diagnose** | Symptom detection & Antibody learning |
162
- | `afd score` | **Vitals** | Localized health dashboard & Value metrics |
163
- | `afd sync` | **Federate** | Vaccine payload export for cross-project immunity |
164
- | `afd lang` | **Localize** | Switch display language (`afd lang ko` / `afd lang en`) |
165
- | `afd stop` | **Quarantine** | Shift summary & Graceful shutdown |
166
-
167
- ### Quick Reference
168
-
169
- ```bash
170
- afd start # Start daemon, inject hooks, begin watching
171
- afd fix # Scan for issues, auto-patch, learn antibodies
172
- afd score # Full diagnostic dashboard (localized)
173
- afd sync # Export antibodies to .afd/global-vaccine-payload.json
174
- afd lang ko # Switch to Korean / afd lang en for English
175
- afd stop # Shift summary + graceful shutdown
176
- ```
177
-
178
- ---
179
-
180
- ## Dashboard: `afd score`
181
-
182
- ```
183
- ┌──────────────────────────────────────────────┐
184
- │ afd score — Daemon Diagnostics │
185
- ├──────────────────────────────────────────────┤
186
- │ Ecosystem : Claude Code │
187
- ├──────────────────────────────────────────────┤
188
- │ Uptime : 1h 23m │
189
- │ Events : 156 │
190
- │ Files Found : 8 │
191
- ├──────────────────────────────────────────────┤
192
- │ Immune System │
193
- │ ────────────────────────────── │
194
- │ Antibodies : 7 │
195
- │ Level : Fortified │
196
- │ Auto-healed : 3 background events │
197
- ├──────────────────────────────────────────────┤
198
- │ 📈 Value Delivered │
199
- │ ────────────────────────────── │
200
- │ Tokens saved : ~2.9K │
201
- │ Time saved : ~40 min │
202
- │ Cost saved : ~$0.01 │
203
- ├──────────────────────────────────────────────┤
204
- │ 🗣️ The immune system holds. Another day, │
205
- │ another heal. 💪 │
206
- └──────────────────────────────────────────────┘
207
- ```
208
-
209
- > The dashboard is fully localized. Run `afd lang ko` and every label switches to Korean.
156
+ | Command | What it does |
157
+ |:--------|:-------------|
158
+ | `afd start` | Daemon spawn + Smart Discovery + Hook injection + MCP registration |
159
+ | `afd stop` | Shift summary report & graceful shutdown (`--clean` to remove hooks & MCP) |
160
+ | `afd score` | Health dashboard with evolution & hologram metrics |
161
+ | `afd fix` | Symptom detection with hologram context & antibody learning |
162
+ | `afd sync` | Vaccine payload export/import (`--push`, `--pull`, `--remote <url>`) |
163
+ | `afd restart` | Stop + start in one command |
164
+ | `afd status` | Quick health check daemon, hooks, MCP, defenses |
165
+ | `afd doctor` | Comprehensive health analysis with auto-fix recommendations |
166
+ | `afd evolution` | Analyze quarantined failures & generate prevention rules |
167
+ | `afd mcp install` | Register afd as MCP server in project + global config |
168
+ | `afd vaccine` | List, search, install, publish community antibodies |
169
+ | `afd lang` | Switch display language (`afd lang ko` / `afd lang en`) |
210
170
 
211
171
  ---
212
172
 
213
173
  ## Advanced Intelligence
214
174
 
215
- ### Double-Tap Heuristic (Immune Tolerance)
175
+ ### Double-Tap Heuristic
216
176
 
217
177
  `afd` distinguishes **accidents** from **intent**:
218
178
 
219
179
  ```
220
- $ rm .claudeignore # First tap afd heals it silently
221
- $ rm .claudeignore # Second tap within 30s "You meant it."
222
- [afd] 🫡 Antibody IMM-001 retired. Double-tap detected. Standing down.
180
+ $ rm .claudeignore # First tap -> afd heals it silently
181
+ $ rm .claudeignore # Second tap within 30s -> "You meant it."
182
+ [afd] Antibody IMM-001 retired. Double-tap detected. Standing down.
223
183
  ```
224
184
 
225
185
  | Scenario | Response |
226
186
  |:---------|:---------|
227
187
  | Single delete (accident) | Auto-heal + record first tap |
228
188
  | Re-delete within 30s (intent) | Antibody goes dormant, deletion respected |
229
- | Re-delete after 30s | Fresh first tap, heals again |
230
189
  | 3+ deletes in 1s (git checkout) | Mass-event detected, all suppression paused |
231
190
 
232
- ### Vaccine Network (Team Federation)
233
-
234
- Export learned antibodies for your entire team:
191
+ ### Vaccine Network
235
192
 
236
193
  ```bash
237
- afd sync
238
- # .afd/global-vaccine-payload.json
194
+ afd sync # Export to .afd/global-vaccine-payload.json
195
+ afd sync --push # Push vaccines to remote
196
+ afd sync --pull # Pull vaccines from remote
239
197
  ```
240
198
 
241
- The payload is sanitized (no absolute paths, no secrets) and portable. Drop it into any project, and `afd` inherits the immunity.
242
-
243
- ### Hologram Extraction
199
+ The payload is sanitized (no absolute paths, no secrets) and portable.
244
200
 
245
- When AI agents request file context, `afd` serves **token-efficient skeletons** — stripping comments and function bodies while preserving the full type signature:
201
+ ### Self-Evolution
246
202
 
203
+ ```bash
204
+ afd evolution
247
205
  ```
248
- Original: 2,450 chars → Hologram: 380 chars (84% savings)
249
- ```
250
-
251
- This keeps your AI agent's context window lean without losing structural understanding.
252
-
253
- ---
254
-
255
- ## Status Line
256
206
 
257
- Real-time daemon status in Claude Code's status bar:
258
-
259
- ```
260
- 🛡️ afd: OFF # Daemon not running
261
- 🛡️ afd: ON # Running, no heals
262
- 🛡️ afd: ON 🩹1 # 1 auto-heal event
263
- 🛡️ afd: ON | 🩹 3 Healed | last: IMM-003 # Detailed view
264
- ```
207
+ Analyzes quarantined failures and writes prevention rules to `afd-lessons.md`. AI agents read this before editing immune-critical files — turning past failures into future prevention.
265
208
 
266
209
  ---
267
210
 
268
- ## Plugin / MCP Setup
269
-
270
- `afd` can be registered as a **Model Context Protocol (MCP) server** inside Claude Code, allowing the daemon to start automatically when Claude Code launches.
211
+ ## MCP Setup
271
212
 
272
- ### Automatic (recommended)
213
+ `afd` provides four MCP tools and one resource:
273
214
 
274
- Add to your Claude Code MCP config (`~/.claude/mcp.json` or project-level `.mcp.json`):
215
+ | MCP Tool | Purpose |
216
+ |:---------|:--------|
217
+ | `afd_read` | Smart file reader — raw for small files, auto-hologram for large, optional line ranges |
218
+ | `afd_hologram` | Token-efficient type skeleton of any TS/JS file (80%+ savings) |
219
+ | `afd_diagnose` | Health diagnosis with symptoms and hologram context |
220
+ | `afd_score` | Runtime stats: uptime, heals, hologram savings |
275
221
 
276
- ```json
277
- {
278
- "mcpServers": {
279
- "afd": {
280
- "command": "bun",
281
- "args": ["run", "src/cli.ts", "start"]
282
- }
283
- }
284
- }
285
- ```
286
-
287
- ### Manual
222
+ | MCP Resource | Purpose |
223
+ |:-------------|:--------|
224
+ | `afd://workspace-map` | Full file tree with export signatures in one call |
288
225
 
289
226
  ```bash
290
- afd start # starts daemon in background, injects hooks
291
- ```
292
-
293
- Once registered, Claude Code will display the live status line:
294
-
295
- ```
296
- 🛡️ afd: ON | 🩹 3 Healed | last: IMM-003
227
+ afd mcp install # Registers in .mcp.json + ~/.claude.json
297
228
  ```
298
229
 
299
230
  ---
@@ -307,7 +238,6 @@ Once registered, Claude Code will display the live status line:
307
238
  | Watching | **Chokidar** | Cross-platform, battle-tested file watcher |
308
239
  | Patching | **RFC 6902 JSON-Patch** | Deterministic, composable file mutations |
309
240
  | CLI | **Commander.js** | Standard, zero-surprise command parsing |
310
- | i18n | **Built-in engine** | Zero-dependency locale switching in 0.01ms |
311
241
 
312
242
  ---
313
243
 
@@ -327,11 +257,10 @@ npx @dotoricode/afd start
327
257
 
328
258
  - **Bun** >= 1.0
329
259
  - **OS**: Windows, macOS, Linux
330
- - **Target**: Claude Code, Cursor (ecosystem auto-detected)
260
+ - **Target**: Claude Code, Cursor, Windsurf, Codex (ecosystem auto-detected)
331
261
 
332
262
  ---
333
263
 
334
264
  ## License
335
265
 
336
266
  MIT
337
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autonomous-flow-daemon",
3
- "version": "1.1.0",
3
+ "version": "1.6.0",
4
4
  "description": "Zero-config immunity for AI coding workflows. Self-heals broken configs in < 270ms.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -26,14 +26,20 @@
26
26
  "dev-tools"
27
27
  ],
28
28
  "scripts": {
29
- "start": "bun run src/cli.ts start",
30
- "dev": "bun run src/cli.ts",
29
+ "dev": "bun --watch src/cli.ts",
30
+ "score": "bun src/cli.ts score",
31
+ "start": "bun src/cli.ts start",
31
32
  "test": "bun test"
32
33
  },
33
34
  "dependencies": {
34
35
  "chokidar": "^4.0.3",
35
36
  "commander": "^13.1.0",
36
- "typescript": "^6.0.2"
37
+ "typescript": "^6.0.2",
38
+ "web-tree-sitter": "^0.26.8"
37
39
  },
38
- "license": "MIT"
40
+ "license": "MIT",
41
+ "optionalDependencies": {
42
+ "tree-sitter-python": "^0.25.0",
43
+ "tree-sitter-typescript": "^0.23.2"
44
+ }
39
45
  }