@nanocollective/nanocoder 1.15.1 → 1.16.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.
Files changed (145) hide show
  1. package/README.md +8 -1
  2. package/dist/ai-sdk-client.d.ts +5 -0
  3. package/dist/ai-sdk-client.d.ts.map +1 -1
  4. package/dist/ai-sdk-client.js +21 -3
  5. package/dist/ai-sdk-client.js.map +1 -1
  6. package/dist/app/utils/appUtils.d.ts.map +1 -1
  7. package/dist/app/utils/appUtils.js +5 -3
  8. package/dist/app/utils/appUtils.js.map +1 -1
  9. package/dist/commands/index.d.ts +1 -0
  10. package/dist/commands/index.d.ts.map +1 -1
  11. package/dist/commands/index.js +1 -0
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/commands/usage.d.ts +7 -0
  14. package/dist/commands/usage.d.ts.map +1 -0
  15. package/dist/commands/usage.js +69 -0
  16. package/dist/commands/usage.js.map +1 -0
  17. package/dist/commands.d.ts +3 -2
  18. package/dist/commands.d.ts.map +1 -1
  19. package/dist/commands.js.map +1 -1
  20. package/dist/components/usage/progress-bar.d.ts +14 -0
  21. package/dist/components/usage/progress-bar.d.ts.map +1 -0
  22. package/dist/components/usage/progress-bar.js +14 -0
  23. package/dist/components/usage/progress-bar.js.map +1 -0
  24. package/dist/components/usage/usage-display.d.ts +18 -0
  25. package/dist/components/usage/usage-display.d.ts.map +1 -0
  26. package/dist/components/usage/usage-display.js +50 -0
  27. package/dist/components/usage/usage-display.js.map +1 -0
  28. package/dist/config/paths.d.ts +0 -4
  29. package/dist/config/paths.d.ts.map +1 -1
  30. package/dist/config/paths.js +2 -18
  31. package/dist/config/paths.js.map +1 -1
  32. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  33. package/dist/hooks/useAppInitialization.js +2 -1
  34. package/dist/hooks/useAppInitialization.js.map +1 -1
  35. package/dist/hooks/useAppState.d.ts +2 -0
  36. package/dist/hooks/useAppState.d.ts.map +1 -1
  37. package/dist/hooks/useAppState.js +27 -5
  38. package/dist/hooks/useAppState.js.map +1 -1
  39. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  40. package/dist/hooks/useChatHandler.js +45 -9
  41. package/dist/hooks/useChatHandler.js.map +1 -1
  42. package/dist/models/index.d.ts +2 -0
  43. package/dist/models/index.d.ts.map +1 -0
  44. package/dist/models/index.js +2 -0
  45. package/dist/models/index.js.map +1 -0
  46. package/dist/models/models-cache.d.ts +8 -0
  47. package/dist/models/models-cache.d.ts.map +1 -0
  48. package/dist/models/models-cache.js +63 -0
  49. package/dist/models/models-cache.js.map +1 -0
  50. package/dist/models/models-dev-client.d.ts +10 -0
  51. package/dist/models/models-dev-client.d.ts.map +1 -0
  52. package/dist/models/models-dev-client.js +268 -0
  53. package/dist/models/models-dev-client.js.map +1 -0
  54. package/dist/models/models-types.d.ts +66 -0
  55. package/dist/models/models-types.d.ts.map +1 -0
  56. package/dist/models/models-types.js +5 -0
  57. package/dist/models/models-types.js.map +1 -0
  58. package/dist/recommendations/model-database.d.ts.map +1 -1
  59. package/dist/recommendations/model-database.js +45 -0
  60. package/dist/recommendations/model-database.js.map +1 -1
  61. package/dist/tokenization/index.d.ts +2 -0
  62. package/dist/tokenization/index.d.ts.map +1 -0
  63. package/dist/tokenization/index.js +2 -0
  64. package/dist/tokenization/index.js.map +1 -0
  65. package/dist/tokenization/tokenizer-factory.d.ts +14 -0
  66. package/dist/tokenization/tokenizer-factory.d.ts.map +1 -0
  67. package/dist/tokenization/tokenizer-factory.js +90 -0
  68. package/dist/tokenization/tokenizer-factory.js.map +1 -0
  69. package/dist/tokenization/tokenizer-factory.spec.d.ts +5 -0
  70. package/dist/tokenization/tokenizer-factory.spec.d.ts.map +1 -0
  71. package/dist/tokenization/tokenizer-factory.spec.js +137 -0
  72. package/dist/tokenization/tokenizer-factory.spec.js.map +1 -0
  73. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +17 -0
  74. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -0
  75. package/dist/tokenization/tokenizers/anthropic-tokenizer.js +35 -0
  76. package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -0
  77. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.d.ts +5 -0
  78. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.d.ts.map +1 -0
  79. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js +152 -0
  80. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -0
  81. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +13 -0
  82. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -0
  83. package/dist/tokenization/tokenizers/fallback-tokenizer.js +20 -0
  84. package/dist/tokenization/tokenizers/fallback-tokenizer.js.map +1 -0
  85. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.d.ts +5 -0
  86. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.d.ts.map +1 -0
  87. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js +183 -0
  88. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -0
  89. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +14 -0
  90. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -0
  91. package/dist/tokenization/tokenizers/llama-tokenizer.js +33 -0
  92. package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -0
  93. package/dist/tokenization/tokenizers/llama-tokenizer.spec.d.ts +5 -0
  94. package/dist/tokenization/tokenizers/llama-tokenizer.spec.d.ts.map +1 -0
  95. package/dist/tokenization/tokenizers/llama-tokenizer.spec.js +170 -0
  96. package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -0
  97. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +22 -0
  98. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -0
  99. package/dist/tokenization/tokenizers/openai-tokenizer.js +48 -0
  100. package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -0
  101. package/dist/tokenization/tokenizers/openai-tokenizer.spec.d.ts +5 -0
  102. package/dist/tokenization/tokenizers/openai-tokenizer.spec.d.ts.map +1 -0
  103. package/dist/tokenization/tokenizers/openai-tokenizer.spec.js +140 -0
  104. package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -0
  105. package/dist/types/commands.d.ts +1 -0
  106. package/dist/types/commands.d.ts.map +1 -1
  107. package/dist/types/tokenization.d.ts +31 -0
  108. package/dist/types/tokenization.d.ts.map +1 -0
  109. package/dist/types/tokenization.js +5 -0
  110. package/dist/types/tokenization.js.map +1 -0
  111. package/dist/types/usage.d.ts +55 -0
  112. package/dist/types/usage.d.ts.map +1 -0
  113. package/dist/types/usage.js +2 -0
  114. package/dist/types/usage.js.map +1 -0
  115. package/dist/usage/calculator.d.ts +28 -0
  116. package/dist/usage/calculator.d.ts.map +1 -0
  117. package/dist/usage/calculator.js +81 -0
  118. package/dist/usage/calculator.js.map +1 -0
  119. package/dist/usage/calculator.spec.d.ts +2 -0
  120. package/dist/usage/calculator.spec.d.ts.map +1 -0
  121. package/dist/usage/calculator.spec.js +303 -0
  122. package/dist/usage/calculator.spec.js.map +1 -0
  123. package/dist/usage/storage.d.ts +19 -0
  124. package/dist/usage/storage.d.ts.map +1 -0
  125. package/dist/usage/storage.js +134 -0
  126. package/dist/usage/storage.js.map +1 -0
  127. package/dist/usage/storage.spec.d.ts +2 -0
  128. package/dist/usage/storage.spec.d.ts.map +1 -0
  129. package/dist/usage/storage.spec.js +417 -0
  130. package/dist/usage/storage.spec.js.map +1 -0
  131. package/dist/usage/tracker.d.ts +28 -0
  132. package/dist/usage/tracker.d.ts.map +1 -0
  133. package/dist/usage/tracker.js +75 -0
  134. package/dist/usage/tracker.js.map +1 -0
  135. package/dist/usage/tracker.spec.d.ts +2 -0
  136. package/dist/usage/tracker.spec.d.ts.map +1 -0
  137. package/dist/usage/tracker.spec.js +347 -0
  138. package/dist/usage/tracker.spec.js.map +1 -0
  139. package/dist/utils/paste-roundtrip.spec.d.ts.map +1 -0
  140. package/dist/utils/paste-roundtrip.spec.js.map +1 -0
  141. package/package.json +6 -2
  142. package/dist/integration/paste-roundtrip.spec.d.ts.map +0 -1
  143. package/dist/integration/paste-roundtrip.spec.js.map +0 -1
  144. /package/dist/{integration → utils}/paste-roundtrip.spec.d.ts +0 -0
  145. /package/dist/{integration → utils}/paste-roundtrip.spec.js +0 -0
