@ramtinj95/opencode-tokenscope 1.4.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.
Files changed (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +526 -0
  3. package/dist/tokenscope-lib/analyzer.d.ts +29 -0
  4. package/dist/tokenscope-lib/analyzer.d.ts.map +1 -0
  5. package/dist/tokenscope-lib/analyzer.js +321 -0
  6. package/dist/tokenscope-lib/analyzer.js.map +1 -0
  7. package/dist/tokenscope-lib/config.d.ts +10 -0
  8. package/dist/tokenscope-lib/config.d.ts.map +1 -0
  9. package/dist/tokenscope-lib/config.js +102 -0
  10. package/dist/tokenscope-lib/config.js.map +1 -0
  11. package/dist/tokenscope-lib/context.d.ts +81 -0
  12. package/dist/tokenscope-lib/context.d.ts.map +1 -0
  13. package/dist/tokenscope-lib/context.js +453 -0
  14. package/dist/tokenscope-lib/context.js.map +1 -0
  15. package/dist/tokenscope-lib/cost.d.ts +9 -0
  16. package/dist/tokenscope-lib/cost.d.ts.map +1 -0
  17. package/dist/tokenscope-lib/cost.js +51 -0
  18. package/dist/tokenscope-lib/cost.js.map +1 -0
  19. package/dist/tokenscope-lib/formatter.d.ts +26 -0
  20. package/dist/tokenscope-lib/formatter.d.ts.map +1 -0
  21. package/dist/tokenscope-lib/formatter.js +415 -0
  22. package/dist/tokenscope-lib/formatter.js.map +1 -0
  23. package/dist/tokenscope-lib/subagent.d.ts +13 -0
  24. package/dist/tokenscope-lib/subagent.d.ts.map +1 -0
  25. package/dist/tokenscope-lib/subagent.js +134 -0
  26. package/dist/tokenscope-lib/subagent.js.map +1 -0
  27. package/dist/tokenscope-lib/tokenizer.d.ts +17 -0
  28. package/dist/tokenscope-lib/tokenizer.d.ts.map +1 -0
  29. package/dist/tokenscope-lib/tokenizer.js +117 -0
  30. package/dist/tokenscope-lib/tokenizer.js.map +1 -0
  31. package/dist/tokenscope-lib/types.d.ts +252 -0
  32. package/dist/tokenscope-lib/types.d.ts.map +1 -0
  33. package/dist/tokenscope-lib/types.js +12 -0
  34. package/dist/tokenscope-lib/types.js.map +1 -0
  35. package/dist/tokenscope.d.ts +4 -0
  36. package/dist/tokenscope.d.ts.map +1 -0
  37. package/dist/tokenscope.js +98 -0
  38. package/dist/tokenscope.js.map +1 -0
  39. package/models.json +290 -0
  40. package/package.json +54 -0
  41. package/tokenscope-config.json +6 -0
package/models.json ADDED
@@ -0,0 +1,290 @@
1
+ {
2
+ "claude-sonnet-4": {
3
+ "input": 3.00,
4
+ "output": 15.00,
5
+ "cacheWrite": 3.75,
6
+ "cacheRead": 0.30
7
+ },
8
+ "claude-sonnet-4-20250514": {
9
+ "input": 3.00,
10
+ "output": 15.00,
11
+ "cacheWrite": 3.75,
12
+ "cacheRead": 0.30
13
+ },
14
+ "claude-sonnet-4-5": {
15
+ "input": 3.00,
16
+ "output": 15.00,
17
+ "cacheWrite": 3.75,
18
+ "cacheRead": 0.30
19
+ },
20
+ "claude-opus-4-5-20251101": {
21
+ "input": 5.00,
22
+ "output": 25.00,
23
+ "cacheWrite": 6.25,
24
+ "cacheRead": 0.50
25
+ },
26
+ "claude-opus-4-5": {
27
+ "input": 5.00,
28
+ "output": 25.00,
29
+ "cacheWrite": 6.25,
30
+ "cacheRead": 0.50
31
+ },
32
+ "claude-sonnet-4-5-20250929": {
33
+ "input": 3.00,
34
+ "output": 15.00,
35
+ "cacheWrite": 3.75,
36
+ "cacheRead": 0.30
37
+ },
38
+ "claude-3.7-sonnet": {
39
+ "input": 3.00,
40
+ "output": 15.00,
41
+ "cacheWrite": 3.75,
42
+ "cacheRead": 0.30
43
+ },
44
+ "claude-3.5-sonnet": {
45
+ "input": 3.00,
46
+ "output": 15.00,
47
+ "cacheWrite": 3.75,
48
+ "cacheRead": 0.30
49
+ },
50
+ "claude-haiku-4-5": {
51
+ "input": 1.00,
52
+ "output": 5.00,
53
+ "cacheWrite": 1.25,
54
+ "cacheRead": 0.10
55
+ },
56
+ "claude-haiku-4-5-20251001": {
57
+ "input": 1.00,
58
+ "output": 5.00,
59
+ "cacheWrite": 1.25,
60
+ "cacheRead": 0.10
61
+ },
62
+ "claude-3.5-haiku": {
63
+ "input": 0.80,
64
+ "output": 4.00,
65
+ "cacheWrite": 1.00,
66
+ "cacheRead": 0.08
67
+ },
68
+ "claude-opus-4": {
69
+ "input": 15.00,
70
+ "output": 75.00,
71
+ "cacheWrite": 18.75,
72
+ "cacheRead": 1.50
73
+ },
74
+ "claude-opus-4.1": {
75
+ "input": 15.00,
76
+ "output": 75.00,
77
+ "cacheWrite": 18.75,
78
+ "cacheRead": 1.50
79
+ },
80
+ "claude-3-opus": {
81
+ "input": 15.00,
82
+ "output": 75.00,
83
+ "cacheWrite": 18.75,
84
+ "cacheRead": 1.50
85
+ },
86
+ "claude-3-sonnet": {
87
+ "input": 3.00,
88
+ "output": 15.00,
89
+ "cacheWrite": 3.75,
90
+ "cacheRead": 0.30
91
+ },
92
+ "claude-3-haiku": {
93
+ "input": 0.25,
94
+ "output": 1.25,
95
+ "cacheWrite": 0.30,
96
+ "cacheRead": 0.03
97
+ },
98
+ "gpt-4o": {
99
+ "input": 2.50,
100
+ "output": 10.00,
101
+ "cacheWrite": 0.00,
102
+ "cacheRead": 0.00
103
+ },
104
+ "gpt-4o-mini": {
105
+ "input": 0.15,
106
+ "output": 0.60,
107
+ "cacheWrite": 0.00,
108
+ "cacheRead": 0.08
109
+ },
110
+ "gpt-4.1": {
111
+ "input": 2.00,
112
+ "output": 8.00,
113
+ "cacheWrite": 0.00,
114
+ "cacheRead": 0.50
115
+ },
116
+ "gpt-4.1-mini": {
117
+ "input": 0.40,
118
+ "output": 1.60,
119
+ "cacheWrite": 0.00,
120
+ "cacheRead": 0.10
121
+ },
122
+ "gpt-3.5-turbo": {
123
+ "input": 0.50,
124
+ "output": 1.50,
125
+ "cacheWrite": 0.00,
126
+ "cacheRead": 0.00
127
+ },
128
+ "gpt-5": {
129
+ "input": 1.25,
130
+ "output": 10.00,
131
+ "cacheWrite": 0.00,
132
+ "cacheRead": 0.00
133
+ },
134
+ "gpt-5-chat": {
135
+ "input": 1.25,
136
+ "output": 10.00,
137
+ "cacheWrite": 0.00,
138
+ "cacheRead": 0.00
139
+ },
140
+ "gpt-5-codex": {
141
+ "input": 1.25,
142
+ "output": 10.00,
143
+ "cacheWrite": 0.00,
144
+ "cacheRead": 0.13
145
+ },
146
+ "gpt-5-image": {
147
+ "input": 5.00,
148
+ "output": 10.00,
149
+ "cacheWrite": 0.00,
150
+ "cacheRead": 1.25
151
+ },
152
+ "gpt-5-mini": {
153
+ "input": 0.25,
154
+ "output": 2.00,
155
+ "cacheWrite": 0.00,
156
+ "cacheRead": 0.00
157
+ },
158
+ "gpt-5-nano": {
159
+ "input": 0.05,
160
+ "output": 0.40,
161
+ "cacheWrite": 0.00,
162
+ "cacheRead": 0.00
163
+ },
164
+ "gpt-5-pro": {
165
+ "input": 15.00,
166
+ "output": 120.00,
167
+ "cacheWrite": 0.00,
168
+ "cacheRead": 0.00
169
+ },
170
+ "gpt-5.1": {
171
+ "input": 1.25,
172
+ "output": 10.00,
173
+ "cacheWrite": 0.00,
174
+ "cacheRead": 0.13
175
+ },
176
+ "gpt-5.1-chat": {
177
+ "input": 1.25,
178
+ "output": 10.00,
179
+ "cacheWrite": 0.00,
180
+ "cacheRead": 0.13
181
+ },
182
+ "gpt-5.1-codex": {
183
+ "input": 1.25,
184
+ "output": 10.00,
185
+ "cacheWrite": 0.00,
186
+ "cacheRead": 0.13
187
+ },
188
+ "gpt-5.1-codex-mini": {
189
+ "input": 0.25,
190
+ "output": 2.00,
191
+ "cacheWrite": 0.00,
192
+ "cacheRead": 0.03
193
+ },
194
+ "deepseek-r1": {
195
+ "input": 0.55,
196
+ "output": 2.19,
197
+ "cacheWrite": 0.00,
198
+ "cacheRead": 0.00
199
+ },
200
+ "deepseek-v3": {
201
+ "input": 0.27,
202
+ "output": 1.10,
203
+ "cacheWrite": 0.00,
204
+ "cacheRead": 0.00
205
+ },
206
+ "deepseek-v2": {
207
+ "input": 0.14,
208
+ "output": 0.28,
209
+ "cacheWrite": 0.00,
210
+ "cacheRead": 0.00
211
+ },
212
+ "llama-3.3": {
213
+ "input": 0.06,
214
+ "output": 0.06,
215
+ "cacheWrite": 0.00,
216
+ "cacheRead": 0.00
217
+ },
218
+ "llama-3.2": {
219
+ "input": 0.055,
220
+ "output": 0.055,
221
+ "cacheWrite": 0.00,
222
+ "cacheRead": 0.00
223
+ },
224
+ "llama-3.1": {
225
+ "input": 0.06,
226
+ "output": 0.06,
227
+ "cacheWrite": 0.00,
228
+ "cacheRead": 0.00
229
+ },
230
+ "mistral-large": {
231
+ "input": 2.00,
232
+ "output": 6.00,
233
+ "cacheWrite": 0.00,
234
+ "cacheRead": 0.00
235
+ },
236
+ "mistral-small": {
237
+ "input": 0.20,
238
+ "output": 0.60,
239
+ "cacheWrite": 0.00,
240
+ "cacheRead": 0.00
241
+ },
242
+ "grok-code": {
243
+ "input": 0.00,
244
+ "output": 0.00,
245
+ "cacheWrite": 0.00,
246
+ "cacheRead": 0.00
247
+ },
248
+ "qwen3-coder": {
249
+ "input": 0.00,
250
+ "output": 0.00,
251
+ "cacheWrite": 0.00,
252
+ "cacheRead": 0.00
253
+ },
254
+ "qwen/qwen3-coder": {
255
+ "input": 0.00,
256
+ "output": 0.00,
257
+ "cacheWrite": 0.00,
258
+ "cacheRead": 0.00
259
+ },
260
+ "kimi-k2": {
261
+ "input": 0.60,
262
+ "output": 2.50,
263
+ "cacheWrite": 0.00,
264
+ "cacheRead": 0.00
265
+ },
266
+ "z-ai/glm-4.5-air": {
267
+ "input": 0.00,
268
+ "output": 0.00,
269
+ "cacheWrite": 0.00,
270
+ "cacheRead": 0.00
271
+ },
272
+ "z-ai/glm-4.5": {
273
+ "input": 0.60,
274
+ "output": 2.20,
275
+ "cacheWrite": 0.11,
276
+ "cacheRead": 0.00
277
+ },
278
+ "z-ai/glm-4.6": {
279
+ "input": 0.60,
280
+ "output": 2.20,
281
+ "cacheWrite": 0.11,
282
+ "cacheRead": 0.00
283
+ },
284
+ "default": {
285
+ "input": 1.00,
286
+ "output": 3.00,
287
+ "cacheWrite": 0.00,
288
+ "cacheRead": 0.00
289
+ }
290
+ }
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/package.json",
3
+ "name": "@ramtinj95/opencode-tokenscope",
4
+ "version": "1.4.0",
5
+ "description": "OpenCode plugin for detailed token usage analysis with breakdowns by category, visual charts, and subagent cost tracking",
6
+ "type": "module",
7
+ "main": "./dist/tokenscope.js",
8
+ "types": "./dist/tokenscope.d.ts",
9
+ "scripts": {
10
+ "clean": "rm -rf dist",
11
+ "build": "npm run clean && tsc",
12
+ "prepublishOnly": "npm run build",
13
+ "typecheck": "tsc --noEmit"
14
+ },
15
+ "keywords": [
16
+ "opencode",
17
+ "opencode-plugin",
18
+ "plugin",
19
+ "tokens",
20
+ "token-usage",
21
+ "analysis",
22
+ "cost-tracking"
23
+ ],
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/ramtinj95/opencode-tokenscope.git"
27
+ },
28
+ "bugs": {
29
+ "url": "https://github.com/ramtinj95/opencode-tokenscope/issues"
30
+ },
31
+ "homepage": "https://github.com/ramtinj95/opencode-tokenscope#readme",
32
+ "author": "ramtinj95",
33
+ "license": "MIT",
34
+ "peerDependencies": {
35
+ "@opencode-ai/plugin": ">=0.13.7"
36
+ },
37
+ "dependencies": {
38
+ "@huggingface/transformers": "^3.1.2",
39
+ "js-tiktoken": "^1.0.15"
40
+ },
41
+ "devDependencies": {
42
+ "@opencode-ai/plugin": "^1.0.143",
43
+ "@types/bun": "^1.2.0",
44
+ "@types/node": "^22.0.0",
45
+ "typescript": "^5.7.0"
46
+ },
47
+ "files": [
48
+ "dist/",
49
+ "models.json",
50
+ "tokenscope-config.json",
51
+ "README.md",
52
+ "LICENSE"
53
+ ]
54
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "enableContextBreakdown": true,
3
+ "enableToolSchemaEstimation": true,
4
+ "enableCacheEfficiency": true,
5
+ "enableSubagentAnalysis": true
6
+ }