@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.
Files changed (2) hide show
  1. package/README.md +31 -13
  2. 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, and Pi in one local single-binary
10
- tool. No telemetry, no cloud, no data leaves your machine.
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` (provider-reported usage that
144
- hasn't been reconciled against an upstream invoice).
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/`, etc. for new
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), a working-directory
272
- project, action count, sub-agent action count (when the session
273
- spawned sub-agents via the `Agent` tool), per-session **Tokens** and
274
- **Cost** columns, and — if `observer score` has run — quality / errors
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), not the per-tool
633
- name (`read_file`, `run_command`). The latter is "Tool name" on
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.28",
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.28",
40
- "@superbased/observer-linux-arm64": "1.4.28",
41
- "@superbased/observer-darwin-x64": "1.4.28",
42
- "@superbased/observer-darwin-arm64": "1.4.28",
43
- "@superbased/observer-win32-x64": "1.4.28"
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"