@@ -0,0 +1,347 @@
1
+ import test from 'ava';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ import * as os from 'node:os';
5
+ import { SessionTracker, initializeSession, getCurrentSession, clearCurrentSession, } from './tracker.js';
6
+ import { readUsageData, clearUsageData } from './storage.js';
7
+ console.log('\ntracker.spec.ts');
8
+ // ============================================================================
9
+ // Mock Tokenizer
10
+ // ============================================================================
11
+ class MockTokenizer {
12
+ getName() {
13
+ return 'mock-tokenizer';
14
+ }
15
+ countTokens(message) {
16
+ // Simple mock: 1 token per 4 characters
17
+ return Math.ceil(message.content.length / 4);
18
+ }
19
+ encode(text) {
20
+ // Return token count (1 token per 4 characters)
21
+ return Math.ceil(text.length / 4);
22
+ }
23
+ }
24
+ // ============================================================================
25
+ // Test Setup
26
+ // ============================================================================
27
+ function createTestDir() {
28
+ const testDir = path.join(os.tmpdir(), `nanocoder-test-${Date.now()}-${Math.random().toString(36).substring(7)}`);
29
+ fs.mkdirSync(testDir, { recursive: true });
30
+ return testDir;
31
+ }
32
+ let originalEnv;
33
+ test.before(() => {
34
+ originalEnv = { ...process.env };
35
+ });
36
+ test.beforeEach(() => {
37
+ const testDir = createTestDir();
38
+ process.env.XDG_CONFIG_HOME = testDir;
39
+ clearCurrentSession(); // Clear any lingering session from previous tests
40
+ });
41
+ test.afterEach(() => {
42
+ clearCurrentSession();
43
+ clearUsageData();
44
+ try {
45
+ if (process.env.XDG_CONFIG_HOME) {
46
+ fs.rmSync(process.env.XDG_CONFIG_HOME, { recursive: true, force: true });
47
+ }
48
+ }
49
+ catch (error) {
50
+ // Ignore cleanup errors
51
+ }
52
+ });
53
+ test.after(() => {
54
+ process.env = originalEnv;
55
+ });
56
+ // Helper to create messages
57
+ function createMockMessages() {
58
+ return [
59
+ { role: 'system', content: 'You are a helpful assistant.' },
60
+ { role: 'user', content: 'Hello' },
61
+ { role: 'assistant', content: 'Hi there!' },
62
+ ];
63
+ }
64
+ // ============================================================================
65
+ // SessionTracker Constructor Tests
66
+ // ============================================================================
67
+ test('SessionTracker initializes with provider and model', t => {
68
+ const tracker = new SessionTracker('openai', 'gpt-4');
69
+ const info = tracker.getSessionInfo();
70
+ t.is(info.provider, 'openai');
71
+ t.is(info.model, 'gpt-4');
72
+ t.truthy(info.id);
73
+ t.truthy(info.startTime);
74
+ });
75
+ test('SessionTracker generates unique session IDs', t => {
76
+ const tracker1 = new SessionTracker('openai', 'gpt-4');
77
+ const tracker2 = new SessionTracker('anthropic', 'claude');
78
+ const info1 = tracker1.getSessionInfo();
79
+ const info2 = tracker2.getSessionInfo();
80
+ t.not(info1.id, info2.id);
81
+ });
82
+ test('SessionTracker records start time', t => {
83
+ const before = Date.now();
84
+ const tracker = new SessionTracker('openai', 'gpt-4');
85
+ const after = Date.now();
86
+ const info = tracker.getSessionInfo();
87
+ t.true(info.startTime >= before);
88
+ t.true(info.startTime <= after);
89
+ });
90
+ // ============================================================================
91
+ // getCurrentStats Tests
92
+ // ============================================================================
93
+ test('getCurrentStats returns stats for empty messages', async (t) => {
94
+ const tracker = new SessionTracker('openai', 'gpt-4');
95
+ const tokenizer = new MockTokenizer();
96
+ const messages = [];
97
+ const stats = await tracker.getCurrentStats(messages, tokenizer);
98
+ t.is(stats.provider, 'openai');
99
+ t.is(stats.model, 'gpt-4');
100
+ t.is(stats.messageCount, 0);
101
+ t.is(stats.tokens.total, 0);
102
+ t.truthy(stats.startTime);
103
+ });
104
+ test('getCurrentStats calculates token breakdown', async (t) => {
105
+ const tracker = new SessionTracker('openai', 'gpt-4');
106
+ const tokenizer = new MockTokenizer();
107
+ const messages = createMockMessages();
108
+ const stats = await tracker.getCurrentStats(messages, tokenizer);
109
+ t.is(stats.messageCount, 3);
110
+ t.true(stats.tokens.total > 0);
111
+ t.true(stats.tokens.system > 0);
112
+ t.true(stats.tokens.userMessages > 0);
113
+ t.true(stats.tokens.assistantMessages > 0);
114
+ });
115
+ test('getCurrentStats includes context limit and percent used', async (t) => {
116
+ const tracker = new SessionTracker('openai', 'gpt-4');
117
+ const tokenizer = new MockTokenizer();
118
+ const messages = createMockMessages();
119
+ const stats = await tracker.getCurrentStats(messages, tokenizer);
120
+ // Context limit may be null if model not found
121
+ if (stats.contextLimit) {
122
+ t.true(stats.contextLimit > 0);
123
+ t.true(stats.percentUsed >= 0);
124
+ t.true(stats.percentUsed <= 100 || stats.percentUsed > 100); // Allow over 100%
125
+ }
126
+ else {
127
+ t.is(stats.percentUsed, 0);
128
+ }
129
+ });
130
+ test('getCurrentStats calculates percent used correctly', async (t) => {
131
+ const tracker = new SessionTracker('openai', 'gpt-4');
132
+ const tokenizer = new MockTokenizer();
133
+ // Create a message with known token count
134
+ const messages = [
135
+ { role: 'user', content: 'a'.repeat(400) }, // 400 chars / 4 = 100 tokens
136
+ ];
137
+ const stats = await tracker.getCurrentStats(messages, tokenizer);
138
+ t.is(stats.tokens.total, 100);
139
+ if (stats.contextLimit) {
140
+ const expectedPercent = (100 / stats.contextLimit) * 100;
141
+ t.is(stats.percentUsed, expectedPercent);
142
+ }
143
+ });
144
+ // ============================================================================
145
+ // saveSession Tests
146
+ // ============================================================================
147
+ test('saveSession persists session to storage', t => {
148
+ const tracker = new SessionTracker('openai', 'gpt-4');
149
+ const tokenizer = new MockTokenizer();
150
+ const messages = createMockMessages();
151
+ tracker.saveSession(messages, tokenizer);
152
+ const data = readUsageData();
153
+ t.is(data.sessions.length, 1);
154
+ const session = data.sessions[0];
155
+ t.is(session.provider, 'openai');
156
+ t.is(session.model, 'gpt-4');
157
+ t.is(session.messageCount, 3);
158
+ t.true(session.tokens.total > 0);
159
+ t.true(session.duration !== undefined);
160
+ t.true(session.duration >= 0);
161
+ });
162
+ test('saveSession includes duration', t => {
163
+ const tracker = new SessionTracker('openai', 'gpt-4');
164
+ const tokenizer = new MockTokenizer();
165
+ const messages = createMockMessages();
166
+ // Wait a bit to ensure duration > 0
167
+ const start = Date.now();
168
+ while (Date.now() - start < 10) {
169
+ // Small delay
170
+ }
171
+ tracker.saveSession(messages, tokenizer);
172
+ const data = readUsageData();
173
+ const session = data.sessions[0];
174
+ t.true(session.duration >= 10);
175
+ });
176
+ test('saveSession saves correct token breakdown', t => {
177
+ const tracker = new SessionTracker('openai', 'gpt-4');
178
+ const tokenizer = new MockTokenizer();
179
+ const messages = [
180
+ { role: 'system', content: 'abcd' }, // 4 chars = 1 token
181
+ { role: 'user', content: 'abcdefgh' }, // 8 chars = 2 tokens
182
+ { role: 'assistant', content: 'abcdefghijkl' }, // 12 chars = 3 tokens
183
+ ];
184
+ tracker.saveSession(messages, tokenizer);
185
+ const data = readUsageData();
186
+ const session = data.sessions[0];
187
+ t.is(session.tokens.system, 1);
188
+ t.is(session.tokens.userMessages, 2);
189
+ t.is(session.tokens.assistantMessages, 3);
190
+ t.is(session.tokens.total, 6);
191
+ });
192
+ // ============================================================================
193
+ // updateProviderModel Tests
194
+ // ============================================================================
195
+ test('updateProviderModel changes provider and model', t => {
196
+ const tracker = new SessionTracker('openai', 'gpt-4');
197
+ tracker.updateProviderModel('anthropic', 'claude-3');
198
+ const info = tracker.getSessionInfo();
199
+ t.is(info.provider, 'anthropic');
200
+ t.is(info.model, 'claude-3');
201
+ });
202
+ test('updateProviderModel preserves session ID and start time', t => {
203
+ const tracker = new SessionTracker('openai', 'gpt-4');
204
+ const infoBefore = tracker.getSessionInfo();
205
+ tracker.updateProviderModel('anthropic', 'claude');
206
+ const infoAfter = tracker.getSessionInfo();
207
+ t.is(infoAfter.id, infoBefore.id);
208
+ t.is(infoAfter.startTime, infoBefore.startTime);
209
+ });
210
+ test('updateProviderModel affects saved session', t => {
211
+ const tracker = new SessionTracker('openai', 'gpt-4');
212
+ const tokenizer = new MockTokenizer();
213
+ const messages = createMockMessages();
214
+ tracker.updateProviderModel('anthropic', 'claude-3-opus');
215
+ tracker.saveSession(messages, tokenizer);
216
+ const data = readUsageData();
217
+ const session = data.sessions[0];
218
+ t.is(session.provider, 'anthropic');
219
+ t.is(session.model, 'claude-3-opus');
220
+ });
221
+ // ============================================================================
222
+ // getSessionInfo Tests
223
+ // ============================================================================
224
+ test('getSessionInfo returns current session details', t => {
225
+ const tracker = new SessionTracker('openai', 'gpt-4');
226
+ const info = tracker.getSessionInfo();
227
+ t.truthy(info.id);
228
+ t.is(info.provider, 'openai');
229
+ t.is(info.model, 'gpt-4');
230
+ t.truthy(info.startTime);
231
+ });
232
+ // ============================================================================
233
+ // Module-level Functions Tests
234
+ // ============================================================================
235
+ test('initializeSession creates new session tracker', t => {
236
+ initializeSession('openai', 'gpt-4');
237
+ const session = getCurrentSession();
238
+ t.truthy(session);
239
+ const info = session.getSessionInfo();
240
+ t.is(info.provider, 'openai');
241
+ t.is(info.model, 'gpt-4');
242
+ });
243
+ test('getCurrentSession returns null initially', t => {
244
+ const session = getCurrentSession();
245
+ t.is(session, null);
246
+ });
247
+ test('getCurrentSession returns initialized session', t => {
248
+ initializeSession('openai', 'gpt-4');
249
+ const session = getCurrentSession();
250
+ t.truthy(session);
251
+ t.true(session instanceof SessionTracker);
252
+ });
253
+ test('clearCurrentSession removes current session', t => {
254
+ initializeSession('openai', 'gpt-4');
255
+ let session = getCurrentSession();
256
+ t.truthy(session);
257
+ clearCurrentSession();
258
+ session = getCurrentSession();
259
+ t.is(session, null);
260
+ });
261
+ test('clearCurrentSession is idempotent', t => {
262
+ clearCurrentSession();
263
+ clearCurrentSession();
264
+ const session = getCurrentSession();
265
+ t.is(session, null);
266
+ });
267
+ test('initializeSession replaces existing session', t => {
268
+ initializeSession('openai', 'gpt-4');
269
+ const session1 = getCurrentSession();
270
+ const info1 = session1.getSessionInfo();
271
+ initializeSession('anthropic', 'claude-3-opus');
272
+ const session2 = getCurrentSession();
273
+ const info2 = session2.getSessionInfo();
274
+ t.not(info1.id, info2.id);
275
+ t.is(info2.provider, 'anthropic');
276
+ t.is(info2.model, 'claude-3-opus');
277
+ });
278
+ // ============================================================================
279
+ // Integration Tests
280
+ // ============================================================================
281
+ test('complete session tracking flow', async (t) => {
282
+ // Initialize session
283
+ initializeSession('openai', 'gpt-4');
284
+ const tracker = getCurrentSession();
285
+ t.truthy(tracker);
286
+ // Get current stats
287
+ const tokenizer = new MockTokenizer();
288
+ const messages = createMockMessages();
289
+ const stats = await tracker.getCurrentStats(messages, tokenizer);
290
+ t.is(stats.provider, 'openai');
291
+ t.is(stats.model, 'gpt-4');
292
+ t.is(stats.messageCount, 3);
293
+ t.true(stats.tokens.total > 0);
294
+ // Save session
295
+ tracker.saveSession(messages, tokenizer);
296
+ // Verify session was saved
297
+ const data = readUsageData();
298
+ t.is(data.sessions.length, 1);
299
+ const savedSession = data.sessions[0];
300
+ t.is(savedSession.provider, 'openai');
301
+ t.is(savedSession.model, 'gpt-4');
302
+ t.is(savedSession.messageCount, 3);
303
+ // Clear session
304
+ clearCurrentSession();
305
+ t.is(getCurrentSession(), null);
306
+ });
307
+ test('session tracking across provider/model changes', async (t) => {
308
+ // Initialize with first provider/model
309
+ initializeSession('openai', 'gpt-4');
310
+ const tracker = getCurrentSession();
311
+ // Change provider/model
312
+ tracker.updateProviderModel('anthropic', 'claude-3-opus');
313
+ // Get stats
314
+ const tokenizer = new MockTokenizer();
315
+ const messages = createMockMessages();
316
+ const stats = await tracker.getCurrentStats(messages, tokenizer);
317
+ t.is(stats.provider, 'anthropic');
318
+ t.is(stats.model, 'claude-3-opus');
319
+ // Save session
320
+ tracker.saveSession(messages, tokenizer);
321
+ // Verify correct provider/model was saved
322
+ const data = readUsageData();
323
+ const session = data.sessions[0];
324
+ t.is(session.provider, 'anthropic');
325
+ t.is(session.model, 'claude-3-opus');
326
+ });
327
+ test('multiple sessions tracked correctly', t => {
328
+ const tokenizer = new MockTokenizer();
329
+ const messages = createMockMessages();
330
+ // Session 1
331
+ initializeSession('openai', 'gpt-4');
332
+ getCurrentSession().saveSession(messages, tokenizer);
333
+ // Session 2
334
+ initializeSession('anthropic', 'claude');
335
+ getCurrentSession().saveSession(messages, tokenizer);
336
+ // Session 3
337
+ initializeSession('openai', 'gpt-3.5');
338
+ getCurrentSession().saveSession(messages, tokenizer);
339
+ // Verify all sessions saved
340
+ const data = readUsageData();
341
+ t.is(data.sessions.length, 3);
342
+ // Verify they're in reverse order (most recent first)
343
+ t.is(data.sessions[0].model, 'gpt-3.5');
344
+ t.is(data.sessions[1].model, 'claude');
345
+ t.is(data.sessions[2].model, 'gpt-4');
346
+ });
347
+ //# sourceMappingURL=tracker.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.spec.js","sourceRoot":"","sources":["../../source/usage/tracker.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAI3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAEjC,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,aAAa;IAClB,OAAO;QACN,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,OAAgB;QAC3B,wCAAwC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAY;QAClB,gDAAgD;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;CACD;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,SAAS,aAAa;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACxB,EAAE,CAAC,MAAM,EAAE,EACX,kBAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CACzE,CAAC;IACF,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,IAAI,WAA8B,CAAC;AAEnC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;IAChB,WAAW,GAAG,EAAC,GAAG,OAAO,CAAC,GAAG,EAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;IACpB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,kDAAkD;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;IACnB,mBAAmB,EAAE,CAAC;IACtB,cAAc,EAAE,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YACjC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,wBAAwB;IACzB,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;IACf,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,4BAA4B;AAC5B,SAAS,kBAAkB;IAC1B,OAAO;QACN,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,8BAA8B,EAAC;QACzD,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAC;QAChC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAC;KACzC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E,IAAI,CAAC,oDAAoD,EAAE,CAAC,CAAC,EAAE;IAC9D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAEtC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACvD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAExC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAEtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,IAAI,CAAC,kDAAkD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACzE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjE,+CAA+C;IAC/C,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,GAAG,IAAI,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB;IAChF,CAAC;SAAM,CAAC;QACP,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACnE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,0CAA0C;IAC1C,MAAM,QAAQ,GAAc;QAC3B,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC,EAAE,6BAA6B;KACvE,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE9B,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;QACzD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC1C,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,IAAI,CAAC,yCAAyC,EAAE,CAAC,CAAC,EAAE;IACnD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAS,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE;IACzC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,oCAAoC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC;QAChC,cAAc;IACf,CAAC;IAED,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAElC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAS,IAAI,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAc;QAC3B,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAC,EAAE,oBAAoB;QACvD,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAC,EAAE,qBAAqB;QAC1D,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAC,EAAE,sBAAsB;KACpE,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAElC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,IAAI,CAAC,gDAAgD,EAAE,CAAC,CAAC,EAAE;IAC1D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEtD,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yDAAyD,EAAE,CAAC,CAAC,EAAE;IACnE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAE5C,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAE3C,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAElC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,IAAI,CAAC,gDAAgD,EAAE,CAAC,CAAC,EAAE;IAC1D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAEtC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACzD,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,MAAM,IAAI,GAAG,OAAQ,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE;IACzD,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,cAAc,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACvD,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAErC,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAClC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,mBAAmB,EAAE,CAAC;IAEtB,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE;IAC7C,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,CAAC;IAEtB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACvD,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,QAAS,CAAC,cAAc,EAAE,CAAC;IAEzC,iBAAiB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,QAAS,CAAC,cAAc,EAAE,CAAC;IAEzC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,IAAI,CAAC,gCAAgC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAChD,qBAAqB;IACrB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,oBAAoB;IACpB,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,OAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAElE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAE/B,eAAe;IACf,OAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAEnC,gBAAgB;IAChB,mBAAmB,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAChE,uCAAuC;IACvC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,iBAAiB,EAAG,CAAC;IAErC,wBAAwB;IACxB,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAE1D,YAAY;IACZ,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAEnC,eAAe;IACf,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEzC,0CAA0C;IAC1C,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;IAElC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE;IAC/C,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,YAAY;IACZ,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,iBAAiB,EAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtD,YAAY;IACZ,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzC,iBAAiB,EAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtD,YAAY;IACZ,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvC,iBAAiB,EAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9B,sDAAsD;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste-roundtrip.spec.d.ts","sourceRoot":"","sources":["../../source/utils/paste-roundtrip.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste-roundtrip.spec.js","sourceRoot":"","sources":["../../source/utils/paste-roundtrip.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nanocollective/nanocoder",
3
3
  "main": "dist/cli.js",
