sigrank 0.18.5 → 1.0.1
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/CHANGELOG.md +158 -0
- package/MCP_SERVER_DESCRIPTION.md +172 -0
- package/README.md +94 -41
- package/adapters/index.mjs +1100 -0
- package/adapters/tokenpull.mjs +568 -0
- package/adapters.mjs +1 -857
- package/analytics/cascade.mjs +338 -0
- package/cascade.mjs +1 -274
- package/cli.mjs +1 -1853
- package/connect.mjs +1 -13
- package/identity/connect.mjs +13 -0
- package/identity/keystore.mjs +231 -0
- package/identity/sign.mjs +106 -0
- package/index.mjs +47 -162
- package/keystore.mjs +1 -242
- package/lib/constants.mjs +137 -0
- package/lib/pkg-version.mjs +59 -0
- package/manifest.json +46 -0
- package/narrate.mjs +1 -77
- package/package.json +41 -16
- package/preflight.mjs +1 -191
- package/presentation/cli.mjs +1926 -0
- package/presentation/narrate.mjs +219 -0
- package/presentation/tui-themes.mjs +189 -0
- package/presentation/tui.mjs +3316 -0
- package/prompts/check-my-efficiency.md +1 -0
- package/prompts/compare-with-leader.md +1 -0
- package/prompts/simulate-improvement.md +1 -0
- package/proxy.mjs +492 -0
- package/resources/class-tiers.md +81 -0
- package/resources/data-policy.md +31 -0
- package/resources/install-guide.md +59 -0
- package/resources/privacy-model.md +44 -0
- package/resources/scoring-formula.md +24 -0
- package/review.mjs +263 -0
- package/sign.mjs +1 -106
- package/submit/index.mjs +297 -0
- package/submit/preflight.mjs +191 -0
- package/submit.mjs +1 -303
- package/tokenpull.mjs +1 -576
- package/tokscale_analytics.mjs +864 -0
- package/tools/_framing.mjs +217 -0
- package/tools/_helpers.mjs +253 -0
- package/tools/_peer-matching.mjs +361 -0
- package/tools/_report.mjs +262 -0
- package/tools/_schemas.mjs +492 -0
- package/tools/_verifiers.mjs +148 -0
- package/tools/compare-operators.mjs +80 -0
- package/tools/compare-self.mjs +124 -0
- package/tools/describe-power-user.mjs +78 -0
- package/tools/diagnose-cascade.mjs +192 -0
- package/tools/discover-peers.mjs +198 -0
- package/tools/enroll.mjs +119 -0
- package/tools/get-best-operator.mjs +59 -0
- package/tools/get-leaderboard.mjs +27 -0
- package/tools/get-operator.mjs +33 -0
- package/tools/index.mjs +229 -0
- package/tools/optimize-efficiency.mjs +170 -0
- package/tools/rank-paste.mjs +51 -0
- package/tools/rank-windows.mjs +120 -0
- package/tools/self-improve.mjs +423 -0
- package/tools/simulate-change.mjs +207 -0
- package/tools/submit-paste.mjs +121 -0
- package/tools/submit-verified.mjs +153 -0
- package/tools/suggest-improvements.mjs +168 -0
- package/tools/tokenpull-compare.mjs +123 -0
- package/tools/tokenpull-submit.mjs +235 -0
- package/tools/tokenpull.mjs +113 -0
- package/tools/tokscale-breakdown.mjs +119 -0
- package/tools/tokscale-competitive-intel.mjs +45 -0
- package/tools/tokscale-cost-analysis.mjs +31 -0
- package/tools/tokscale-developer-profile.mjs +36 -0
- package/tools/tokscale-device-profile.mjs +35 -0
- package/tools/tokscale-market-share.mjs +38 -0
- package/tools/tokscale-mcp-usage.mjs +33 -0
- package/tools/tokscale-model-trends.mjs +32 -0
- package/tools/watch-tokenpull.mjs +134 -0
- package/tools.mjs +1 -3897
- package/tui.mjs +4 -2650
- package/banner.svg +0 -7
package/README.md
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
# SigRank MCP
|
|
1
|
+
# SigRank SignalAF MCP
|
|
2
2
|
|
|
3
|
-
> **🏆 SigRank is live: [signalaf.com](https://signalaf.com)** — the
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> **🏆 SigRank SignalAF is live: [signalaf.com](https://signalaf.com)** — the AI operator
|
|
4
|
+
> evaluation leaderboard. Ranks how efficiently you use AI by token cascade
|
|
5
|
+
> efficiency (Υ = cache_read × output / input²), not how much. Run `npx sigrank`
|
|
6
|
+
> to see your cascade now. _Token counts only. Never your prompts._
|
|
6
7
|
|
|
7
8
|
<div align="center">
|
|
8
9
|
|
|
9
|
-
<p><img src="./.github/assets/og-card.png" alt="SigRank —
|
|
10
|
+
<p><img src="./.github/assets/og-card.png" alt="SigRank SignalAF — AI operator evaluation and token cascade efficiency leaderboard" width="800"></p>
|
|
10
11
|
|
|
11
12
|
**The yield cascade + live leaderboard as MCP tools any agent can call.**
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
SigRank evaluates the human using the AI — not the AI model itself.
|
|
14
15
|
|
|
15
16
|
[](https://www.npmjs.com/package/sigrank)
|
|
16
17
|
[](https://github.com/SunrisesIllNeverSee/sigrank-mcp/actions/workflows/ci.yml)
|
|
@@ -31,7 +32,7 @@ For all builders, burners and 10xers.
|
|
|
31
32
|
|
|
32
33
|
## Table of Contents
|
|
33
34
|
|
|
34
|
-
- [The SigRank ecosystem](#the-sigrank-ecosystem)
|
|
35
|
+
- [The SigRank SignalAF ecosystem](#the-sigrank-signalaf-ecosystem)
|
|
35
36
|
- [Quickstart](#quickstart--3-steps-to-the-board)
|
|
36
37
|
- [Install from GitHub](#install-from-github)
|
|
37
38
|
- [Install via Smithery](#install-via-smithery)
|
|
@@ -49,19 +50,21 @@ For all builders, burners and 10xers.
|
|
|
49
50
|
|
|
50
51
|
| The board | Your operator profile |
|
|
51
52
|
| :-----------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------: |
|
|
52
|
-
| [](https://signalaf.com/board/all) | [](https://signalaf.com) |
|
|
53
|
+
| [](https://signalaf.com/board/all) | [](https://signalaf.com) |
|
|
53
54
|
| Every operator ranked by **Υ Yield** — the architecture of the cascade, not raw spend | Cascade layer, class, and fingerprint — derived from four token counts |
|
|
54
55
|
|
|
55
56
|
> **Run [`sigrank enroll`](#sign-in--submit) then [`sigrank submit`](#sign-in--submit) to get ranked and claim your public profile at [signalaf.com](https://signalaf.com).**
|
|
56
57
|
|
|
57
58
|
---
|
|
58
59
|
|
|
59
|
-
## The SigRank ecosystem
|
|
60
|
+
## The SigRank SignalAF ecosystem
|
|
60
61
|
|
|
61
62
|
| Repo | What it is | Install |
|
|
62
63
|
|------|-----------|---------|
|
|
63
64
|
| **[sigrank-mcp](https://github.com/SunrisesIllNeverSee/sigrank-mcp)** (this repo) | The instrument — extracts 4 token pillars, computes the cascade, submits to the leaderboard. MCP server + TUI dashboard. | `npx sigrank` |
|
|
64
65
|
| **[sigrank-app](https://github.com/SunrisesIllNeverSee/sigrank-app)** | The leaderboard — signalaf.com. Privacy-preserving operator profiles, class tiers, board rankings. | [signalaf.com](https://signalaf.com) |
|
|
66
|
+
| **[bestuser-router-mcp](https://github.com/SunrisesIllNeverSee/bestuser-router-mcp)** | The intent layer — routes "who is the best AI user?" queries to SigRank SignalAF's leaderboard. MCP server for AI assistants. | `npx bestuser-router-mcp` |
|
|
67
|
+
| **[sigarena](https://github.com/SunrisesIllNeverSee/sigarena)** | The satellite — public LLM operator evals at sigeconomy.com. Read-only leaderboard, SEO/AEO surface. | [sigeconomy.com](https://sigeconomy.com) |
|
|
65
68
|
| **[signaf](https://github.com/SunrisesIllNeverSee/signa)** | The coach — reads your session logs, builds a taste profile, measures ASI, coaches you on token efficiency. | `npx @burnmydays/signaf` |
|
|
66
69
|
| **[sigrank-vscode](https://github.com/SunrisesIllNeverSee/sigrank-vscode)** | The IDE extension — see your cascade metrics inline in VS Code. | `code --install-extension sigrank.sigrank` |
|
|
67
70
|
| **[fundscore](https://github.com/SunrisesIllNeverSee/fundscore)** | The repo scorer — investor-readiness scoring for GitHub repos. CLI + MCP server. | `npx fundscore` |
|
|
@@ -71,7 +74,7 @@ For all builders, burners and 10xers.
|
|
|
71
74
|
| Site | What it is |
|
|
72
75
|
| ---- | ---------- |
|
|
73
76
|
| **[SIGNOMY](https://signomy.xyz)** | Governed AI agent marketplace where ranked agents form teams, fill slots, run missions, and earn revenue under constitutional protocol. Agents are free. Operators pay. |
|
|
74
|
-
| **[MO§ES](https://mos2es.com)** | The governance framework that underpins SigRank, SIGNOMY, and all governed agent operations. Structural accountability for agentic systems. |
|
|
77
|
+
| **[MO§ES](https://mos2es.com)** | The governance framework that underpins SigRank SignalAF, SIGNOMY, and all governed agent operations. Structural accountability for agentic systems. |
|
|
75
78
|
|
|
76
79
|
## Quickstart — 3 steps to the board
|
|
77
80
|
|
|
@@ -96,6 +99,7 @@ Or just explore without signing in:
|
|
|
96
99
|
```bash
|
|
97
100
|
sigrank # launches the full tabbed TUI (dashboard, compare, board, watch)
|
|
98
101
|
npx sigrank board --once # print the live leaderboard once
|
|
102
|
+
bunx sigrank board --once # same, via Bun (faster startup if you have it)
|
|
99
103
|
```
|
|
100
104
|
|
|
101
105
|
## Install from GitHub
|
|
@@ -124,7 +128,7 @@ sigrank
|
|
|
124
128
|
|
|
125
129
|
## Install via Smithery
|
|
126
130
|
|
|
127
|
-
SigRank is available on [Smithery](https://smithery.ai/servers/burnmydays/sigrank) as a stdio MCP bundle — one-click install for Claude Desktop, Cursor, and other MCP clients.
|
|
131
|
+
SigRank SignalAF is available on [Smithery](https://smithery.ai/servers/burnmydays/sigrank) as a stdio MCP bundle — one-click install for Claude Desktop, Cursor, and other MCP clients.
|
|
128
132
|
|
|
129
133
|
### Smithery CLI
|
|
130
134
|
|
|
@@ -132,7 +136,7 @@ SigRank is available on [Smithery](https://smithery.ai/servers/burnmydays/sigran
|
|
|
132
136
|
# Install Smithery CLI
|
|
133
137
|
npm install -g smithery
|
|
134
138
|
|
|
135
|
-
# Connect to SigRank (downloads the MCPB bundle locally)
|
|
139
|
+
# Connect to SigRank SignalAF (downloads the MCPB bundle locally)
|
|
136
140
|
smithery mcp add burnmydays/sigrank --id sigrank
|
|
137
141
|
|
|
138
142
|
# List available tools
|
|
@@ -154,7 +158,7 @@ smithery tool call sigrank rank_paste '{"text": "1000000 500000 50000 800000"}'
|
|
|
154
158
|
## Commands
|
|
155
159
|
|
|
156
160
|
```
|
|
157
|
-
⊙ SigRank CLI v0.0.177
|
|
161
|
+
⊙ SigRank SignalAF CLI v0.0.177
|
|
158
162
|
|
|
159
163
|
Default (no args)
|
|
160
164
|
sigrank unified dashboard: cascade + token pillars + board
|
|
@@ -172,12 +176,15 @@ Commands
|
|
|
172
176
|
watch live tune meter — ALL active platforms × all windows, every 30s
|
|
173
177
|
watch --platform codex watch only one platform (optional filter)
|
|
174
178
|
watch --window 7d watch only one window (optional filter)
|
|
179
|
+
proxy opt-in local Anthropic/OpenAI usage proxy
|
|
180
|
+
proxy --port 9000 run the proxy on a custom loopback port
|
|
175
181
|
|
|
176
182
|
Options
|
|
177
183
|
--window 7d · 30d · 90d · all (default: 30d for board; all windows for watch)
|
|
178
184
|
--platform claude · codex · amp · gemini · opencode · goose · …
|
|
179
185
|
--refresh poll interval in seconds (default: 30)
|
|
180
186
|
--once print once and exit (board only)
|
|
187
|
+
--port proxy port (default: 8787)
|
|
181
188
|
|
|
182
189
|
For AI clients (not typeable)
|
|
183
190
|
In a piped/non-TTY context, sigrank is an MCP stdio server.
|
|
@@ -193,6 +200,34 @@ Examples
|
|
|
193
200
|
sigrank board --window all --once
|
|
194
201
|
```
|
|
195
202
|
|
|
203
|
+
### Optional API usage proxy
|
|
204
|
+
|
|
205
|
+
Some desktop coding agents receive provider usage in API responses but do not
|
|
206
|
+
persist it in their local session files. SigRank SignalAF can capture those
|
|
207
|
+
provider-reported counts through a manually started loopback proxy:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
sigrank proxy # http://localhost:8787
|
|
211
|
+
sigrank proxy --port 9000 # custom port
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Then point a compatible tool's API base URL at the displayed local URL. The
|
|
215
|
+
first release supports Anthropic Messages (`/v1/messages`), OpenAI Chat
|
|
216
|
+
Completions (`/v1/chat/completions`), and OpenAI Responses (`/v1/responses`).
|
|
217
|
+
The tool must support a custom API base URL; this is not guaranteed for every
|
|
218
|
+
desktop client.
|
|
219
|
+
|
|
220
|
+
The proxy is **off by default**: it opens no port and observes no traffic unless
|
|
221
|
+
you explicitly run `sigrank proxy`. It binds only to loopback and stops when the
|
|
222
|
+
command exits. Request and response content, API keys, and tool calls are
|
|
223
|
+
forwarded transiently but never written to disk. Only usage metadata is appended
|
|
224
|
+
to `~/.sigrank-mcp/proxy-sessions.jsonl` (directory `0700`, file `0600`).
|
|
225
|
+
|
|
226
|
+
Anthropic and OpenAI calls are currently grouped under one `proxy` platform row.
|
|
227
|
+
For streamed Chat Completions, SigRank SignalAF sets OpenAI's
|
|
228
|
+
`stream_options.include_usage=true` so the provider includes the final usage
|
|
229
|
+
chunk; response chunks are still forwarded immediately.
|
|
230
|
+
|
|
196
231
|
### The TUI is the whole app
|
|
197
232
|
|
|
198
233
|
Launch it and sign in inside it:
|
|
@@ -277,6 +312,14 @@ Or if installed globally:
|
|
|
277
312
|
| `compare_operators(a, b)` | `{codename_a, codename_b}` | Side-by-side comparison with behavioral verdict. Intent: "compare operator X vs Y" |
|
|
278
313
|
| `describe_power_user()` | `{}` | Static explanation of AI power user archetype + metrics explained. Intent: "what is an AI power user?" |
|
|
279
314
|
| `optimize_efficiency(codename? \| text?)` | `{codename?}` or `{text?}` | Ranked efficiency suggestions tied to your cascade shape. Intent: "how can I use AI more efficiently?" |
|
|
315
|
+
| `tokscale_breakdown(threshold?)` | `{threshold?}` | Per-model token breakdown across platforms (models under threshold → "other") |
|
|
316
|
+
| `tokscale_market_share()` | `{}` | AI tool market share: each tool's % of tokens/cost/messages, ranked. From local tokscale data |
|
|
317
|
+
| `tokscale_developer_profile()` | `{}` | Per-developer usage profile across all detected tools: model mix, pillars, sessions, workspaces. Paths redacted |
|
|
318
|
+
| `tokscale_model_trends()` | `{}` | Model adoption over time: per-model first/last seen, active days, month-by-month adoption curve |
|
|
319
|
+
| `tokscale_cost_analysis()` | `{}` | Cost per developer per model: cost_per_million_tokens, cost_per_message, share_cost, client rollup |
|
|
320
|
+
| `tokscale_device_profile()` | `{}` | Device fingerprinting: installed tools, session counts, active days, day-of-week distribution, concurrency. Paths redacted |
|
|
321
|
+
| `tokscale_mcp_usage()` | `{}` | MCP server usage: detected servers, detection window, active days |
|
|
322
|
+
| `tokscale_competitive_intel(target)` | `{target}` | Competitive intelligence for any AI tool: rank, model mix, cost efficiency, share vs all competitors |
|
|
280
323
|
|
|
281
324
|
---
|
|
282
325
|
|
|
@@ -306,7 +349,7 @@ The dashboard pulls from multiple sources and shows them side-by-side for verifi
|
|
|
306
349
|
| `token-dashboard` | `~/.claude/token-dashboard.db` SQLite ([Nate's](https://github.com/nateherkai/token-dashboard)) | claude only |
|
|
307
350
|
| `tokscale` | `tokscale models --json` CLI (bundled, falls back to `~/tokscale_report.json`) | claude, codex |
|
|
308
351
|
|
|
309
|
-
**
|
|
352
|
+
**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
353
|
|
|
311
354
|
```
|
|
312
355
|
input = output × ioRatio (ioRatio derived from Claude ratio, else 2.0)
|
|
@@ -314,33 +357,41 @@ cacheCreate = uncached − input (uncached = input_tokens − cached_inp
|
|
|
314
357
|
cacheRead = exact (from logs)
|
|
315
358
|
```
|
|
316
359
|
|
|
360
|
+
- **Beta** = operator's Claude input/output ratio (if Claude data available)
|
|
361
|
+
- **Alpha** = 2.0 default (when no Claude data)
|
|
362
|
+
- Owner-stated average: 7:1:2 (cache:input:output) → input/output ≈ 0.5
|
|
363
|
+
|
|
317
364
|
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
365
|
|
|
319
366
|
---
|
|
320
367
|
|
|
321
368
|
## Platform adapters
|
|
322
369
|
|
|
323
|
-
All adapters are token-only (no message content, no cost fields, no credentials).
|
|
324
|
-
|
|
325
|
-
| Platform | Path |
|
|
326
|
-
| ------------------ | ---------------------------------------------- |
|
|
327
|
-
| Claude Code | ✅ `~/.claude/projects`
|
|
328
|
-
| Codex | ✅ `~/.codex/sessions`
|
|
329
|
-
|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
|
|
|
333
|
-
|
|
|
334
|
-
|
|
|
335
|
-
|
|
|
336
|
-
|
|
|
337
|
-
|
|
|
338
|
-
|
|
|
339
|
-
|
|
|
340
|
-
|
|
|
341
|
-
|
|
|
342
|
-
|
|
|
343
|
-
|
|
|
370
|
+
All adapters are token-only (no message content, no cost fields, no credentials). The table below is regenerated from the adapter file headers in `adapters/index.mjs` + `adapters/tokenpull.mjs` so the path, pillar shape, and notes match the actual code (a prior revision had drifted on Qwen/Codex/Copilot).
|
|
371
|
+
|
|
372
|
+
| Platform | Path | Pillar shape & notes |
|
|
373
|
+
| ------------------ | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
374
|
+
| Claude Code | ✅ `~/.claude/projects` (recursive, incl. `subagents/`) | Native 4-pillar; dedup by `(session_id, message_id)` — final snapshot wins |
|
|
375
|
+
| Codex | ✅ `~/.codex/sessions` (+ `archived_sessions`) | `input_tokens` incl. cached → `input` + `cacheCreate` split window-level via `io_ratio`; `cacheRead` native (`cached_input_tokens`); `reasoning_output`→output; verified vs ccusage (~1%) |
|
|
376
|
+
| Devin CLI | ✅ `~/.local/share/devin/cli/sessions.db` | SQLite; native 4-pillar from `metadata.metrics` (`input_tokens`, `output_tokens`, `cache_read_tokens`, `cache_creation_tokens`); `input_tokens` is fresh (excludes cache) |
|
|
377
|
+
| Amp | ✅ `~/.local/share/amp/threads` | Native 4-pillar; per-message |
|
|
378
|
+
| Kimi | ✅ `~/.kimi/sessions` | Native 4-pillar; `StatusUpdate` lines only |
|
|
379
|
+
| pi-agent | ✅ `~/.pi/agent/sessions` | Native 4-pillar; per-message JSONL |
|
|
380
|
+
| oh-my-pi (`omp`) | ✅ `~/.omp/agent/sessions` (recursive, incl. nested subagent transcripts) | Native 4-pillar from `.message.usage` on `type:"message"` entries (`cacheWrite`→`cacheCreate`); **`reasoningTokens` is already inside `output`** — never added, or it double-counts; `usage.cost` reuses the same four key names for USD floats and is dropped; dedup by (session header `id`, entry `id`). Separate harness from pi-agent |
|
|
381
|
+
| OpenClaw | ✅ `~/.openclaw` | Native 4-pillar; per-message JSONL |
|
|
382
|
+
| Droid | ✅ `~/.factory/sessions/*.settings.json` | Native 4-pillar; `thinking_tokens`→output |
|
|
383
|
+
| Codebuff | ✅ `~/.config/manicode` | Native 4-pillar; `chat-messages.json` |
|
|
384
|
+
| Hermes | ✅ `~/.hermes/state.db` | Native 4-pillar; SQLite; `reasoning_tokens`→output |
|
|
385
|
+
| Kilo | ✅ `~/.local/share/kilo/kilo.db` | Native 4-pillar; SQLite |
|
|
386
|
+
| Qwen | ✅ `~/.qwen/projects` | Estimated (`cacheCreate=0` — no field in logs); `cacheRead` from `cachedContentTokenCount`; `thoughtsTokenCount`→output |
|
|
387
|
+
| Goose | ✅ `~/.local/share/goose/sessions/sessions.db` (or `$GOOSE_PATH_ROOT/data/sessions/sessions.db`) | Estimated (`cacheCreate=cacheRead=0` — no cache fields); reasoning = `total−input−output`→output; cumulative-column dedup by session id |
|
|
388
|
+
| Gemini CLI | ✅ `~/.gemini/tmp` | Estimated (`cacheCreate=0`); `cacheRead` from `cached` field; `thought`→output; `input` = `input−cached` (fresh) |
|
|
389
|
+
| GitHub Copilot CLI | ✅ `~/.copilot/otel` | Native 4-pillar (OTel spans: `llm.token_count.{prompt,completion,cache_creation,cache_read}`); requires `COPILOT_OTEL_ENABLED=true` + `COPILOT_OTEL_EXPORTER_TYPE=file` set **before** session start |
|
|
390
|
+
| OpenCode | ⚠️ `~/.local/share/opencode` | Data gap — logs store `cost:0` and derive tokens via LiteLLM at runtime; raw token counts not persisted. No pillars readable with current format |
|
|
391
|
+
| SigRank SignalAF proxy | ✅ `~/.sigrank-mcp/proxy-sessions.jsonl` | Opt-in native 4-pillar usage reported by Anthropic/OpenAI; same-timestamp records keep the last call; OpenAI cached input is separated from fresh input |
|
|
392
|
+
| Other (user JSON) | ✅ `$SIGRANK_OTHER_PATH` | User-supplied JSON `{ "windows": { "all": {input,output,cacheCreate,cacheRead} } }`; all-time only (no timestamps) |
|
|
393
|
+
| Cursor | 🔜 | Chat log path TBD |
|
|
394
|
+
| Windsurf | 🔜 | Session logs at `~/.codeium/windsurf/` |
|
|
344
395
|
|
|
345
396
|
`estimated=true` means one or more pillars are derived, not native. The server re-scores all submitted pillars authoritatively; local preview Υ is indicative only.
|
|
346
397
|
|
|
@@ -348,7 +399,7 @@ All adapters are token-only (no message content, no cost fields, no credentials)
|
|
|
348
399
|
|
|
349
400
|
## Privacy
|
|
350
401
|
|
|
351
|
-
- **Token-only
|
|
402
|
+
- **Token-only persistence and submission.** Local-log adapters read usage metadata only. The optional proxy necessarily handles provider-bound request and response bytes in memory, but never persists their content; it writes only token counts, model/backend metadata, and timestamps. Only token telemetry is submitted to SigRank SignalAF.
|
|
352
403
|
- **Local by default.** `tokenpull` reads only `~/.claude/projects` (Claude) or `~/.codex` (Codex) on your device. Numbers stay on your machine unless you explicitly submit with a codename.
|
|
353
404
|
- **Background tooling excluded.** Memory plugins, observers, summarizers (e.g. `claude-mem`, `mem0`, `observer-sessions`) are filtered from both Claude and Codex reads. `subagents/` are kept — they represent real operator work.
|
|
354
405
|
- **Board reads are anonymous.** No account needed to browse, compare, or watch.
|
|
@@ -368,19 +419,20 @@ All adapters are token-only (no message content, no cost fields, no credentials)
|
|
|
368
419
|
## Dev / test
|
|
369
420
|
|
|
370
421
|
```bash
|
|
371
|
-
node test.mjs #
|
|
422
|
+
node test.mjs # 313-assertion baseline + proxy tests (local mocks only; temp filesystem)
|
|
372
423
|
node sign.test.mjs # ed25519 signing + canon parity
|
|
373
424
|
node index.mjs # stdio MCP server directly (pipe to MCP client)
|
|
374
425
|
```
|
|
375
426
|
|
|
376
|
-
Tests verify (
|
|
427
|
+
Tests verify (14 groups, 313 assertions):
|
|
377
428
|
|
|
378
429
|
- `rank_paste` canon: MO§ES `(1251211, 11296121, 128196310, 2555179769)` → Υ 18436.98 · TRANSMITTER
|
|
379
430
|
- `submit_paste` preview (no codename) + POST shape (injected fetch, no live writes)
|
|
380
431
|
- `tokenpull` dedup, window slicing, 4-window pillars (mock adapter)
|
|
381
432
|
- `tokenpull_submit` all 4 windows POST, sha256 hash, ddmmyy stamp
|
|
382
433
|
- `tokenpullCodex` io_ratio conversion per-window
|
|
383
|
-
- Adapter registry (
|
|
434
|
+
- Adapter registry (17 platforms) + per-adapter shape contracts
|
|
435
|
+
- Local proxy: Anthropic/OpenAI JSON + fragmented SSE, live pass-through, secure JSONL, error forwarding
|
|
384
436
|
- `rank_windows` 4-window paste scoring, partial input, no-network
|
|
385
437
|
- `watch_tokenpull` cascade snapshot, interval_s, submit path
|
|
386
438
|
- `enroll` posts identity (public key only), maps 201 enrolled + 410 code_invalid
|
|
@@ -396,11 +448,12 @@ Tests verify (13 groups, 200 assertions):
|
|
|
396
448
|
| File | Responsibility |
|
|
397
449
|
| --------------- | ----------------------------------------------------------------------- |
|
|
398
450
|
| `index.mjs` | Entry point — TTY detection, routes to CLI or MCP server |
|
|
451
|
+
| `proxy.mjs` | Opt-in loopback Anthropic/OpenAI proxy and usage capture |
|
|
399
452
|
| `cli.mjs` | CLI commands: board, compare, watch, enroll, submit, help |
|
|
400
453
|
| `tui.mjs` | Full tabbed TUI: Dashboard / Trends / Compare / Board / Watch / Connect |
|
|
401
454
|
| `cascade.mjs` | Pure cascade math (Υ, SNR, leverage, velocity, 10xDEV, class) |
|
|
402
455
|
| `tokenpull.mjs` | On-device log scanner — Claude, Codex, multi-platform |
|
|
403
|
-
| `adapters.mjs` | Platform adapter registry (
|
|
456
|
+
| `adapters.mjs` | Platform adapter registry (16+ platforms) |
|
|
404
457
|
| `tools.mjs` | MCP tool table + dispatcher |
|
|
405
458
|
| `connect.mjs` | Connect-code enrollment + device identity |
|
|
406
459
|
| `keystore.mjs` | Local key management (paste-keys, not API keys) |
|
|
@@ -415,7 +468,7 @@ Tests verify (13 groups, 200 assertions):
|
|
|
415
468
|
|
|
416
469
|
## Contributing
|
|
417
470
|
|
|
418
|
-
Contributions welcome. SigRank MCP is built in the open.
|
|
471
|
+
Contributions welcome. SigRank SignalAF MCP is built in the open.
|
|
419
472
|
|
|
420
473
|
- [Contributing guide](./.github/CONTRIBUTING.md)
|
|
421
474
|
- [Security policy](https://github.com/SunrisesIllNeverSee/sigrank-mcp/security/policy)
|