@superbased/observer 1.25.0 → 1.27.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
@@ -10,11 +10,12 @@
10
10
  **Claude Code cost tracking. Cursor token usage. Codex spend.
11
11
  AI coding agent observability — one local tool, proxy-accurate.**
12
12
  SuperBased captures, normalizes, and analyzes every AI
13
- coding tool call across **26 adapters** — Claude Code, Codex, Cursor,
13
+ coding tool call across **29 adapters** — Claude Code, Codex, Cursor,
14
14
  Cline + Cline CLI, GitHub Copilot (VS Code) + Copilot CLI, Gemini CLI,
15
15
  OpenCode, Google Antigravity, Cowork, Nous Research's Hermes Agent,
16
16
  Kilo Code (legacy IDE extension + CLI), Aider, Goose, Devin, OpenClaw,
17
- Pi, and more in one local single-binary tool. An optional API proxy
17
+ Pi, Factory Droid, Open Interpreter, Command Code, and more in one
18
+ local single-binary tool. An optional API proxy
18
19
  reconciles the *exact* tokens your provider billed (net input, cache
19
20
  5m/1h splits, reasoning tokens, long-context surcharges) instead of a
20
21
  JSONL-derived estimate. No telemetry, no cloud, no data leaves your
@@ -41,6 +42,7 @@ the full two-plane explainer.
41
42
  - [Per-AI-client setup](#per-ai-client-setup)
42
43
  - [Architecture in detail](#architecture-in-detail)
43
44
  - [Dashboard tour](#dashboard-tour)
45
+ - [Terminals — launch, join, and track your AI CLIs](#terminals--launch-join-and-track-your-ai-clis)
44
46
  - [MCP tools reference](#mcp-tools-reference)
45
47
  - [Compression mechanisms](#compression-mechanisms)
46
48
  - [Cost and token math](#cost-and-token-math)
@@ -719,6 +721,127 @@ Each compression mechanism (json / code / logs / text / diff / html
719
721
  explaining the actual algorithm.
720
722
 
721
723
 
724
+ ## Terminals — launch, join, and track your AI CLIs
725
+
726
+ The dashboard is also a terminal host. Instead of tracking your AI
727
+ CLIs from the outside, you can launch them *inside* observer, watch
728
+ their live telemetry alongside the session they produce, and — new in
729
+ v1.25.0 — join a running one from a second browser tab. The terminal
730
+ surfaces are read-only where they touch your files and single-writer
731
+ where they touch your keyboard; nothing here mutates a repo or lets
732
+ two people type at once.
733
+
734
+ ### Launch any supported AI CLI as a real terminal
735
+
736
+ Twenty-two CLI launchers — claude, codex, opencode, cursor, copilot-cli,
737
+ kilo, cline-cli, hermes, gemini, openclaw, pi, antigravity, qwen,
738
+ kiro, grok, kimi, devin, qoder, goose, droid, open-interpreter,
739
+ command-code — start from the dashboard's
740
+ **Launch here** control or from the command line as `observer <verb>`
741
+ (`observer claude`, `observer codex`, and so on). Each opens a **real
742
+ PTY** — a native pseudo-terminal on Linux and macOS, and a native
743
+ ConPTY on Windows 10 1809+ and Windows 11 (no WSL required). If the
744
+ tool's binary isn't on your `$PATH`, the launcher offers a guided
745
+ one-click install rather than failing. Dashboard launching is gated by
746
+ `[handoff].allow_dashboard_launch` (default `true`).
747
+
748
+ (The count is twenty-two *launchers*, not the adapter count — observer
749
+ tracks 29 adapters in total, but only these twenty-two ship a
750
+ first-class terminal launcher.)
751
+
752
+ ### Attach-by-default
753
+
754
+ As of v1.25.0, `observer <verb>` runs the child **daemon-owned** so the
755
+ dashboard can join it, while the native terminal you launched from stays
756
+ fully interactive as seat #1 — you lose nothing by getting the extra
757
+ reach. Opt out per-run with `--no-attach`, or globally with
758
+ `[terminal.attach].default_on = false`; scripted or piped runs never
759
+ attach.
760
+
761
+ A daemon-owned child forwards more than the routing above: it also
762
+ carries over your shell's values for each tool's
763
+ registry-documented credential env keys — `ANTHROPIC_API_KEY` for
764
+ claude-code, `OPENAI_API_KEY` for codex and pi, `OPENROUTER_API_KEY`
765
+ for hermes, `XAI_API_KEY` for grok, `GEMINI_API_KEY`/`GOOGLE_API_KEY`
766
+ for gemini-cli, `COPILOT_PROVIDER_API_KEY` for copilot-cli, and others
767
+ with registry-documented key envs — so a shell-exported API key works
768
+ under attach exactly as it would bare. This is gated by
769
+ `[terminal.attach].forward_auth_env` (default `true`); values transit
770
+ the owner-only attach socket once per launch and are never logged or
771
+ persisted. One honest caveat remains: tools without a registry-documented
772
+ credential env (config-file, OAuth, or keychain auth) still see only
773
+ the **daemon's** environment, and dashboard-launched terminals always
774
+ do (there's no client shell to forward from) — for those, either
775
+ export the credential where `observer start` runs, or use
776
+ `--no-attach` to keep the child in your shell's environment.
777
+
778
+ ### Jump in — multi-seat terminals
779
+
780
+ Every live daemon-owned run is joinable from any dashboard tab, whether
781
+ that tab is local or a paired remote device, as an extra seat. A
782
+ terminal holds up to **8 viewers** but exactly **one writer** at a time.
783
+ The writer lease moves seamlessly across the native terminal, a local
784
+ dashboard tab, and a remote dashboard tab — type into the native
785
+ terminal to reclaim it; an authenticated remote can take over with a
786
+ read-only fallback and a take-back for the seat it displaced. A freshly
787
+ launched run correlates to its observer session in roughly 10–30
788
+ seconds, after which its live telemetry lines up with the captured data.
789
+
790
+ ### Per-terminal Files & Git panels
791
+
792
+ Each AI-tool terminal carries a read-only **Files** panel — a file tree
793
+ plus a text viewer rooted at that terminal's project root — and a
794
+ read-only **Git** panel showing branch, upstream, ahead/behind counts,
795
+ working-tree status, and a 100-commit log. Right-click to copy a path or
796
+ paste it into a live terminal. This is a read-only view in v1: no file
797
+ mutations, no diff view.
798
+
799
+ ### Session Cockpit
800
+
801
+ Toggle the **⊙ Session** control on any AI-tool terminal for a
802
+ draggable, live panel of everything observer knows about that run:
803
+
804
+ - **Last activity** and **tokens/sec**, tagged with a measured-vs-
805
+ estimated badge
806
+ - **Live cost** with the AI-vs-tool split, plus the **next-message
807
+ cost band**
808
+ - **Context fill** against the model's context budget, and — for
809
+ proxy-routed sessions — the **5h / 7d rate-limit gauge**
810
+ - **Prompt-cache expiry chips** for the caches this session is keeping
811
+ warm
812
+ - **CPU / memory / disk sparklines** and the spawned-process tree for
813
+ the terminal
814
+ - The **last five turns**, each deep-linked into the full session
815
+ detail view
816
+
817
+ ### Workspace grid
818
+
819
+ Run up to **9 concurrent tiles** (`[terminal].max_concurrent`),
820
+ drag and resize them, and your layout persists across reloads. On a
821
+ paired remote device the grid is read-only.
822
+
823
+ ### Restarts & continuity
824
+
825
+ Twenty-one of the twenty-two launchers **auto-resume the same
826
+ transcript** after a daemon restart — a verified native resume, so the
827
+ conversation continues where it left off. openclaw is the sole holdout:
828
+ its resume is picker-only, so its attached session ends when the daemon
829
+ restarts. To pick any session back up — including openclaw's — fork it
830
+ with `observer <verb> --continue-from <session-id>`. That opens a new
831
+ session id and seeds a distilled handover of the prior session as its
832
+ first prompt — it works for all twenty-two launchers.
833
+
834
+ ### Remote posture
835
+
836
+ Remote terminal access is opt-in, **tailnet-only** (served over your
837
+ private Tailscale network as private HTTPS), and off by default — there
838
+ is no public-internet exposure. It splits into a view tier and an
839
+ execute tier: `[remote].allow_terminal` (default `false`) governs remote
840
+ *keyboard* control, while `[remote].allow_terminal_view` (default
841
+ `true`) governs read-only viewing. Pairing is phone-first via QR code,
842
+ and the dashboard is mobile-friendly for checking in from a phone.
843
+
844
+
722
845
  ## MCP tools reference
723
846
 
724
847
  Once you've run `observer init` (it's opt-in — `observer start`
@@ -10,11 +10,12 @@
10
10
  **Claude Code cost tracking. Cursor token usage. Codex spend.
11
11
  AI coding agent observability — one local tool, proxy-accurate.**
12
12
  SuperBased captures, normalizes, and analyzes every AI
13
- coding tool call across **26 adapters** — Claude Code, Codex, Cursor,
13
+ coding tool call across **29 adapters** — Claude Code, Codex, Cursor,
14
14
  Cline + Cline CLI, GitHub Copilot (VS Code) + Copilot CLI, Gemini CLI,
15
15
  OpenCode, Google Antigravity, Cowork, Nous Research's Hermes Agent,
16
16
  Kilo Code (legacy IDE extension + CLI), Aider, Goose, Devin, OpenClaw,
17
- Pi, and more in one local single-binary tool. An optional API proxy
17
+ Pi, Factory Droid, Open Interpreter, Command Code, and more in one
18
+ local single-binary tool. An optional API proxy
18
19
  reconciles the *exact* tokens your provider billed (net input, cache
19
20
  5m/1h splits, reasoning tokens, long-context surcharges) instead of a
20
21
  JSONL-derived estimate. No telemetry, no cloud, no data leaves your
@@ -41,6 +42,7 @@ the full two-plane explainer.
41
42
  - [Per-AI-client setup](#per-ai-client-setup)
42
43
  - [Architecture in detail](#architecture-in-detail)
43
44
  - [Dashboard tour](#dashboard-tour)
45
+ - [Terminals — launch, join, and track your AI CLIs](#terminals--launch-join-and-track-your-ai-clis)
44
46
  - [MCP tools reference](#mcp-tools-reference)
45
47
  - [Compression mechanisms](#compression-mechanisms)
46
48
  - [Cost and token math](#cost-and-token-math)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@superbased/observer",
3
- "version": "1.25.0",
4
- "description": "Claude Code cost tracking, Cursor token usage, Codex spend — AI coding agent observability across 26 adapters, proxy-accurate token counts and cost.",
3
+ "version": "1.27.0",
4
+ "description": "Claude Code cost tracking, Cursor token usage, Codex spend — AI coding agent observability across 29 adapters, proxy-accurate token counts and cost.",
5
5
  "keywords": [
6
6
  "ai",
7
7
  "observability",
@@ -42,11 +42,11 @@
42
42
  "LICENSE"
43
43
  ],
44
44
  "optionalDependencies": {
45
- "@superbased/observer-linux-x64": "1.25.0",
46
- "@superbased/observer-linux-arm64": "1.25.0",
47
- "@superbased/observer-darwin-x64": "1.25.0",
48
- "@superbased/observer-darwin-arm64": "1.25.0",
49
- "@superbased/observer-win32-x64": "1.25.0"
45
+ "@superbased/observer-linux-x64": "1.27.0",
46
+ "@superbased/observer-linux-arm64": "1.27.0",
47
+ "@superbased/observer-darwin-x64": "1.27.0",
48
+ "@superbased/observer-darwin-arm64": "1.27.0",
49
+ "@superbased/observer-win32-x64": "1.27.0"
50
50
  },
51
51
  "scripts": {
52
52
  "test": "node bin/observer.js --version"