@superbased/observer 1.4.28 → 1.4.30
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 +31 -13
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
**Capture, normalize, compress, and analyze every AI coding tool call you
|
|
8
8
|
run** — across Claude Code, Codex, Cursor, Cline / Roo Code, GitHub
|
|
9
|
-
Copilot, OpenCode, OpenClaw,
|
|
10
|
-
tool. No telemetry, no cloud, no data
|
|
9
|
+
Copilot, OpenCode, OpenClaw, Pi, Google Antigravity, and Gemini CLI —
|
|
10
|
+
in one local single-binary tool. No telemetry, no cloud, no data
|
|
11
|
+
leaves your machine.
|
|
11
12
|
|
|
12
13
|
```
|
|
13
14
|
┌──────────────┐ ┌──────────────────────────────────┐
|
|
@@ -132,6 +133,8 @@ env var that matches your client(s); both can coexist on one machine.
|
|
|
132
133
|
| **OpenCode** ([opencode.ai](https://opencode.ai/)) | (no proxy yet) | SQLite — actual install path is `~/.local/share/opencode/opencode.db` (XDG). Captures **token counts + model + cost** per assistant message from OpenCode's InfoData (`tokens.input/output/reasoning/cache.{read,write}` + `cost`); **subtask** parts → `spawn_subagent` actions; **todo** table → `todo_update` actions; tool-name coverage extended to webfetch/websearch/task/todowrite/todoread/multiedit. Tagged `Source=jsonl, Reliability=approximate`. |
|
|
133
134
|
| **OpenClaw** ([openclaw.ai](https://openclaw.ai/)) | (no proxy yet) | JSONL + sqlite — `~/.openclaw/tasks/runs.sqlite` + `~/.openclaw/agents/<agent>/sessions/sessions.json` |
|
|
134
135
|
| **Pi** ([pi.dev](https://pi.dev/)) | (no proxy yet) | JSONL — `~/.pi/agent/sessions/--<path>--/*.jsonl` (per upstream `docs/session-format.md` v3). Captures user / assistant / toolResult / `bashExecution` message roles; `usage.cost.total` → per-message USD; terminal `stopReason` (stop/length/error/aborted) → `task_complete` with `success=false` for failures (mid-turn `toolUse` is correctly skipped); `thinking` blocks surface as preceding reasoning. Tagged `Source=jsonl, Reliability=approximate`. |
|
|
136
|
+
| **Google Antigravity** | (no proxy yet) | Encrypted protobuf — `~/.gemini/antigravity/conversations/*.pb` (Linux-native) and the matching Windows-side path on WSL2. Observer ships a per-OS Chromium-pattern `oscrypt` key fetcher (macOS Keychain / libsecret / DPAPI / WSL2-via-PowerShell helper) and a multi-cipher try-loop for local decryption. Sessions whose ciphers don't validate locally fall back to the language_server's `GetCascadeTrajectory` gRPC endpoint via a built-in helper (`antigravity-bridge.exe` on WSL2 / native gRPC elsewhere) — extracts model + per-turn token counts + Tier 0–6 ToolEvents (file views, artifact edits/writes, user prompts, assistant text, run_command terminal snapshots, structured plan steps, final summaries). State index + per-conversation title/workspace URI read from `state.vscdb` + `state.vscdb.backup`. Tagged `Source=jsonl, Reliability=approximate`. |
|
|
137
|
+
| **Gemini CLI** | (no proxy yet) | JSONL or single-object JSON — `~/.gemini/tmp/<hash>/chats/session-*.{json,jsonl}`. Dual-format dispatch: legacy single-object JSON (size-based cursor, cline-style) and proposed JSONL event records (byte-offset cursor, issue [#15292](https://github.com/google-gemini/gemini-cli/issues/15292)). Action mapping covers `read_file` / `write_file` / `edit_file` / `run_command` / `search_files` / `web_fetch` and arbitrary MCP tool calls. Project root falls back through tool-call `cwd` → `~/.gemini/history/<hash>/.git/config` worktree pointer → synthetic `[gemini-cli:<hash>]` key (promoted via ON CONFLICT DO UPDATE on `sessions.project_id` once a future scan supplies a real cwd). Tagged `Source=jsonl, Reliability=approximate`. |
|
|
135
138
|
|
|
136
139
|
**JSONL-only** clients are captured passively by the watcher (always-on,
|
|
137
140
|
no setup beyond `observer init`). You won't see real-time cost numbers
|
|
@@ -140,8 +143,9 @@ call shows up on Sessions / Actions / Discovery / Tools / Patterns and
|
|
|
140
143
|
the JSONL-derived token counts feed the Cost tab. Reliability tagging
|
|
141
144
|
is per-adapter: Claude Code emits `unreliable` (the JSONL stream uses
|
|
142
145
|
streaming-time placeholder counts per spec §24); Codex / Cline / Pi /
|
|
143
|
-
OpenCode / OpenClaw emit `approximate`
|
|
144
|
-
hasn't been reconciled against an
|
|
146
|
+
OpenCode / OpenClaw / Antigravity / Gemini CLI emit `approximate`
|
|
147
|
+
(provider-reported usage that hasn't been reconciled against an
|
|
148
|
+
upstream invoice).
|
|
145
149
|
|
|
146
150
|
### Persistent setups
|
|
147
151
|
|
|
@@ -175,12 +179,26 @@ Five components running side by side:
|
|
|
175
179
|
|
|
176
180
|
### 1. JSONL adapters (passive ingest)
|
|
177
181
|
|
|
178
|
-
Watch `~/.claude/projects/`, `~/.codex/sessions/`,
|
|
182
|
+
Watch `~/.claude/projects/`, `~/.codex/sessions/`,
|
|
183
|
+
`~/.gemini/tmp/.../chats/`, `~/.gemini/antigravity/conversations/`
|
|
184
|
+
(and the matching Antigravity index `state.vscdb`), etc. for new
|
|
179
185
|
session log lines. Normalize per-client tool names to a shared
|
|
180
186
|
taxonomy (`read_file`, `run_command`, `spawn_subagent`, …) and write
|
|
181
187
|
them into the actions table. **Always-on**, no setup required —
|
|
182
188
|
`observer init` registers the hooks once.
|
|
183
189
|
|
|
190
|
+
For Antigravity (which stores conversations as encrypted protobufs),
|
|
191
|
+
observer ships a per-OS `oscrypt` key fetcher (Chromium Safe Storage
|
|
192
|
+
pattern: macOS Keychain / Linux libsecret + peanuts fallback / Windows
|
|
193
|
+
DPAPI / WSL2-via-PowerShell helper) plus a `language_server`-aware
|
|
194
|
+
gRPC fallback that calls `GetCascadeTrajectory` through the bundled
|
|
195
|
+
`antigravity-bridge.exe` when local decryption can't validate the
|
|
196
|
+
ciphertext. Tier 0–6 ToolEvents (file views, artifact edits/writes,
|
|
197
|
+
user prompts, assistant text, run_command terminal snapshots,
|
|
198
|
+
structured plan steps, final summaries) are extracted from the
|
|
199
|
+
trajectory's wire format without committing to specific .proto field
|
|
200
|
+
numbers.
|
|
201
|
+
|
|
184
202
|
What this gets you: every tool call you've ever run, queryable.
|
|
185
203
|
|
|
186
204
|
### 2. API reverse proxy (active capture)
|
|
@@ -268,11 +286,11 @@ in the help drawer.
|
|
|
268
286
|
### Sessions tab
|
|
269
287
|
|
|
270
288
|
One row per AI-coding session. Each session has a stable ID, a tool
|
|
271
|
-
(claude-code / cursor / codex / cline / copilot
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
**Cost** columns, and —
|
|
275
|
-
/ redundancy ratios. The `~` suffix on Cost flags rows whose pricing
|
|
289
|
+
(claude-code / cursor / codex / cline / copilot / opencode / openclaw /
|
|
290
|
+
pi / antigravity / gemini-cli), a working-directory project, action
|
|
291
|
+
count, sub-agent action count (when the session spawned sub-agents via
|
|
292
|
+
the `Agent` tool), per-session **Tokens** and **Cost** columns, and —
|
|
293
|
+
if `observer score` has run — quality / errors / redundancy ratios. The `~` suffix on Cost flags rows whose pricing
|
|
276
294
|
was tier-fallback rather than billing-grade ("accurate" reliability).
|
|
277
295
|
|
|
278
296
|
Click a row to open the session-detail modal:
|
|
@@ -629,9 +647,9 @@ dashboard) has the full versions with cross-links.
|
|
|
629
647
|
changed between reads. Cross-session reads are excluded (a fresh
|
|
630
648
|
session has no memory of a prior session's read).
|
|
631
649
|
- **Tool** — in this dashboard, "tool" means the *AI client*
|
|
632
|
-
(claude-code, cursor, codex, cline, copilot
|
|
633
|
-
|
|
634
|
-
the Actions tab.
|
|
650
|
+
(claude-code, cursor, codex, cline, copilot, opencode, openclaw,
|
|
651
|
+
pi, antigravity, gemini-cli), not the per-tool name (`read_file`,
|
|
652
|
+
`run_command`). The latter is "Tool name" on the Actions tab.
|
|
635
653
|
- **Tool-pair integrity** — Anthropic requires every `tool_result`
|
|
636
654
|
block to have a corresponding `tool_use` block in a preceding
|
|
637
655
|
message. The compression pipeline preserves both sides of every
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superbased/observer",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.30",
|
|
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.4.
|
|
40
|
-
"@superbased/observer-linux-arm64": "1.4.
|
|
41
|
-
"@superbased/observer-darwin-x64": "1.4.
|
|
42
|
-
"@superbased/observer-darwin-arm64": "1.4.
|
|
43
|
-
"@superbased/observer-win32-x64": "1.4.
|
|
39
|
+
"@superbased/observer-linux-x64": "1.4.30",
|
|
40
|
+
"@superbased/observer-linux-arm64": "1.4.30",
|
|
41
|
+
"@superbased/observer-darwin-x64": "1.4.30",
|
|
42
|
+
"@superbased/observer-darwin-arm64": "1.4.30",
|
|
43
|
+
"@superbased/observer-win32-x64": "1.4.30"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"test": "node bin/observer.js --version"
|