anki-mcp-http 0.11.0 → 0.12.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 (36) hide show
  1. package/README.md +19 -1
  2. package/dist/mcp/primitives/essential/index.d.ts +7 -1
  3. package/dist/mcp/primitives/essential/index.js +13 -1
  4. package/dist/mcp/primitives/essential/index.js.map +1 -1
  5. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.d.ts +104 -0
  6. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js +212 -0
  7. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js.map +1 -0
  8. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.d.ts +32 -0
  9. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.js +3 -0
  10. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.js.map +1 -0
  11. package/dist/mcp/primitives/essential/tools/collection-stats/index.d.ts +2 -0
  12. package/dist/mcp/primitives/essential/tools/collection-stats/index.js +6 -0
  13. package/dist/mcp/primitives/essential/tools/collection-stats/index.js.map +1 -0
  14. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.tool.d.ts +107 -0
  15. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.tool.js +165 -0
  16. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.tool.js.map +1 -0
  17. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.types.d.ts +25 -0
  18. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.types.js +3 -0
  19. package/dist/mcp/primitives/essential/tools/deck-stats/deck-stats.types.js.map +1 -0
  20. package/dist/mcp/primitives/essential/tools/deck-stats/index.d.ts +2 -0
  21. package/dist/mcp/primitives/essential/tools/deck-stats/index.js +6 -0
  22. package/dist/mcp/primitives/essential/tools/deck-stats/index.js.map +1 -0
  23. package/dist/mcp/primitives/essential/tools/review-stats/index.d.ts +2 -0
  24. package/dist/mcp/primitives/essential/tools/review-stats/index.js +6 -0
  25. package/dist/mcp/primitives/essential/tools/review-stats/index.js.map +1 -0
  26. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.d.ts +108 -0
  27. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js +149 -0
  28. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js.map +1 -0
  29. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.d.ts +47 -0
  30. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.js +3 -0
  31. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.js.map +1 -0
  32. package/dist/mcp/utils/stats.utils.d.ts +28 -0
  33. package/dist/mcp/utils/stats.utils.js +139 -0
  34. package/dist/mcp/utils/stats.utils.js.map +1 -0
  35. package/dist/tsconfig.build.tsbuildinfo +1 -1
  36. package/package.json +2 -2
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeDistribution = computeDistribution;
4
+ exports.computeRetention = computeRetention;
5
+ exports.calculateStreak = calculateStreak;
6
+ function formatNumber(n) {
7
+ if (Number.isInteger(n)) {
8
+ return n.toString();
9
+ }
10
+ return n.toFixed(1);
11
+ }
12
+ function createEmptyBuckets(config) {
13
+ const buckets = {};
14
+ const { boundaries, formatLabel, unitSuffix } = config;
15
+ if (boundaries.length === 0) {
16
+ return buckets;
17
+ }
18
+ const labels = [
19
+ formatLabel
20
+ ? formatLabel(null, boundaries[0])
21
+ : `<${formatNumber(boundaries[0])}${unitSuffix || ""}`,
22
+ ];
23
+ for (let i = 0; i < boundaries.length - 1; i++) {
24
+ labels.push(formatLabel
25
+ ? formatLabel(boundaries[i], boundaries[i + 1])
26
+ : `${formatNumber(boundaries[i])}-${formatNumber(boundaries[i + 1])}${unitSuffix || ""}`);
27
+ }
28
+ labels.push(formatLabel
29
+ ? formatLabel(boundaries[boundaries.length - 1], null)
30
+ : `>${formatNumber(boundaries[boundaries.length - 1])}${unitSuffix || ""}`);
31
+ labels.forEach((label) => {
32
+ buckets[label] = 0;
33
+ });
34
+ return buckets;
35
+ }
36
+ function computeBuckets(sortedValues, config) {
37
+ const buckets = createEmptyBuckets(config);
38
+ const { boundaries, formatLabel, unitSuffix } = config;
39
+ if (boundaries.length === 0) {
40
+ return buckets;
41
+ }
42
+ for (const value of sortedValues) {
43
+ let placed = false;
44
+ if (value < boundaries[0]) {
45
+ const label = formatLabel
46
+ ? formatLabel(null, boundaries[0])
47
+ : `<${formatNumber(boundaries[0])}${unitSuffix || ""}`;
48
+ buckets[label]++;
49
+ placed = true;
50
+ continue;
51
+ }
52
+ for (let i = 0; i < boundaries.length - 1; i++) {
53
+ if (value >= boundaries[i] && value < boundaries[i + 1]) {
54
+ const label = formatLabel
55
+ ? formatLabel(boundaries[i], boundaries[i + 1])
56
+ : `${formatNumber(boundaries[i])}-${formatNumber(boundaries[i + 1])}${unitSuffix || ""}`;
57
+ buckets[label]++;
58
+ placed = true;
59
+ break;
60
+ }
61
+ }
62
+ if (!placed) {
63
+ const label = formatLabel
64
+ ? formatLabel(boundaries[boundaries.length - 1], null)
65
+ : `>${formatNumber(boundaries[boundaries.length - 1])}${unitSuffix || ""}`;
66
+ buckets[label]++;
67
+ }
68
+ }
69
+ return buckets;
70
+ }
71
+ function computeDistribution(values, config) {
72
+ if (values.length === 0) {
73
+ return {
74
+ mean: 0,
75
+ median: 0,
76
+ min: 0,
77
+ max: 0,
78
+ count: 0,
79
+ buckets: createEmptyBuckets(config),
80
+ };
81
+ }
82
+ const sorted = [...values].sort((a, b) => a - b);
83
+ const sum = sorted.reduce((acc, v) => acc + v, 0);
84
+ const medianIndex = Math.floor(sorted.length / 2);
85
+ const median = sorted.length % 2 === 0
86
+ ? (sorted[medianIndex - 1] + sorted[medianIndex]) / 2
87
+ : sorted[medianIndex];
88
+ return {
89
+ mean: sum / sorted.length,
90
+ median,
91
+ min: sorted[0],
92
+ max: sorted[sorted.length - 1],
93
+ count: sorted.length,
94
+ buckets: computeBuckets(sorted, config),
95
+ };
96
+ }
97
+ function computeRetention(buttonPresses) {
98
+ const counts = { again: 0, hard: 0, good: 0, easy: 0 };
99
+ buttonPresses.forEach((button) => {
100
+ if (button === 1)
101
+ counts.again++;
102
+ else if (button === 2)
103
+ counts.hard++;
104
+ else if (button === 3)
105
+ counts.good++;
106
+ else if (button === 4)
107
+ counts.easy++;
108
+ });
109
+ const total = counts.again + counts.hard + counts.good + counts.easy;
110
+ const remembered = counts.hard + counts.good + counts.easy;
111
+ return {
112
+ overall: total > 0 ? remembered / total : 0,
113
+ by_rating: counts,
114
+ };
115
+ }
116
+ function calculateStreak(reviewsByDay) {
117
+ if (reviewsByDay.length === 0) {
118
+ return 0;
119
+ }
120
+ const sorted = [...reviewsByDay].sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
121
+ let streak = 0;
122
+ const today = new Date();
123
+ today.setHours(0, 0, 0, 0);
124
+ for (let i = 0; i < sorted.length; i++) {
125
+ const reviewDate = new Date(sorted[i].date);
126
+ reviewDate.setHours(0, 0, 0, 0);
127
+ const expectedDate = new Date(today);
128
+ expectedDate.setDate(expectedDate.getDate() - i);
129
+ if (reviewDate.getTime() === expectedDate.getTime() &&
130
+ sorted[i].count > 0) {
131
+ streak++;
132
+ }
133
+ else {
134
+ break;
135
+ }
136
+ }
137
+ return streak;
138
+ }
139
+ //# sourceMappingURL=stats.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.utils.js","sourceRoot":"","sources":["../../../src/mcp/utils/stats.utils.ts"],"names":[],"mappings":"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"}