@superbased/observer 1.10.0 → 1.12.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.
package/README.md CHANGED
@@ -8,9 +8,10 @@
8
8
  **Homepage:** [https://superbased.app/](https://superbased.app/)
9
9
 
10
10
  **Capture, normalize, compress, and analyze every AI coding tool call you
11
- run** — across Claude Code, Codex, Cursor, Cline / Roo Code, GitHub
12
- Copilot (VS Code), GitHub Copilot CLI, OpenCode, OpenClaw, Pi, Google
13
- Antigravity, Gemini CLI, and Cowork in one local single-binary tool.
11
+ run** — across Claude Code, Codex, Cursor, Cline / Roo Code + Cline CLI,
12
+ GitHub Copilot (VS Code), GitHub Copilot CLI, OpenCode, OpenClaw, Pi,
13
+ Google Antigravity, Gemini CLI, Cowork, Nous Research's Hermes Agent, and
14
+ Kilo Code (legacy IDE extension + CLI) — in one local single-binary tool.
14
15
  No telemetry, no cloud, no data leaves your machine.
15
16
 
16
17
  <p align="center">
@@ -264,21 +265,28 @@ Pure-Go via `modernc.org/sqlite`, no CGO. WAL mode by default.
264
265
 
265
266
  ### 4. Local dashboard (`:8081`)
266
267
 
267
- Fifteen tabs in four groups — Monitor (Overview, Live, Sessions,
268
- Actions, Search), Analyze (Cost, Analysis, Tools), Optimize
269
- (Compression, Cache, Suggestions, Discovery, Patterns), Configure
270
- (Privacy, Settings). See [Dashboard tour](#dashboard-tour).
268
+ Eighteen tabs in four groups — Monitor (Overview, Live, Sessions,
269
+ Actions, Trajectories, Evals, Security, Search), Analyze (Cost,
270
+ Analysis, Tools), Optimize (Compression, Cache, Suggestions,
271
+ Discovery, Patterns), Configure (Privacy, Settings). See
272
+ [Dashboard tour](#dashboard-tour).
271
273
 
272
- Static HTML + Chart.js. No analytics, no external requests.
274
+ A React + TypeScript single-page app (Vite build, Recharts charts),
275
+ embedded in the binary and served locally. No analytics, no external
276
+ requests.
273
277
 
274
278
  ### 5. MCP server (stdio) — opt-in via `observer init`
275
279
 
276
- 13 read-only tools the AI client itself can call mid-conversation —
280
+ 19 read-only tools the AI client itself can call mid-conversation —
277
281
  `check_file_freshness`, `get_last_test_result`, `search_past_outputs`,
278
- etc. (plus `retrieve_stashed` when the proxy stash is configured).
282
+ `search_symbols`, etc. (plus `retrieve_stashed` when the proxy stash
283
+ is configured).
279
284
  Powers cross-client tool sharing: if Claude Code ran `go test`,
280
285
  Cursor's MCP query for the latest test result will return Claude
281
- Code's run. See [MCP tools reference](#mcp-tools-reference).
286
+ Code's run. The code-aware tools (`get_symbols`, `get_relations`,
287
+ `search_symbols`) are backed by a native, CGO-free code-intelligence
288
+ engine (tree-sitter via wasm) that indexes your repo locally. See
289
+ [MCP tools reference](#mcp-tools-reference).
282
290
 
283
291
  **Lifecycle**: the MCP server is a stdio subprocess spawned by your
284
292
  AI tool — not by the observer daemon. It's registered into each AI
@@ -293,9 +301,10 @@ running `init`.
293
301
 
294
302
  `observer start` opens the dashboard automatically on interactive
295
303
  launches (suppress with `--no-open`; the URL is also printed —
296
- `http://127.0.0.1:8081/` by default). Fifteen tabs in four nav groups
304
+ `http://127.0.0.1:8081/` by default). Eighteen tabs in four nav groups
297
305
  (Monitor / Analyze / Optimize / Configure) — the tour below covers the
298
306
  core surfaces; Live (recent sessions with a real-time action feed),
307
+ Trajectories + Evals (OTLP trace/span capture for your own agents),
299
308
  Search (full-text over captured tool outputs), and Privacy (capture
300
309
  map + scrub tester) are self-explanatory once you're in. On an empty
301
310
  database the Overview tab leads with a three-step onboarding
@@ -365,7 +374,7 @@ the tiles: a daily-spend stacked bar with Model / Project / Tool
365
374
  dimension toggle, hour-of-day heatmap, top-12 expensive sessions
366
375
  with explanatory badges (`opus`, `lc_tier`, `many_turns`,
367
376
  `large_prompt`), period-over-period movers (top increases / decreases
368
- / new entrants), and routing-efficiency suggestions (trivial Opus
377
+ / new entrants), and model right-sizing hints (trivial Opus
369
378
  sessions that could have used Sonnet).
370
379
 
371
380
  ### Sessions tab
@@ -536,7 +545,7 @@ recommendations. **On by default** and entirely local: detectors are
536
545
  pure reads over data the observer already stores, recomputed fresh on
537
546
  every view — zero LLM calls, zero network.
538
547
 
539
- Twenty detectors across four categories:
548
+ Nineteen detectors across four categories:
540
549
 
541
550
  - **cost** — session balloons (one session's context growth dominating
542
551
  spend), idle re-cache (cache rewrites after idle gaps), long-context
@@ -544,10 +553,7 @@ Twenty detectors across four categories:
544
553
  cache-write waste, prefix thrash, read-heavy sessions on expensive
545
554
  models, effort overprovisioning, cross-session stale reads,
546
555
  web-search spend, spend spikes ("today is 3× your daily average" —
547
- the while-it's-still-happening check, linking to the Live view),
548
- routing evidence ready (the advise shadow met its promotion gate
549
- with routing still not enforcing — linking to the Shadow card,
550
- which owns the evidence and the consent-gated promote).
556
+ the while-it's-still-happening check, linking to the Live view).
551
557
  - **latency** — fast-tier premium (sessions that paid the 2× fast-tier
552
558
  rate without needing it).
553
559
  - **quality** — unrecovered failures, quality regressions.
@@ -626,21 +632,6 @@ suggested from your own observed spend with a daily burn-down meter,
626
632
  MCP pin approvals, and one-click **compliance evidence** downloads
627
633
  (report / JSONL / CEF / audit verification).
628
634
 
629
- ### Routing tab
630
-
631
- Model routing's transparency + adoption surface. While routing is
632
- off, a **Preview savings** card replays your last 30 days under any
633
- policy template — read-only, nothing enabled. Once advise mode runs,
634
- the page shows the decisions feed (every decision expandable to its
635
- matched rule, reason codes, and cache economics), savings with CI95
636
- error bars, the expanded policy rule table (never a black box,
637
- demoted rules marked), the tier map with calibration overlays, the
638
- model health board, and the **advise-shadow readiness ladder** with
639
- its consent-gated promote control. The **Apply to tools** card turns
640
- observed sub-agent evidence into per-tool native config — dry-run
641
- preview, one consent per file write, backups + per-file revert, and
642
- an append-only audit ledger of everything observer changed.
643
-
644
635
  ### Settings tab
645
636
 
646
637
  <p align="center">
@@ -699,7 +690,7 @@ explaining the actual algorithm.
699
690
 
700
691
  Once you've run `observer init` (it's opt-in — `observer start`
701
692
  alone does NOT register the MCP server), every connected AI client
702
- gets these 13 tools registered as an MCP server — plus
693
+ gets these 19 tools registered as an MCP server — plus
703
694
  `retrieve_stashed` when the proxy stash is configured. They're
704
695
  **read-only** queries against the unified database, so any agent
705
696
  can read any other agent's recorded work — true cross-platform
@@ -720,6 +711,12 @@ tool-call sharing.
720
711
  | `get_cost_summary` | Daily / per-model / per-session cost rollups |
721
712
  | `get_redundancy_report` | Stale rereads, repeated commands, cross-tool overlap for the project |
722
713
  | `list_actions_around` | ±N actions adjacent to a pivot `action_id` — browse a session's local timeline cheaply |
714
+ | `get_file` | The file's current bytes (or at a given commit), with a path-safety gate + audit |
715
+ | `get_symbols` | Resolve a symbol name + range to its file path + body (codeintel-backed) |
716
+ | `get_relations` | Codeintel BFS — who calls / is called by this symbol |
717
+ | `search_symbols` | Fuzzy symbol search across the project's codeintel index (Tier-C) |
718
+ | `cache_status` | Live prompt-cache health: which caches are warm, expiring, or cold, with value-at-risk |
719
+ | `get_model_recommendation` | Evidence-backed model suggestion per turn-kind, from the local Model Value Report |
723
720
  | `retrieve_stashed` _(conditional)_| Pulls original bytes of a tool_result the proxy compressed away. Only registered when `[compression.conversation].stash` is configured. |
724
721
 
725
722
  **Cost trade-off**: with the MCP registered, the AI client sends the
@@ -1035,54 +1032,6 @@ Full references:
1035
1032
  [guard-compliance.md](https://github.com/marmutapp/superbased-observer/blob/main/docs/guard-compliance.md)
1036
1033
  (SOC 2 / NIST mapping).
1037
1034
 
1038
- ## Model routing
1039
-
1040
- The routing layer selects the right model for each KIND of work —
1041
- from your own observed evidence, never a brochure — through two
1042
- channels: **A** writes each AI tool's own config (claude-code
1043
- per-subagent `model:` frontmatter — dry-run first, backed up,
1044
- revertable, audit-ledgered; other tools get exact paste-able
1045
- snippets), and **B** rewrites the `model` field on requests already
1046
- transiting the proxy. It is **opt-in, advise-first, and fail-open
1047
- everywhere**: a routing failure can never break a turn that would
1048
- have succeeded.
1049
-
1050
- The adoption ladder is deliberate, and every step has a dashboard
1051
- surface: **preview** what a policy would have saved over your last 30
1052
- days while routing is still off (a read-only replay of recorded
1053
- turns) → enable **advise** (decision rows accrue; requests untouched)
1054
- → read the **shadow** (the §R22 readiness ladder: enough decisions,
1055
- real net savings after cache forfeits, zero quality flags) →
1056
- **promote** to enforce through a consent dialog that restates the
1057
- evidence — and warns loudly when the gate is not met. Enforce
1058
- rewrites within the same provider shape only, holds switches that
1059
- would forfeit a warm prompt cache worth more than they save, and
1060
- auto-demotes any rule whose downshifts grade as regressing
1061
- (loudly, never silently). Custom `[[routing.rules]]` are editable in
1062
- a lint-gated dashboard editor with a worked recipe gallery in the
1063
- docs.
1064
-
1065
- Privacy posture: decision rows and calibration are **node-local**
1066
- (never pushed to an org server); org-distributed policy fragments are
1067
- signed and structurally cannot flip your enforce switch — **no remote
1068
- enforce toggle exists, by design**.
1069
-
1070
- Quick start:
1071
-
1072
- ```
1073
- # Preview before enabling anything (CLI twin of the dashboard card):
1074
- observer routing simulate --policy value --days 30
1075
- # Then: dashboard → Routing → Preview savings → Enable advise mode.
1076
- observer routing shadow # the promotion evidence, any time
1077
- observer routing apply --tool claude-code # Channel A, dry-run default
1078
- ```
1079
-
1080
- Full reference:
1081
- [model-routing.md](https://github.com/marmutapp/superbased-observer/blob/main/docs/model-routing.md)
1082
- (operator guide + the first-30-days runbook + the rules recipe
1083
- gallery).
1084
-
1085
-
1086
1035
  ## Terminology and glossary
1087
1036
 
1088
1037
  Quick reference; the in-platform help drawer (press `?` on the
@@ -1111,7 +1060,7 @@ dashboard) has the full versions with cross-links.
1111
1060
  bodies. Pass 1 = per-content-type compression, Pass 2 = drop with
1112
1061
  marker. See [Compression mechanisms](#compression-mechanisms).
1113
1062
  - **Cross-platform tool calling** — every AI client connected via
1114
- `observer init` can call the 12 MCP tools against the unified
1063
+ `observer init` can call the 19 MCP tools against the unified
1115
1064
  database. So Cursor's `get_last_test_result` can return a `go test`
1116
1065
  Claude Code ran an hour earlier.
1117
1066
  - **Cross-thread reread** — the parent thread re-reads a file the
@@ -1387,7 +1336,7 @@ handler, dashboard, MCP server, and CLI never make an outbound network
1387
1336
  call on observer's behalf. The only code paths that touch the network
1388
1337
  are the optional API proxy (which forwards **your** requests unchanged
1389
1338
  to the AI provider you already use) and a handful of explicit opt-in
1390
- features (message-summary LLM, codegraph MCP, Teams org-server).
1339
+ features (message-summary LLM, codeintel MCP, Teams org-server).
1391
1340
 
1392
1341
  The full privacy statement — what observer stores, what it reads,
1393
1342
  what it never stores, the explicit list of outbound-network call sites
@@ -8,9 +8,10 @@
8
8
  **Homepage:** [https://superbased.app/](https://superbased.app/)
9
9
 
10
10
  **Capture, normalize, compress, and analyze every AI coding tool call you
11
- run** — across Claude Code, Codex, Cursor, Cline / Roo Code, GitHub
12
- Copilot (VS Code), GitHub Copilot CLI, OpenCode, OpenClaw, Pi, Google
13
- Antigravity, Gemini CLI, and Cowork in one local single-binary tool.
11
+ run** — across Claude Code, Codex, Cursor, Cline / Roo Code + Cline CLI,
12
+ GitHub Copilot (VS Code), GitHub Copilot CLI, OpenCode, OpenClaw, Pi,
13
+ Google Antigravity, Gemini CLI, Cowork, Nous Research's Hermes Agent, and
14
+ Kilo Code (legacy IDE extension + CLI) — in one local single-binary tool.
14
15
  No telemetry, no cloud, no data leaves your machine.
15
16
 
16
17
  <p align="center">
@@ -263,7 +264,7 @@ handler, dashboard, MCP server, and CLI never make an outbound network
263
264
  call on observer's behalf. The only code paths that touch the network
264
265
  are the optional API proxy (which forwards **your** requests unchanged
265
266
  to the AI provider you already use) and a handful of explicit opt-in
266
- features (message-summary LLM, codegraph MCP, Teams org-server).
267
+ features (message-summary LLM, codeintel MCP, Teams org-server).
267
268
 
268
269
  The full privacy statement — what observer stores, what it reads,
269
270
  what it never stores, the explicit list of outbound-network call sites
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superbased/observer",
3
- "version": "1.10.0",
3
+ "version": "1.12.0",
4
4
  "description": "SuperBased Observer — capture, normalize, compress, and analyze AI coding tool activity across Claude Code, Codex, Cursor, Cline/Roo, and Copilot.",
5
5
  "keywords": [
6
6
  "ai",
@@ -36,11 +36,11 @@
36
36
  "LICENSE"
37
37
  ],
38
38
  "optionalDependencies": {
39
- "@superbased/observer-linux-x64": "1.10.0",
40
- "@superbased/observer-linux-arm64": "1.10.0",
41
- "@superbased/observer-darwin-x64": "1.10.0",
42
- "@superbased/observer-darwin-arm64": "1.10.0",
43
- "@superbased/observer-win32-x64": "1.10.0"
39
+ "@superbased/observer-linux-x64": "1.12.0",
40
+ "@superbased/observer-linux-arm64": "1.12.0",
41
+ "@superbased/observer-darwin-x64": "1.12.0",
42
+ "@superbased/observer-darwin-arm64": "1.12.0",
43
+ "@superbased/observer-win32-x64": "1.12.0"
44
44
  },
45
45
  "scripts": {
46
46
  "test": "node bin/observer.js --version"