Free, local tool to track AI coding token usage and cost across 31 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn
This report presents the forensic synthetic code analysis of getagentseal/codeburn, a TypeScript project with 8,653 GitHub stars. SynthScan v2.0 examined 104,403 lines of code across 396 source files, recording 251 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 4.3 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 251 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/parser-claude-cwd.test.ts | 325 | // ── Helpers for Cowork local-agent-mode session fixtures ──────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 20 | // ── Synthetic provider state ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 72 | // ── OTel DB helpers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 137 | // ── Copilot JSONL helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 155 | // ── Helpers ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 172 | // ── Common env setup ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 199 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 201 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 230 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 232 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 269 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 271 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 297 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 299 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 347 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 349 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser-proxy-pricing.test.ts | 10 | // ── Part A: isProxiedPath matching rule (pure) ───────────────────────────── | COMMENT |
| MEDIUM | tests/parser-proxy-pricing.test.ts | 118 | // ── Part B: end-to-end attribution through parseAllSessions ──────────────── | COMMENT |
| MEDIUM | tests/sync.test.ts | 16 | // ── Discovery Doc Parser ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync.test.ts | 83 | // ── PKCE ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync.test.ts | 110 | // ── Auth URL ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync.test.ts | 143 | // ── Scope Resolution ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync.test.ts | 167 | // ── Callback Server ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync.test.ts | 206 | // ── Config ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-ledger-otlp.test.ts | 22 | // ── Helpers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-ledger-otlp.test.ts | 61 | // ── OTLP Span/Trace ID Derivation ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-ledger-otlp.test.ts | 126 | // ── OTLP Payload Builder ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-ledger-otlp.test.ts | 203 | // ── Batching ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-ledger-otlp.test.ts | 231 | // ── Ledger ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-ledger-otlp.test.ts | 349 | // ── assertHttps (RFC 8252 §8.3) ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 17 | // ── Helpers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 84 | // ── Test env: isolated HOME so ledger writes go to a temp dir ───────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 102 | // ── collectUnsentCalls ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 147 | // ── sendBatches: success path ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 180 | // ── sendBatches: partial success ────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 210 | // ── sendBatches: error paths ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 364 | // ── MAX_PER_PUSH safety valve ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-push.test.ts | 373 | // ── parseRetryAfterMs ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 77 | // ── emptyCache ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 87 | // ── loadCache / saveCache ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 161 | // ── computeEnvFingerprint ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 192 | // ── fingerprintFile ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 250 | // ── reconcileFile ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 333 | // ── mergeCallByDedupKey ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 358 | // ── deep validation (loadCache) ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/session-cache.test.ts | 542 | // ── cleanupOrphanedTempFiles ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mac/Scripts/build-local.sh | 2 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mac/Scripts/build-local.sh | 4 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | mac/Scripts/build-local.sh | 6 | # --------------- | COMMENT |
| MEDIUM | mac/Scripts/build-local.sh | 27 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/parser.ts | 1741 | // ── Cache Conversion ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/parser.ts | 1894 | // ── Cache-Aware Parsing Helpers ──────────────────────────────────────── | COMMENT |
| MEDIUM | src/session-cache.ts | 9 | // ── Types ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/session-cache.ts | 83 | // ── Constants ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/session-cache.ts | 132 | // ── Cache Dir ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/session-cache.ts | 142 | // ── Env Fingerprint ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/session-cache.ts | 152 | // ── Load / Save ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/session-cache.ts | 294 | // ── File Fingerprinting ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/session-cache.ts | 329 | // ── Reconciliation ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/session-cache.ts | 366 | // ── Dedup Merge ──────────────────────────────────────────────────────── | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/optimize.test.ts | 93 | function projectWithContextSessions(sessions: TestSession[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 569 | function projectWithLowWorthSessions(sessions: TestSession[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 830 | function projectWithReliabilityTurns(turns: LowWorthTurn[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 1081 | function checkAllPasteFixesHaveDestination(findings: WasteFinding[]) { | CODE |
| LOW | tests/parser-large-session.test.ts | 66 | function messageFirstLargeAssistantLine(sessionId: string, timestamp: string, messageId: string): string { | CODE |
| LOW | tests/providers/cursor-bubble-dedup.test.ts | 103 | async function updateAssistantBubbleTokens(dbPath: string, inputTokens: number, outputTokens: number): Promise<void> { | CODE |
| LOW | tests/providers/antigravity.test.ts | 37 | function createCurrentAntigravityCliDb(dbPath: string, fixture: CurrentCliFixture): void { | CODE |
| LOW | tests/providers/copilot.test.ts | 50 | function transcriptAssistantMessage(opts: { messageId: string; content?: string; reasoningText?: string; toolCallIds?: s | CODE |
| LOW | docs/design/codeburn-mcp-plan.md | 148 | export async function buildMenubarPayloadForRange( | CODE |
| LOW | src/compare-stats.ts | 188 | export function computeCategoryComparison(projects: ProjectSummary[], modelA: string, modelB: string): CategoryCompariso | CODE |
| LOW | src/day-aggregator.ts | 29 | export function aggregateProjectsIntoDays(projects: ProjectSummary[]): DailyEntry[] { | CODE |
| LOW | src/antigravity-statusline.ts | 121 | export async function installAntigravityStatusLineHook(force = false): Promise<'installed' | 'already-installed'> { | CODE |
| LOW | src/antigravity-statusline.ts | 145 | export async function uninstallAntigravityStatusLineHook(): Promise<'removed' | 'restored' | 'not-installed'> { | CODE |
| LOW⚡ | src/parser.ts | 1914 | function getOrCreateProviderSection(cache: SessionCache, provider: string): ProviderSection { | CODE |
| LOW⚡ | src/parser.ts | 1914 | function getOrCreateProviderSection(cache: SessionCache, provider: string): ProviderSection { | CODE |
| LOW⚡ | src/parser.ts | 1923 | function cachedFileNeedsProviderReparse(providerName: string, sourcePath: string, cached: CachedFile): boolean { | CODE |
| LOW | src/parser.ts | 83 | async function resolveCanonicalProjectPath(cwd: string): Promise<{ path: string; isWorktree: boolean }> { | CODE |
| LOW | src/parser.ts | 496 | function findJsonContainerEndBuffer(source: Buffer, start: number, open: number, close: number, limit = source.length): | CODE |
| LOW | src/parser.ts | 521 | function findJsonValueBoundsBuffer(source: Buffer, start: number, limit = source.length): BufferJsonValueBounds | null { | CODE |
| LOW | src/parser.ts | 552 | function findObjectFieldValueBuffer(source: Buffer, objectStart: number, objectEnd: number, field: string): BufferJsonVa | CODE |
| LOW | src/parser.ts | 616 | function readJsonNumberFieldBuffer(source: Buffer, objectBounds: BufferJsonValueBounds | null, field: string): number | | CODE |
| LOW | src/parser.ts | 660 | function extractLargeToolBlocksBuffer(source: Buffer, contentBounds: BufferJsonValueBounds | null): ToolUseBlock[] { | CODE |
| LOW | src/parser.ts | 707 | function extractLargeUserTextBuffer(source: Buffer, contentBounds: BufferJsonValueBounds | null): string | undefined { | CODE |
| LOW | src/parser.ts | 741 | function extractLargeAddedNamesBuffer(source: Buffer, attachmentBounds: BufferJsonValueBounds | null): string[] { | CODE |
| LOW | src/parser.ts | 824 | function getTopLevelRawJsonStringField(head: string, field: string): string | null { | CODE |
| LOW | src/parser.ts | 1004 | function extractBashCommandsFromContent(content: ContentBlock[]): string[] { | CODE |
| LOW | src/parser.ts | 1040 | function extractClaudeCacheCreation(usage: AssistantMessageContent['usage']): { totalTokens: number; oneHourTokens: numb | CODE |
| LOW | src/parser.ts | 1152 | export function dedupeStreamingMessageIds(entries: JournalEntry[]): JournalEntry[] { | CODE |
| LOW | src/parser.ts | 1771 | async function canonicalizeProviderCallProject(call: ParsedProviderCall): Promise<ParsedProviderCall> { | CODE |
| LOW | src/parser.ts | 1818 | function providerCallsToCachedTurns(calls: ParsedProviderCall[]): CachedTurn[] { | CODE |
| LOW | src/parser.ts | 1942 | function warnProviderReadFailureOnce(providerName: string, err: unknown): void { | CODE |
| LOW | src/parser.ts | 2393 | export function filterProjectsByClaudeConfigSource(projects: ProjectSummary[], sourceId: string): ProjectSummary[] { | CODE |
| LOW | src/parser.ts | 2407 | export function filterProjectsByDateRange(projects: ProjectSummary[], dateRange: DateRange): ProjectSummary[] { | CODE |
| LOW | src/plan-usage.ts | 28 | export function computePeriodFromResetDay(resetDay: number | undefined, today: Date): { periodStart: Date; periodEnd: Da | CODE |
| LOW | src/export.ts | 313 | async function clearCodeburnExportFolder(path: string): Promise<void> { | CODE |
| LOW | src/menubar-installer.ts | 73 | export function resolveMenubarReleaseAssets(release: ReleaseResponse): ResolvedAssets { | CODE |
| LOW | src/menubar-installer.ts | 88 | export function resolveLatestMenubarReleaseAssets(releases: ReleaseResponse[]): ResolvedAssets { | CODE |
| LOW | src/menubar-installer.ts | 104 | export function resolveVersionedMenubarReleaseAssets(cliVersion: string): ResolvedAssets { | CODE |
| LOW | src/menubar-installer.ts | 122 | export function shouldFallbackToReleaseApi(status: number): boolean { | CODE |
| LOW | src/menubar-installer.ts | 126 | export function formatGitHubReleaseLookupError(status: number, headers?: HeaderGetter): string { | CODE |
| LOW | src/menubar-installer.ts | 138 | function isMissingDirectAssetError(err: unknown): boolean { | CODE |
| LOW | src/menubar-installer.ts | 299 | async function resolvePersistentCodeburnPath(): Promise<string> { | CODE |
| LOW | src/usage-aggregator.ts | 167 | export async function buildMenubarPayloadForRange(periodInfo: PeriodInfo, opts: AggregateOpts = {}): Promise<MenubarPayl | CODE |
| LOW | src/models.ts | 81 | function applyBuiltinPriceOverrides(pricing: Map<string, ModelCosts>): Map<string, ModelCosts> { | CODE |
| LOW | src/models.ts | 373 | function priceOverrideRatePerToken(usdPerMillion: number | undefined): number | null { | CODE |
| LOW | src/models.ts | 403 | function getSortedPriceOverrideKeys(): string[] { | CODE |
| LOW | src/models.ts | 410 | function getLowercasePriceOverrideIndex(): Map<string, ModelCosts> { | CODE |
| LOW | src/models.ts | 438 | function getPriceOverrideCaseInsensitive(canonical: string, withPrefix: string): ModelCosts | null { | CODE |
| LOW | src/models.ts | 469 | export function calculateLocalModelSavings( | CODE |
| LOW | src/models.ts | 499 | export function getLocalModelSavingsConfigHash(): string { | CODE |
| LOW | src/models.ts | 506 | export function getPriceOverridesConfigHash(): string { | CODE |
| LOW | src/models.ts | 591 | function stripKnownPricingVariantSuffix(model: string): string | null { | CODE |
| LOW | src/models.ts | 747 | function shouldWarnAboutUnknownModel(name: string): boolean { | CODE |
| LOW | src/persistent-codeburn.ts | 12 | export function buildPersistentCodeburnLookupPath(existingPath = process.env.PATH ?? ''): string { | CODE |
| LOW | src/persistent-codeburn.ts | 38 | export async function resolvePersistentCodeburnPathFromPath( | CODE |
| LOW | src/persistent-codeburn.ts | 55 | export function resolvePersistentCodeburnPathFromWhichOutput( | CODE |
| LOW | src/optimize.ts | 701 | function getOrInit(server: string): ServerAcc { | CODE |
| LOW | src/optimize.ts | 1032 | function estimateMcpProfileColdSchemaCost( | CODE |
| LOW | src/optimize.ts | 1071 | function collectMcpProjectProfiles( | CODE |
| LOW | src/optimize.ts | 1280 | function collectReliabilityCapabilities(turn: ProjectSummary['sessions'][number]['turns'][number]): Map<string, Capabili | CODE |
| 70 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | src/act/optimize-apply.ts | 129 | print(chalk.dim('\n No appliable config-class fixes for this period.')) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 133 | print() | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 137 | print(renderApplyList(appliable, manual, costRate)) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 140 | print(chalk.dim(' Dry run: nothing was changed.\n')) | CODE |
| HIGH | src/act/optimize-apply.ts | 153 | print(chalk.yellow(` Skipped ${fp.finding.id}: CLAUDE.md edits are not applied with --yes; use the interactive pi | CODE |
| HIGH | src/act/optimize-apply.ts | 161 | print(chalk.dim(' Nothing applied.\n')) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 174 | print() | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 178 | print(` Applied ${chalk.bold(shortId(record.id))} ${record.description}`) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 179 | print(chalk.dim(` Undo anytime: codeburn act undo ${shortId(record.id)}`)) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 185 | print() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/parser-proxy-merge.test.ts | 1 | import { mkdtemp, mkdir, rm, writeFile } from 'fs/promises' | COMMENT |
| LOW | tests/otel-cache-aggregation.test.ts | 1 | // Regression test for the OTel multi-conversation cache overwrite bug. | COMMENT |
| LOW | tests/currency-rounding.test.ts | 1 | import { describe, it, expect, beforeEach, afterEach } from 'vitest' | COMMENT |
| LOW | tests/kiro-cache-invalidation.test.ts | 1 | // Regression test for the Kiro stale-cache path (#618, #619). | COMMENT |
| LOW | tests/providers/cursor-bubble-dedup.test.ts | 1 | import { describe, it, expect, beforeEach, afterEach } from 'vitest' | COMMENT |
| LOW | tests/providers/copilot.test.ts | 701 | }) | COMMENT |
| LOW | tests/providers/copilot.test.ts | 1141 | expect(calls).toHaveLength(1) | COMMENT |
| LOW | tests/setup/env-isolation.ts | 1 | // Vitest setup file: isolates every test from the developer's shell environment. | COMMENT |
| LOW | …ests/CodeBurnMenubarTests/DataClientProcessTests.swift | 81 | provider: .lingtaiTui, | COMMENT |
| LOW | …/CodeBurnMenubarTests/MenubarPeriodSettingsTests.swift | 61 | @Test("non-today periods render compact and regular suffixes") | COMMENT |
| LOW | mac/Scripts/build-local.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 941 | // Tahoe an accessory app activating while a popover anchors to | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/Data/CLIClaudeConfig.swift | 1 | import Foundation | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/Data/DataClient.swift | 121 | private static func runCLI(subcommand: [String]) async throws -> ProcessResult { | COMMENT |
| LOW | …urces/CodeBurnMenubar/Data/ClaudeCredentialStore.swift | 1 | import Foundation | COMMENT |
| LOW | …urces/CodeBurnMenubar/Data/ClaudeCredentialStore.swift | 201 | /// (a hardcoded company-style identifier) while Claude Code 2.1.x writes | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/Data/QuotaSummary.swift | 21 | /// Display label for the user's plan (e.g. "Max 20x", "Pro Lite"). Shown | COMMENT |
| LOW | src/main.ts | 241 | const totalCacheWrite = sessions.reduce((s, sess) => s + sess.totalCacheWriteTokens, 0) | COMMENT |
| LOW | src/cursor-cache.ts | 1 | import { readFile, writeFile, mkdir, rename, stat, unlink } from 'fs/promises' | COMMENT |
| LOW | src/parser.ts | 61 | const normalized = projectPath.trim().replace(/\\/g, '/').replace(/\/+$/, '') | COMMENT |
| LOW | src/parser.ts | 1981 | // event loop every YIELD_EVERY items so the OS scheduler gets regular break | COMMENT |
| LOW | src/parser.ts | 2481 | } | COMMENT |
| LOW | src/models.ts | 521 | }) | COMMENT |
| LOW | src/models.ts | 661 | } | COMMENT |
| LOW | src/models.ts | 701 | // resolve AFTER table hits and so cannot prove the $0 was intentional; a | COMMENT |
| LOW | src/config.ts | 41 | // Map raw local-model names (e.g. "llama3.1:8b") to the paid model we would | COMMENT |
| LOW | src/content-utils.ts | 1 | /// Normalize a message's `content` into an array of content blocks. | COMMENT |
| LOW | src/providers/cursor.ts | 101 | /// does NOT carry a workspace path on the bubble itself. The mapping lives | COMMENT |
| LOW | src/providers/codebuff.ts | 321 | // the same `chatId` can legitimately appear under each channel root | COMMENT |
| LOW | src/providers/copilot.ts | 1 | // ============================================================================= | COMMENT |
| LOW | src/providers/copilot.ts | 21 | // "github.copilot.chat.otel.enabled": true, | COMMENT |
| LOW | src/providers/copilot.ts | 41 | // CODEBURN_COPILOT_GLOBAL_STORAGE_DIR — Override VS Code globalStorage | COMMENT |
| LOW | src/providers/copilot.ts | 881 | deduplicationKey: dedupKey, | COMMENT |
| LOW | src/providers/copilot.ts | 1041 | const val = Buffer.from(raw.slice(start, start + len), 'latin1').toString('utf8') | COMMENT |
| LOW | src/providers/copilot.ts | 1161 | // round) must NOT fall back to Markdown — that would bill the user's prompt | COMMENT |
| LOW | src/providers/copilot.ts | 1301 | seenReplies.add(dedupeKey) | COMMENT |
| LOW | src/providers/copilot.ts | 1741 | // on-disk store dir name). Normally each turn is grouped by its own tab GUID. | COMMENT |
| LOW | src/providers/grok.ts | 1 | import { readdir, stat } from 'fs/promises' | COMMENT |
| LOW | src/providers/codex.ts | 41 | read_dir: 'Glob', | COMMENT |
| LOW | src/providers/codex.ts | 121 | // Cap how many bytes we'll read while looking for the first newline. Real | COMMENT |
| LOW | src/providers/codex.ts | 581 | const totalTokens = inputTokens + cachedInputTokens + outputTokens + reasoningTokens | COMMENT |
| LOW | src/guard/usage.ts | 1 | import { mkdir, readFile, stat, writeFile } from 'fs/promises' | COMMENT |
| LOW | src/guard/hooks.ts | 1 | // =========================================================================== | COMMENT |
| LOW | src/guard/hooks.ts | 21 | // systemMessage. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/context-tree.ts | 527 | // Claude Code stores an AI-generated session name as "ai-title" entries (the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/parser.test.ts | 353 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 384 | await writeFile(synthFile, 'placeholder') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/providers/mux.md | 3 | [coder/mux](https://github.com/coder/mux) — Coder's desktop/CLI app for parallel agentic development. Mux makes its own | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mac/Scripts/package-app.sh | 5 | # Usage: | COMMENT |