@yakirmar/mcp-toggl 1.1.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.
@@ -0,0 +1,484 @@
1
+ export class CacheManager {
2
+ workspaces = new Map();
3
+ projects = new Map();
4
+ clients = new Map();
5
+ tasks = new Map();
6
+ users = new Map();
7
+ tags = new Map();
8
+ workspaceList = null;
9
+ projectsByWorkspace = new Map();
10
+ clientsByWorkspace = new Map();
11
+ tagsByWorkspace = new Map();
12
+ // Track cache performance
13
+ stats = {
14
+ hits: 0,
15
+ misses: 0,
16
+ lastReset: new Date(),
17
+ };
18
+ config;
19
+ api; // Will be set after API client is created
20
+ constructor(config) {
21
+ this.config = config;
22
+ }
23
+ setAPI(api) {
24
+ this.api = api;
25
+ }
26
+ // Check if cache entry is still valid
27
+ isValid(entry) {
28
+ if (!entry)
29
+ return false;
30
+ const age = Date.now() - entry.timestamp.getTime();
31
+ return age < entry.ttl;
32
+ }
33
+ // Generic cache getter
34
+ getCached(cache, id) {
35
+ const entry = cache.get(id);
36
+ if (this.isValid(entry)) {
37
+ this.stats.hits++;
38
+ return entry.data;
39
+ }
40
+ this.stats.misses++;
41
+ return null;
42
+ }
43
+ getCachedCollection(entry) {
44
+ if (this.isValid(entry)) {
45
+ this.stats.hits++;
46
+ return entry.data;
47
+ }
48
+ this.stats.misses++;
49
+ return null;
50
+ }
51
+ cacheBucketLimit() {
52
+ return Math.max(1, Math.ceil(this.config.maxSize / 6));
53
+ }
54
+ // Generic cache setter
55
+ setCached(cache, id, data) {
56
+ // Enforce per-cache bucket size using insertion-order eviction.
57
+ if (!cache.has(id) && cache.size >= this.cacheBucketLimit()) {
58
+ const firstKey = cache.keys().next().value;
59
+ if (firstKey !== undefined) {
60
+ cache.delete(firstKey);
61
+ }
62
+ }
63
+ cache.set(id, {
64
+ data,
65
+ timestamp: new Date(),
66
+ ttl: this.config.ttl,
67
+ });
68
+ }
69
+ setCachedCollection(cache, id, data) {
70
+ const limit = this.cacheBucketLimit();
71
+ if (data.length > limit) {
72
+ cache.delete(id);
73
+ return;
74
+ }
75
+ if (!cache.has(id) && cache.size >= limit) {
76
+ const firstKey = cache.keys().next().value;
77
+ if (firstKey !== undefined) {
78
+ cache.delete(firstKey);
79
+ }
80
+ }
81
+ cache.set(id, {
82
+ data,
83
+ timestamp: new Date(),
84
+ ttl: this.config.ttl,
85
+ });
86
+ }
87
+ setWorkspaceList(workspaces) {
88
+ this.workspaceList =
89
+ workspaces.length <= this.cacheBucketLimit()
90
+ ? {
91
+ data: workspaces,
92
+ timestamp: new Date(),
93
+ ttl: this.config.ttl,
94
+ }
95
+ : null;
96
+ }
97
+ // Workspace methods
98
+ async getWorkspace(id) {
99
+ if (!id)
100
+ return null;
101
+ const cached = this.getCached(this.workspaces, id);
102
+ if (cached)
103
+ return cached;
104
+ if (!this.api)
105
+ return null;
106
+ try {
107
+ const workspace = await this.api.getWorkspace(id);
108
+ if (workspace) {
109
+ this.setCached(this.workspaces, id, workspace);
110
+ }
111
+ return workspace;
112
+ }
113
+ catch (error) {
114
+ console.error(`Failed to fetch workspace ${id}:`, error);
115
+ return null;
116
+ }
117
+ }
118
+ async getWorkspaces() {
119
+ const cached = this.getCachedCollection(this.workspaceList);
120
+ if (cached)
121
+ return cached;
122
+ if (!this.api)
123
+ return [];
124
+ try {
125
+ const workspaces = await this.api.getWorkspaces();
126
+ // Cache all fetched workspaces
127
+ workspaces.forEach((ws) => {
128
+ this.setCached(this.workspaces, ws.id, ws);
129
+ });
130
+ this.setWorkspaceList(workspaces);
131
+ return workspaces;
132
+ }
133
+ catch (error) {
134
+ console.error('Failed to fetch workspaces:', error);
135
+ return [];
136
+ }
137
+ }
138
+ // Project methods
139
+ async getProject(id, workspaceId) {
140
+ const cached = this.getCached(this.projects, id);
141
+ if (cached)
142
+ return cached;
143
+ if (!this.api)
144
+ return null;
145
+ if (workspaceId) {
146
+ const projects = await this.getProjects(workspaceId);
147
+ return projects.find((project) => project.id === id) || null;
148
+ }
149
+ try {
150
+ const project = await this.api.getProject(id);
151
+ if (project) {
152
+ this.setCached(this.projects, id, project);
153
+ }
154
+ return project;
155
+ }
156
+ catch (error) {
157
+ console.error(`Failed to fetch project ${id}:`, error);
158
+ return null;
159
+ }
160
+ }
161
+ async getProjects(workspaceId) {
162
+ const cached = this.getCachedCollection(this.projectsByWorkspace.get(workspaceId));
163
+ if (cached)
164
+ return cached;
165
+ if (!this.api)
166
+ return [];
167
+ try {
168
+ const projects = await this.api.getProjects(workspaceId);
169
+ // Cache all fetched projects
170
+ projects.forEach((proj) => {
171
+ this.setCached(this.projects, proj.id, proj);
172
+ });
173
+ this.setCachedCollection(this.projectsByWorkspace, workspaceId, projects);
174
+ return projects;
175
+ }
176
+ catch (error) {
177
+ console.error(`Failed to fetch projects for workspace ${workspaceId}:`, error);
178
+ return [];
179
+ }
180
+ }
181
+ // Client methods
182
+ async getClient(id, workspaceId) {
183
+ const cached = this.getCached(this.clients, id);
184
+ if (cached)
185
+ return cached;
186
+ if (!this.api)
187
+ return null;
188
+ if (workspaceId) {
189
+ const clients = await this.getClients(workspaceId);
190
+ return clients.find((client) => client.id === id) || null;
191
+ }
192
+ try {
193
+ const client = await this.api.getClient(id);
194
+ if (client) {
195
+ this.setCached(this.clients, id, client);
196
+ }
197
+ return client;
198
+ }
199
+ catch (error) {
200
+ console.error(`Failed to fetch client ${id}:`, error);
201
+ return null;
202
+ }
203
+ }
204
+ async getClients(workspaceId) {
205
+ const cached = this.getCachedCollection(this.clientsByWorkspace.get(workspaceId));
206
+ if (cached)
207
+ return cached;
208
+ if (!this.api)
209
+ return [];
210
+ try {
211
+ const clients = await this.api.getClients(workspaceId);
212
+ // Cache all fetched clients
213
+ clients.forEach((client) => {
214
+ this.setCached(this.clients, client.id, client);
215
+ });
216
+ this.setCachedCollection(this.clientsByWorkspace, workspaceId, clients);
217
+ return clients;
218
+ }
219
+ catch (error) {
220
+ console.error(`Failed to fetch clients for workspace ${workspaceId}:`, error);
221
+ return [];
222
+ }
223
+ }
224
+ // Task methods
225
+ async getTask(id, workspaceId, projectId) {
226
+ const cached = this.getCached(this.tasks, id);
227
+ if (cached)
228
+ return cached;
229
+ if (!this.api)
230
+ return null;
231
+ try {
232
+ const task = await this.api.getTask(workspaceId, projectId, id);
233
+ if (task) {
234
+ this.setCached(this.tasks, id, task);
235
+ }
236
+ return task;
237
+ }
238
+ catch (error) {
239
+ console.error(`Failed to fetch task ${id}:`, error);
240
+ return null;
241
+ }
242
+ }
243
+ async getTasks(workspaceId, projectId) {
244
+ if (!this.api)
245
+ return [];
246
+ try {
247
+ const tasks = await this.api.getTasks(workspaceId, projectId);
248
+ // Cache all fetched tasks
249
+ tasks.forEach((task) => {
250
+ this.setCached(this.tasks, task.id, task);
251
+ });
252
+ return tasks;
253
+ }
254
+ catch (error) {
255
+ console.error(`Failed to fetch tasks for project ${projectId}:`, error);
256
+ return [];
257
+ }
258
+ }
259
+ // User methods
260
+ async getUser(id) {
261
+ const cached = this.getCached(this.users, id);
262
+ if (cached)
263
+ return cached;
264
+ if (!this.api)
265
+ return null;
266
+ try {
267
+ const user = await this.api.getUser(id);
268
+ if (user) {
269
+ this.setCached(this.users, id, user);
270
+ }
271
+ return user;
272
+ }
273
+ catch (error) {
274
+ console.error(`Failed to fetch user ${id}:`, error);
275
+ return null;
276
+ }
277
+ }
278
+ // Tag methods
279
+ async getTag(id, workspaceId) {
280
+ const cached = this.getCached(this.tags, id);
281
+ if (cached)
282
+ return cached;
283
+ if (!this.api)
284
+ return null;
285
+ try {
286
+ const tags = await this.getTags(workspaceId);
287
+ return tags.find((tag) => tag.id === id) || null;
288
+ }
289
+ catch (error) {
290
+ console.error(`Failed to fetch tag ${id}:`, error);
291
+ return null;
292
+ }
293
+ }
294
+ async getTags(workspaceId) {
295
+ const cached = this.getCachedCollection(this.tagsByWorkspace.get(workspaceId));
296
+ if (cached)
297
+ return cached;
298
+ if (!this.api)
299
+ return [];
300
+ try {
301
+ const tags = await this.api.getTags(workspaceId);
302
+ // Cache all fetched tags
303
+ tags.forEach((tag) => {
304
+ this.setCached(this.tags, tag.id, tag);
305
+ });
306
+ this.setCachedCollection(this.tagsByWorkspace, workspaceId, tags);
307
+ return tags;
308
+ }
309
+ catch (error) {
310
+ console.error(`Failed to fetch tags for workspace ${workspaceId}:`, error);
311
+ return [];
312
+ }
313
+ }
314
+ // Warm cache by pre-fetching common entities
315
+ async warmCache(workspaceId) {
316
+ // Log to stderr to avoid interfering with MCP stdio protocol
317
+ console.error('Warming cache...');
318
+ try {
319
+ // Fetch all workspaces
320
+ const workspaces = await this.getWorkspaces();
321
+ // If workspace specified, fetch its entities
322
+ if (workspaceId) {
323
+ await Promise.all([
324
+ this.getProjects(workspaceId),
325
+ this.getClients(workspaceId),
326
+ this.getTags(workspaceId),
327
+ ]);
328
+ }
329
+ else {
330
+ // Fetch entities for all workspaces (be careful with rate limits)
331
+ for (const ws of workspaces.slice(0, 3)) {
332
+ // Limit to first 3 workspaces
333
+ await Promise.all([this.getProjects(ws.id), this.getClients(ws.id), this.getTags(ws.id)]);
334
+ }
335
+ }
336
+ console.error('Cache warmed successfully');
337
+ }
338
+ catch (error) {
339
+ console.error('Failed to warm cache:', error);
340
+ }
341
+ }
342
+ normalizeTimeEntry(entry) {
343
+ const running = entry.duration < 0 && !entry.stop;
344
+ const elapsedSeconds = running
345
+ ? Math.max(0, Math.floor((Date.now() - new Date(entry.start).getTime()) / 1000))
346
+ : undefined;
347
+ const durationSeconds = running ? elapsedSeconds : Math.max(0, entry.duration);
348
+ const tags = normalizeStringArray(entry.tags);
349
+ const tagIds = normalizeNumberArray(entry.tag_ids);
350
+ const normalized = {
351
+ ...entry,
352
+ workspace_name: `Workspace ${entry.workspace_id}`,
353
+ tags,
354
+ tag_ids: tagIds,
355
+ tag_names: [...tags],
356
+ running,
357
+ duration_seconds: durationSeconds,
358
+ };
359
+ if (elapsedSeconds !== undefined) {
360
+ normalized.elapsed_seconds = elapsedSeconds;
361
+ }
362
+ return normalized;
363
+ }
364
+ // Hydrate time entries with cached names
365
+ async hydrateTimeEntries(entries) {
366
+ const hydrated = [];
367
+ for (const entry of entries) {
368
+ const hydEntry = this.normalizeTimeEntry(entry);
369
+ // Add workspace name
370
+ const workspace = await this.getWorkspace(entry.workspace_id);
371
+ hydEntry.workspace_name = workspace?.name || `Workspace ${entry.workspace_id}`;
372
+ // Add project name and client info
373
+ if (entry.project_id) {
374
+ const project = await this.getProject(entry.project_id, entry.workspace_id);
375
+ hydEntry.project_name = project?.name || `Project ${entry.project_id}`;
376
+ if (project?.client_id) {
377
+ hydEntry.client_id = project.client_id;
378
+ const client = await this.getClient(project.client_id, entry.workspace_id);
379
+ hydEntry.client_name = client?.name || `Client ${project.client_id}`;
380
+ }
381
+ }
382
+ // Add task name
383
+ if (entry.task_id && entry.project_id) {
384
+ const task = await this.getTask(entry.task_id, entry.workspace_id, entry.project_id);
385
+ hydEntry.task_name = task?.name || `Task ${entry.task_id}`;
386
+ }
387
+ // Add user name if available
388
+ if (entry.user_id) {
389
+ const user = await this.getUser(entry.user_id);
390
+ hydEntry.user_name = user?.fullname || user?.email || `User ${entry.user_id}`;
391
+ }
392
+ // Add tag names
393
+ if (hydEntry.tag_ids.length > 0) {
394
+ const tagNames = new Set(hydEntry.tag_names);
395
+ for (const tagId of hydEntry.tag_ids) {
396
+ const tag = await this.getTag(tagId, entry.workspace_id);
397
+ if (tag) {
398
+ tagNames.add(tag.name);
399
+ }
400
+ }
401
+ hydEntry.tag_names = Array.from(tagNames);
402
+ hydEntry.tags = hydEntry.tag_names;
403
+ }
404
+ hydrated.push(hydEntry);
405
+ }
406
+ return hydrated;
407
+ }
408
+ // Clear cache
409
+ clearCache() {
410
+ this.workspaces.clear();
411
+ this.projects.clear();
412
+ this.clients.clear();
413
+ this.tasks.clear();
414
+ this.users.clear();
415
+ this.tags.clear();
416
+ this.workspaceList = null;
417
+ this.projectsByWorkspace.clear();
418
+ this.clientsByWorkspace.clear();
419
+ this.tagsByWorkspace.clear();
420
+ this.stats = {
421
+ hits: 0,
422
+ misses: 0,
423
+ lastReset: new Date(),
424
+ };
425
+ }
426
+ // Get cache statistics
427
+ getStats() {
428
+ return {
429
+ workspaces: this.workspaces.size,
430
+ projects: this.projects.size,
431
+ clients: this.clients.size,
432
+ tasks: this.tasks.size,
433
+ users: this.users.size,
434
+ tags: this.tags.size,
435
+ hits: this.stats.hits,
436
+ misses: this.stats.misses,
437
+ lastReset: this.stats.lastReset,
438
+ };
439
+ }
440
+ // Clear expired entries
441
+ pruneExpired() {
442
+ const prune = (cache) => {
443
+ const expired = [];
444
+ cache.forEach((entry, key) => {
445
+ if (!this.isValid(entry)) {
446
+ expired.push(key);
447
+ }
448
+ });
449
+ expired.forEach((key) => cache.delete(key));
450
+ };
451
+ prune(this.workspaces);
452
+ prune(this.projects);
453
+ prune(this.clients);
454
+ prune(this.tasks);
455
+ prune(this.users);
456
+ prune(this.tags);
457
+ if (!this.isValid(this.workspaceList)) {
458
+ this.workspaceList = null;
459
+ }
460
+ const pruneCollections = (cache) => {
461
+ const expired = [];
462
+ cache.forEach((entry, key) => {
463
+ if (!this.isValid(entry)) {
464
+ expired.push(key);
465
+ }
466
+ });
467
+ expired.forEach((key) => cache.delete(key));
468
+ };
469
+ pruneCollections(this.projectsByWorkspace);
470
+ pruneCollections(this.clientsByWorkspace);
471
+ pruneCollections(this.tagsByWorkspace);
472
+ }
473
+ }
474
+ function normalizeStringArray(value) {
475
+ return Array.isArray(value)
476
+ ? value.filter((item) => typeof item === 'string')
477
+ : [];
478
+ }
479
+ function normalizeNumberArray(value) {
480
+ return Array.isArray(value)
481
+ ? value.filter((item) => typeof item === 'number')
482
+ : [];
483
+ }
484
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}