@unerr-ai/unerr 0.2.11 → 0.2.12

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 (4) hide show
  1. package/README.md +41 -12
  2. package/dist/cli.js +28422 -21360
  3. package/dist/ui/index.html +25 -25
  4. package/package.json +1 -1
package/README.md CHANGED
@@ -50,6 +50,7 @@
50
50
  - [What changes when you use it](#what-changes-when-you-use-it)
51
51
  - [See it in action](#see-it-in-action)
52
52
  - [Quick Start](#quick-start)
53
+ - [Connect your team (optional)](#connect-your-team-optional)
53
54
  - [Who it's for](#who-its-for)
54
55
  - [Why it's one thing and not five plugins](#why-its-one-thing-and-not-five-plugins)
55
56
  - [What it does under the hood](#what-it-does-under-the-hood)
@@ -123,11 +124,16 @@ The demo above is one moment, caught live. Day to day, there are two places you
123
124
  </p>
124
125
 
125
126
  <p align="center">
126
- <img src="https://unerr.dev/open-cli/screenshots/dashboard.png" alt="unerr dashboardlive overview" width="300" />
127
- <br/><sub><strong>Dashboard</strong> · live overviewactive sessions, recent activity, breaks caught.</sub>
127
+ <img src="https://unerr.dev/open-cli/screenshots/token-trace-main.png" alt="unerr token trace where the agent's tokens went, per turn and per task" width="400" />
128
+ <img src="https://unerr.dev/open-cli/screenshots/reasoning-quality.png" alt="unerr reasoning quality answer quality held steady while the token count dropped" width="400" />
129
+ <br/><sub><strong>Token trace & reasoning quality</strong> · where the agent's tokens actually went — and that the answer quality held while the count came down. Cost-per-useful-action, not cost-per-token.</sub>
128
130
  </p>
129
131
 
130
- <p align="center"><sub>More views in the <a href="https://www.unerr.dev/">full dashboard tour</a>.</sub></p>
132
+ <p align="center">
133
+ <img src="https://unerr.dev/open-cli/screenshots/project-memory.png" alt="unerr project memory — anchored notes and facts unerr kept for this repo across sessions" width="400" />
134
+ <img src="https://unerr.dev/open-cli/screenshots/activity.png" alt="unerr activity feed — what unerr caught and surfaced live as the agent worked" width="400" />
135
+ <br/><sub><strong>Memory & activity</strong> · what unerr remembered for this repo across sessions, and a live feed of what it caught and surfaced as the agent worked.</sub>
136
+ </p>
131
137
 
132
138
  ---
133
139
 
@@ -173,6 +179,26 @@ Close and reopen your IDE, or start a new chat session. Your agent picks up uner
173
179
 
174
180
  ---
175
181
 
182
+ ## Connect your team (optional)
183
+
184
+ Everything above works with no account and no network — that never changes. `unerr login` is an optional add-on for teams on a paid plan: it connects this machine to your team, keeps the team's shared conventions in sync, and tells the CLI which plan you're on.
185
+
186
+ ```bash
187
+ unerr login # connect this machine — opens your browser to approve
188
+ unerr whoami # show which team this machine is connected to
189
+ unerr logout # disconnect and delete the local credentials
190
+ ```
191
+
192
+ **What gets sent — and what never does.** The connection carries settings only: the plan you're on, and your team's shared conventions document (plain text someone on your team wrote and chose to share). Your source code, your prompts, and your diffs never leave your machine — the service has no endpoint that accepts them.
193
+
194
+ **Where credentials live.** The token for this machine goes into your OS keychain (Keychain Access on macOS, Secret Service on Linux, Credential Manager on Windows). If no keychain is available, it falls back to `~/.unerr/credentials.json` (readable only by you) and warns you once.
195
+
196
+ **Revoking access.** `unerr logout` disconnects this machine. A team admin can also revoke any machine from the web app under **Settings → Machines** — the token stops working right away, even if the laptop is lost.
197
+
198
+ **Offline behavior.** The CLI caches your plan locally and keeps working without a connection. If it can't reach the service for about a week, it falls back to the free plan until it reconnects — but everything local (the code map, memory, the guards) needs no plan and never stops working.
199
+
200
+ ---
201
+
176
202
  ## Who it's for
177
203
 
178
204
  - **Engineers working in large, existing codebases.** The things a senior engineer keeps in their head — what depends on what, which patterns are load-bearing, what broke here before — handed to the agent before every edit, so it stops breaking code it never read.
@@ -249,12 +275,16 @@ One local DB per repo. Zero network calls. No API keys. No cloud. Your code neve
249
275
 
250
276
  ```bash
251
277
  unerr install <agent> # MCP config + skills + hooks + instructions for one agent
252
- unerr uninstall # Remove unerr from this repo
278
+ unerr uninstall # Remove unerr from this repo (add --strip-annotations to also remove @sem lines)
253
279
  unerr doctor # Check PATH + environment, auto-fix if unerr isn't on all shells
254
280
  unerr status # Process health, entity count, graph age
255
281
  unerr stats # Session statistics (tokens, tool calls, compression)
256
282
  unerr --mcp # Stdio bridge — what your IDE invokes via .mcp.json
257
283
 
284
+ unerr login # Connect this machine to your team (optional, paid plans)
285
+ unerr whoami # Show the connected team and machine
286
+ unerr logout # Disconnect and delete the local credentials
287
+
258
288
  unerr pm status # Process manager: PID, uptime, repos, memory, idle countdown
259
289
  unerr pm logs # Tail ~/.unerr/logs/unerrd.log
260
290
  unerr pm dashboard # Open http://localhost:9847
@@ -262,17 +292,16 @@ unerr pm dashboard # Open http://localhost:9847
262
292
 
263
293
  `unerrd` is a lightweight Node process that supervises every registered repo. Your IDE invocation auto-spawns it; it exits cleanly after 30 minutes of no activity. `unerr pm --help` lists the rest.
264
294
 
265
- ### MCP tools (22)
295
+ No lock-in: any `@sem` domain comments unerr's agent adds are plain comments — your code runs identically without them and without unerr. `unerr uninstall --strip-annotations` removes every sentinel line repo-wide while keeping the prose summaries.
296
+
297
+ ### MCP tools (7 advertised)
266
298
 
267
299
  Grouped by what the agent gets, not by file:
268
300
 
269
- - **Graph intelligence (8)** — `get_entity`, `get_file`, `get_references`, `get_imports`, `search_code`, `get_conventions`, `get_critical_nodes`, `get_cross_boundary_links`.
270
- - **Structural analysis (3)** — `get_project_stats`, `file_connections`, `get_test_coverage`.
271
- - **File protocol (2)** — `file_read` (context-aware, auto-injects conventions and facts), `file_outline` (structure without body).
272
- - **Persistent memory (3)** `unerr_remember` (user-stated facts with verbatim quote + confidence), `record_fact` (agent-detected conventions / decisions / anti-patterns), `recall_facts` (hierarchical scope + decay-adjusted confidence).
273
- - **Session markers (4)** — `mark_intent`, `mark_decision`, `mark_blocker`, `mark_resolution`. Inline as the agent works; powers turn titles and the cross-session resume strip.
274
- - **Web fetch (1)** — `fetch_url` (DOM-extracted markdown, BM25 re-ranking, content-hash cache). Replaces built-in WebFetch.
275
- - **Code review (1)** — `review_changes` (graph-evidenced review of a diff — flags breaking callers, contract drift, duplicate logic).
301
+ - **Reads (6)** — `search_code` (ranked entity search; `detail:true` resolves one entity — signature plus callers / callees / imports in the same call), `file_outline` (structure without body), `file_read` (context-aware, auto-injects conventions, facts, and drift), `get_references` (callers or callees — catches indirect refs grep misses), `fetch_url` (DOM-extracted markdown, BM25 re-ranking, content-hash cache — replaces built-in WebFetch), and `unerr_context` (one call that folds anchored notes + search + references + conventions for what you're about to edit).
302
+ - **Memory & session (1)** — `unerr_track` (one op-union call for intent / decision / blocker / resolution / fact / recall — powers turn titles and the cross-session resume strip).
303
+
304
+ Persistence costs zero tool calls: a UserPromptSubmit hook captures user-stated rules ("remember this", "always X") automatically, and agent notes + session markers ride a `unerr-save:` sentinel in the closing message that a Stop hook scrapes and persists. On Claude Code the rest of the always-on ceremony also runs for free: the prompt hook injects recalled notes, a PostToolUse hook injects detected conventions on the first file read, and the Stop hook prints the turn close-out — all at zero extra round-trip, so the agent never spends a call on them.
276
305
 
277
306
  Every response carries inline `ur|<tag>` signals for high-priority guidance — drift, breaking-change warnings, loop-breaker halts — so the agent acts on what it just learned without burning a turn.
278
307