@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.
- package/README.md +41 -12
- package/dist/cli.js +28422 -21360
- package/dist/ui/index.html +25 -25
- 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/
|
|
127
|
-
<
|
|
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"
|
|
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
|
-
|
|
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
|
-
- **
|
|
270
|
-
- **
|
|
271
|
-
|
|
272
|
-
|
|
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
|
|