@nanocollective/nanocoder 1.15.1 → 1.16.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 +8 -1
- package/dist/ai-sdk-client.d.ts +5 -0
- package/dist/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client.js +21 -3
- package/dist/ai-sdk-client.js.map +1 -1
- package/dist/app/utils/appUtils.d.ts.map +1 -1
- package/dist/app/utils/appUtils.js +5 -3
- package/dist/app/utils/appUtils.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/usage.d.ts +7 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +69 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands.d.ts +3 -2
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/components/usage/progress-bar.d.ts +14 -0
- package/dist/components/usage/progress-bar.d.ts.map +1 -0
- package/dist/components/usage/progress-bar.js +14 -0
- package/dist/components/usage/progress-bar.js.map +1 -0
- package/dist/components/usage/usage-display.d.ts +18 -0
- package/dist/components/usage/usage-display.d.ts.map +1 -0
- package/dist/components/usage/usage-display.js +50 -0
- package/dist/components/usage/usage-display.js.map +1 -0
- package/dist/config/paths.d.ts +0 -4
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +2 -18
- package/dist/config/paths.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +2 -1
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +2 -0
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +27 -5
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +45 -9
- package/dist/hooks/useChatHandler.js.map +1 -1
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/models-cache.d.ts +8 -0
- package/dist/models/models-cache.d.ts.map +1 -0
- package/dist/models/models-cache.js +63 -0
- package/dist/models/models-cache.js.map +1 -0
- package/dist/models/models-dev-client.d.ts +10 -0
- package/dist/models/models-dev-client.d.ts.map +1 -0
- package/dist/models/models-dev-client.js +268 -0
- package/dist/models/models-dev-client.js.map +1 -0
- package/dist/models/models-types.d.ts +66 -0
- package/dist/models/models-types.d.ts.map +1 -0
- package/dist/models/models-types.js +5 -0
- package/dist/models/models-types.js.map +1 -0
- package/dist/recommendations/model-database.d.ts.map +1 -1
- package/dist/recommendations/model-database.js +45 -0
- package/dist/recommendations/model-database.js.map +1 -1
- package/dist/tokenization/index.d.ts +2 -0
- package/dist/tokenization/index.d.ts.map +1 -0
- package/dist/tokenization/index.js +2 -0
- package/dist/tokenization/index.js.map +1 -0
- package/dist/tokenization/tokenizer-factory.d.ts +14 -0
- package/dist/tokenization/tokenizer-factory.d.ts.map +1 -0
- package/dist/tokenization/tokenizer-factory.js +90 -0
- package/dist/tokenization/tokenizer-factory.js.map +1 -0
- package/dist/tokenization/tokenizer-factory.spec.d.ts +5 -0
- package/dist/tokenization/tokenizer-factory.spec.d.ts.map +1 -0
- package/dist/tokenization/tokenizer-factory.spec.js +137 -0
- package/dist/tokenization/tokenizer-factory.spec.js.map +1 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +17 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.js +35 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.d.ts +5 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js +152 -0
- package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +13 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.js +20 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.js.map +1 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.spec.d.ts +5 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.spec.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js +183 -0
- package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +14 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.js +33 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.spec.d.ts +5 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.spec.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.spec.js +170 -0
- package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +22 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.js +48 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.spec.d.ts +5 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.spec.d.ts.map +1 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.spec.js +140 -0
- package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -0
- package/dist/types/commands.d.ts +1 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/tokenization.d.ts +31 -0
- package/dist/types/tokenization.d.ts.map +1 -0
- package/dist/types/tokenization.js +5 -0
- package/dist/types/tokenization.js.map +1 -0
- package/dist/types/usage.d.ts +55 -0
- package/dist/types/usage.d.ts.map +1 -0
- package/dist/types/usage.js +2 -0
- package/dist/types/usage.js.map +1 -0
- package/dist/usage/calculator.d.ts +28 -0
- package/dist/usage/calculator.d.ts.map +1 -0
- package/dist/usage/calculator.js +81 -0
- package/dist/usage/calculator.js.map +1 -0
- package/dist/usage/calculator.spec.d.ts +2 -0
- package/dist/usage/calculator.spec.d.ts.map +1 -0
- package/dist/usage/calculator.spec.js +303 -0
- package/dist/usage/calculator.spec.js.map +1 -0
- package/dist/usage/storage.d.ts +19 -0
- package/dist/usage/storage.d.ts.map +1 -0
- package/dist/usage/storage.js +134 -0
- package/dist/usage/storage.js.map +1 -0
- package/dist/usage/storage.spec.d.ts +2 -0
- package/dist/usage/storage.spec.d.ts.map +1 -0
- package/dist/usage/storage.spec.js +417 -0
- package/dist/usage/storage.spec.js.map +1 -0
- package/dist/usage/tracker.d.ts +28 -0
- package/dist/usage/tracker.d.ts.map +1 -0
- package/dist/usage/tracker.js +75 -0
- package/dist/usage/tracker.js.map +1 -0
- package/dist/usage/tracker.spec.d.ts +2 -0
- package/dist/usage/tracker.spec.d.ts.map +1 -0
- package/dist/usage/tracker.spec.js +347 -0
- package/dist/usage/tracker.spec.js.map +1 -0
- package/dist/utils/paste-roundtrip.spec.d.ts.map +1 -0
- package/dist/utils/paste-roundtrip.spec.js.map +1 -0
- package/package.json +7 -2
- package/dist/integration/paste-roundtrip.spec.d.ts.map +0 -1
- package/dist/integration/paste-roundtrip.spec.js.map +0 -1
- /package/dist/{integration → utils}/paste-roundtrip.spec.d.ts +0 -0
- /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":"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"}
|
|
@@ -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.
|
|
4
|
+
"version": "1.16.0",
|
|
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",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"build": "tsc && tsc-alias && chmod +x dist/cli.js",
|
|
36
36
|
"dev": "tsc --watch",
|
|
37
37
|
"start": "node dist/cli.js",
|
|
38
|
+
"postinstall": "node scripts/fetch-models.js",
|
|
38
39
|
"release:nix": "./scripts/update-nix-version.sh",
|
|
39
40
|
"test:all": "./scripts/test.sh",
|
|
40
41
|
"test:ava": "ava",
|
|
@@ -53,6 +54,7 @@
|
|
|
53
54
|
],
|
|
54
55
|
"dependencies": {
|
|
55
56
|
"@ai-sdk/openai-compatible": "^1.0.24",
|
|
57
|
+
"@anthropic-ai/tokenizer": "^0.0.4",
|
|
56
58
|
"@mishieck/ink-titled-box": "^0.3.0",
|
|
57
59
|
"@modelcontextprotocol/sdk": "^1.17.3",
|
|
58
60
|
"@nanocollective/get-md": "^1.0.1",
|
|
@@ -69,9 +71,12 @@
|
|
|
69
71
|
"ink-spinner": "^5.0.0",
|
|
70
72
|
"ink-tab": "^5.2.0",
|
|
71
73
|
"ink-text-input": "^6.0.0",
|
|
74
|
+
"llama-tokenizer-js": "^1.2.2",
|
|
72
75
|
"react": "^19.0.0",
|
|
73
76
|
"systeminformation": "^5.27.10",
|
|
74
|
-
"
|
|
77
|
+
"tiktoken": "^1.0.22",
|
|
78
|
+
"undici": "^7.16.0",
|
|
79
|
+
"xdg-basedir": "^5.1.0"
|
|
75
80
|
},
|
|
76
81
|
"devDependencies": {
|
|
77
82
|
"@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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"}
|
|
File without changes
|
|
File without changes
|