sigrank 0.18.4 → 0.19.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
@@ -306,7 +306,7 @@ The dashboard pulls from multiple sources and shows them side-by-side for verifi
306
306
  | `token-dashboard` | `~/.claude/token-dashboard.db` SQLite ([Nate's](https://github.com/nateherkai/token-dashboard)) | claude only |
307
307
  | `tokscale` | `tokscale models --json` CLI (bundled, falls back to `~/tokscale_report.json`) | claude, codex |
308
308
 
309
- **Codex input is estimated** — Codex logs don't expose true input tokens directly. The formula:
309
+ **Non-Claude input is estimated** — most non-Claude systems (Codex, Devin, etc.) combine user input + cache write into a single `input_tokens` field, so true fresh input must be derived. The ruleset (applies to ALL non-Claude systems):
310
310
 
311
311
  ```
312
312
  input = output × ioRatio (ioRatio derived from Claude ratio, else 2.0)
@@ -314,6 +314,10 @@ cacheCreate = uncached − input (uncached = input_tokens − cached_inp
314
314
  cacheRead = exact (from logs)
315
315
  ```
316
316
 
317
+ - **Beta** = operator's Claude input/output ratio (if Claude data available)
318
+ - **Alpha** = 2.0 default (when no Claude data)
319
+ - Owner-stated average: 7:1:2 (cache:input:output) → input/output ≈ 0.5
320
+
317
321
  Verifier numbers (ccusage/tokscale for codex) show **raw uncached input** (`input_tokens − cached`) — a different field than the estimated input above. The discrepancy is expected and explained inline in the dashboard.
318
322
 
319
323
  ---
@@ -326,6 +330,7 @@ All adapters are token-only (no message content, no cost fields, no credentials)
326
330
  | ------------------ | ---------------------------------------------- | --------------------------------------------------------------- |
327
331
  | Claude Code | ✅ `~/.claude/projects` | Native; dedup by `(session_id, message_id)`; subagents included |
328
332
  | Codex | ✅ `~/.codex/sessions` | Estimated input via `io_ratio`; verified vs ccusage |
333
+ | Devin CLI | ✅ `~/.local/share/devin/cli/sessions.db` | Estimated input via `io_ratio`; SQLite; same split as Codex |
329
334
  | Amp | ✅ `~/.local/share/amp/threads` | Full 4-pillar; per-message |
330
335
  | Kimi | ✅ `~/.kimi/sessions` | Full 4-pillar; `StatusUpdate` lines only |
331
336
  | pi-agent | ✅ `~/.pi/agent/sessions` | Full 4-pillar; per-message JSONL |
package/adapters.mjs CHANGED
@@ -15,6 +15,14 @@
15
15
  * messages(root): async generator → { id?, sid?, ts, input, output, cacheCreate, cacheRead, file }
16
16
  *
17
17
  * SigRank-specific mapping rules (applied consistently across all adapters):
18
+ * - Claude = parsed natively (4 pillars exact, no conversion)
19
+ * - Non-Claude systems = combined input → split via ioRatio:
20
+ * input = floor(output × ioRatio) // Beta from Claude, else Alpha 2.0
21
+ * cacheCreate = max(0, uncached − input)
22
+ * cacheRead = exact
23
+ * (Adapters that yield {ts, output, cacheRead, uncached} via records() go through
24
+ * tokenpullCodex(); adapters that yield native 4-pillar via messages() go through
25
+ * tokenpull() directly. The split happens at the tokenpullAny() routing layer.)
18
26
  * - Reasoning / thinking tokens → folded into `output` (they are output-side spend)
19
27
  * - No cache-creation data available → cacheCreate: 0 + adapter sets `estimated: true`
20
28
  * - Cost fields (USD) → NEVER used or forwarded (SigRank scores cost efficiency from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigrank",
3
- "version": "0.18.4",
3
+ "version": "0.19.0",
4
4
  "author": "SunrisesIllNeverSee (https://github.com/SunrisesIllNeverSee)",
5
5
  "description": "SigRank MCP server — the yield cascade + live leaderboard as MCP tools any agent can call",
6
6
  "mcpName": "io.github.SunrisesIllNeverSee/sigrank-mcp",
@@ -24,7 +24,8 @@
24
24
  },
25
25
  "scripts": {
26
26
  "start": "node index.mjs",
27
- "test": "node test.mjs && node sign.test.mjs && node --test __tests__/cascade.test.mjs __tests__/badges.test.mjs"
27
+ "test": "node test.mjs && node sign.test.mjs && node --test __tests__/cascade.test.mjs __tests__/badges.test.mjs",
28
+ "sync:platforms": "node scripts/sync-platforms.mjs"
28
29
  },
29
30
  "files": [
30
31
  "index.mjs",