4
- "version": "1.15.1",
4
+ "version": "1.16.1",
5
5
  "description": "A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter",
6
6
  "keywords": [
7
7
  "cli",
@@ -53,6 +53,7 @@
53
53
  ],
54
54
  "dependencies": {
55
55
  "@ai-sdk/openai-compatible": "^1.0.24",
56
+ "@anthropic-ai/tokenizer": "^0.0.4",
56
57
  "@mishieck/ink-titled-box": "^0.3.0",
57
58
  "@modelcontextprotocol/sdk": "^1.17.3",
58
59
  "@nanocollective/get-md": "^1.0.1",
@@ -69,9 +70,12 @@
69
70
  "ink-spinner": "^5.0.0",
70
71
  "ink-tab": "^5.2.0",
71
72
  "ink-text-input": "^6.0.0",
73
+ "llama-tokenizer-js": "^1.2.2",
72
74
  "react": "^19.0.0",
73
75
  "systeminformation": "^5.27.10",
74
- "undici": "^7.16.0"
76
+ "tiktoken": "^1.0.22",
77
+ "undici": "^7.16.0",
78
+ "xdg-basedir": "^5.1.0"
75
79
  },
76
80
  "devDependencies": {
77
81
  "@ava/typescript": "^6.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste-roundtrip.spec.d.ts","sourceRoot":"","sources":["../../source/integration/paste-roundtrip.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste-roundtrip.spec.js","sourceRoot":"","sources":["../../source/integration/paste-roundtrip.spec.ts"],"names":[],"mappings":"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"}