From 45ae64d0d3c0c9294387df857ae3c710fd841cc1 Mon Sep 17 00:00:00 2001
From: iamtoruk
Date: Thu, 21 May 2026 00:19:38 -0700
Subject: [PATCH] Remove duplicate global aliases, use basename for project
names, clean README
- Remove Warp display-name aliases from BUILTIN_ALIASES (already in warp.ts
local modelAliases, no need to pollute the global namespace)
- sanitizeProject uses basename instead of full-path-with-dashes
- README: revert whitespace noise, keep only Warp-scoped additions
---
README.md | 4 ++--
src/models.ts | 8 --------
src/providers/warp.ts | 2 +-
tests/providers/warp.test.ts | 4 ++--
4 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index 234c5d5..7a15efc 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
-
+
@@ -378,7 +378,7 @@ These are starting points, not verdicts. A 60% cache hit on a single experimenta
**Codex** stores sessions at `~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl` with `token_count` events containing per-call and cumulative token usage, and `function_call` entries for tool tracking.
-**Cursor** stores session data in a SQLite database at `~/Library/Application Support/Cursor/User/globalStorage/state.vscdb` (macOS), `~/.config/Cursor/User/globalStorage/state.vscdb` (Linux), or `%APPDATA%/Cursor/User/globalStorage/state.vscdb` (Windows). Token counts are in `cursorDiskKV` table entries with `bubbleId:` key prefix. Parsed results are cached at `~/.cache/codeburn/cursor-results.json` and auto-invalidate when the database changes.
+**Cursor** stores session data in a SQLite database at `~/Library/Application Support/Cursor/User/globalStorage/state.vscdb` (macOS), `~/.config/Cursor/User/globalStorage/state.vscdb` (Linux), or `%APPDATA%/Cursor/User/globalStorage/state.vscdb` (Windows). Token counts are in `cursorDiskKV` table entries with `bubbleId:` key prefix. Requires `better-sqlite3` (installed as optional dependency). Parsed results are cached at `~/.cache/codeburn/cursor-results.json` and auto-invalidate when the database changes.
**OpenCode** stores sessions in SQLite databases at `~/.local/share/opencode/opencode*.db`. CodeBurn queries the `session`, `message`, and `part` tables read-only, extracts token counts and tool usage, and recalculates cost using the LiteLLM pricing engine. Falls back to OpenCode's own cost field for models not in our pricing data. Subtask sessions (`parent_id IS NOT NULL`) are excluded to avoid double counting. Supports multiple channel databases and respects `XDG_DATA_HOME`.
diff --git a/src/models.ts b/src/models.ts
index 08204c2..bb8235f 100644
--- a/src/models.ts
+++ b/src/models.ts
@@ -173,14 +173,6 @@ const BUILTIN_ALIASES: Record = {
'openclaw-auto': 'claude-sonnet-4-5',
'warp-auto-efficient': 'gpt-5.3-codex',
'warp-auto-powerful': 'claude-opus-4-6',
- 'GPT-5.3 Codex (low reasoning)': 'gpt-5.3-codex',
- 'GPT-5.3 Codex (medium reasoning)': 'gpt-5.3-codex',
- 'GPT-5.3 Codex (high reasoning)': 'gpt-5.3-codex',
- 'GPT-5.3 Codex (extra high reasoning)': 'gpt-5.3-codex',
- 'Claude Sonnet 4.6': 'claude-sonnet-4-6',
- 'Claude Sonnet 4.5': 'claude-sonnet-4-5',
- 'Claude Haiku 4.5': 'claude-haiku-4-5',
- 'Claude Opus 4.6': 'claude-opus-4-6',
'qwen-auto': 'claude-sonnet-4-5',
'kimi-auto': 'kimi-k2-thinking',
'kimi-code': 'kimi-k2-thinking',
diff --git a/src/providers/warp.ts b/src/providers/warp.ts
index 76ff018..b6a9aed 100644
--- a/src/providers/warp.ts
+++ b/src/providers/warp.ts
@@ -73,7 +73,7 @@ type ExchangeToolInfo = {
}
function sanitizeProject(path: string): string {
- return path.replace(/^\/+/, '').replace(/\//g, '-')
+ return path.split('/').filter(Boolean).pop() || path
}
function warpDbPath(bundleId: string): string {
diff --git a/tests/providers/warp.test.ts b/tests/providers/warp.test.ts
index 433a4f0..bca6965 100644
--- a/tests/providers/warp.test.ts
+++ b/tests/providers/warp.test.ts
@@ -204,7 +204,7 @@ skipUnlessSqlite('warp provider', () => {
expect(sessions).toHaveLength(1)
expect(sessions[0]!.provider).toBe('warp')
expect(sessions[0]!.path).toBe(`${dbPath}:conv-1`)
- expect(sessions[0]!.project).toBe('Users-test-project-a')
+ expect(sessions[0]!.project).toBe('project-a')
})
it('parses one call per completed exchange and estimates tokens from primary-agent totals', async () => {
@@ -263,7 +263,7 @@ skipUnlessSqlite('warp provider', () => {
expect(calls.reduce((sum, call) => sum + call.inputTokens, 0)).toBe(300)
expect(calls[1]!.inputTokens).toBeGreaterThan(calls[0]!.inputTokens)
expect(calls[0]!.projectPath).toBe('/Users/test/project-a')
- expect(calls[0]!.project).toBe('Users-test-project-a')
+ expect(calls[0]!.project).toBe('project-a')
})
it('attributes command blocks to the nearest preceding exchange and extracts Bash commands', async () => {