@vheins/local-memory-mcp 0.4.2 → 0.4.6

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 (37) hide show
  1. package/dist/dashboard/public/app.js +16 -7
  2. package/dist/dashboard/public/index.html +17 -6
  3. package/dist/prompts/registry.d.ts +92 -8
  4. package/dist/prompts/registry.d.ts.map +1 -1
  5. package/dist/prompts/registry.js +204 -41
  6. package/dist/prompts/registry.js.map +1 -1
  7. package/dist/router.d.ts.map +1 -1
  8. package/dist/router.js +18 -3
  9. package/dist/router.js.map +1 -1
  10. package/dist/storage/sqlite.d.ts.map +1 -1
  11. package/dist/storage/sqlite.js +23 -6
  12. package/dist/storage/sqlite.js.map +1 -1
  13. package/dist/tasks.archive.test.d.ts +2 -0
  14. package/dist/tasks.archive.test.d.ts.map +1 -0
  15. package/dist/tasks.archive.test.js +75 -0
  16. package/dist/tasks.archive.test.js.map +1 -0
  17. package/dist/tools/schemas.d.ts +12 -18
  18. package/dist/tools/schemas.d.ts.map +1 -1
  19. package/dist/tools/schemas.js +10 -11
  20. package/dist/tools/schemas.js.map +1 -1
  21. package/dist/tools/task.bulk-manage.d.ts +2 -1
  22. package/dist/tools/task.bulk-manage.d.ts.map +1 -1
  23. package/dist/tools/task.bulk-manage.js +20 -2
  24. package/dist/tools/task.bulk-manage.js.map +1 -1
  25. package/dist/tools/task.manage.d.ts +3 -1
  26. package/dist/tools/task.manage.d.ts.map +1 -1
  27. package/dist/tools/task.manage.js +66 -3
  28. package/dist/tools/task.manage.js.map +1 -1
  29. package/dist/tools/tasks-transition.test.js +71 -11
  30. package/dist/tools/tasks-transition.test.js.map +1 -1
  31. package/dist/tools/tasks.pending-limit-refined.test.d.ts +2 -0
  32. package/dist/tools/tasks.pending-limit-refined.test.d.ts.map +1 -0
  33. package/dist/tools/tasks.pending-limit-refined.test.js +72 -0
  34. package/dist/tools/tasks.pending-limit-refined.test.js.map +1 -0
  35. package/dist/types.d.ts +3 -2
  36. package/dist/types.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -7,6 +7,7 @@ let totalItems = 0;
7
7
  let selectedIds = new Set();
8
8
  let currentPaginatedData = [];
9
9
  let taskPagination = {
10
+ backlog: { page: 1, pageSize: 20, hasMore: true, loading: false },
10
11
  todo: { page: 1, pageSize: 20, hasMore: true, loading: false },
11
12
  in_progress: { page: 1, pageSize: 20, hasMore: true, loading: false },
12
13
  completed: { page: 1, pageSize: 20, hasMore: true, loading: false }
@@ -637,6 +638,7 @@ async function loadStats() {
637
638
  // Fill Task stats
638
639
  if (data.taskStats) {
639
640
  document.getElementById('totalTasks').textContent = data.taskStats.total || 0;
641
+ document.getElementById('backlogTasksCount').textContent = data.taskStats.backlog || 0;
640
642
  document.getElementById('todoTasksCount').textContent = data.taskStats.todo || 0;
641
643
  document.getElementById('inProgressTasksCount').textContent = data.taskStats.inProgress || 0;
642
644
  document.getElementById('completedTasksCount').textContent = data.taskStats.completed || 0;
@@ -675,16 +677,19 @@ async function loadStats() {
675
677
  document.getElementById('todayAvgTimeTasksCount').textContent = formatDuration(data.todayAvgDuration);
676
678
  }
677
679
 
680
+ document.getElementById('backlogStatCount').textContent = data.taskStats.backlog || 0;
678
681
  document.getElementById('todoStatCount').textContent = data.taskStats.todo || 0;
679
682
  document.getElementById('inProgressStatCount').textContent = data.taskStats.inProgress || 0;
680
683
  document.getElementById('completedStatCount').textContent = data.taskStats.completed || 0;
681
684
  document.getElementById('blockedStatCount').textContent = data.taskStats.blocked || 0;
682
685
 
683
686
  // Also update column headers
687
+ const backlogCountEl = document.getElementById('backlogCount');
684
688
  const todoCountEl = document.getElementById('todoCount');
685
689
  const inProgressCountEl = document.getElementById('inProgressCount');
686
690
  const completedCountEl = document.getElementById('completedCount');
687
691
 
692
+ if (backlogCountEl) backlogCountEl.textContent = data.taskStats.backlog || 0;
688
693
  if (todoCountEl) todoCountEl.textContent = data.taskStats.todo || 0;
689
694
  if (inProgressCountEl) inProgressCountEl.textContent = data.taskStats.inProgress || 0;
690
695
  if (completedCountEl) completedCountEl.textContent = data.taskStats.completed || 0;
@@ -755,6 +760,7 @@ function updateTaskStatusChart(taskStats) {
755
760
 
756
761
  const isDark = document.documentElement.classList.contains('dark');
757
762
  const counts = [
763
+ taskStats?.backlog || 0,
758
764
  taskStats?.todo || 0,
759
765
  taskStats?.inProgress || 0,
760
766
  taskStats?.completed || 0,
@@ -764,10 +770,10 @@ function updateTaskStatusChart(taskStats) {
764
770
  charts.taskStatusChart = new Chart(ctx, {
765
771
  type: 'doughnut',
766
772
  data: {
767
- labels: ['To Do', 'In Progress', 'Completed', 'Blocked'],
773
+ labels: ['Backlog', 'To Do', 'In Progress', 'Completed', 'Blocked'],
768
774
  datasets: [{
769
775
  data: counts,
770
- backgroundColor: ['#94a3b8', '#38bdf8', '#10b981', '#fb7185'],
776
+ backgroundColor: ['#64748b', '#94a3b8', '#38bdf8', '#10b981', '#fb7185'],
771
777
  borderWidth: 2,
772
778
  borderColor: isDark ? '#1e293b' : '#ffffff',
773
779
  hoverOffset: 12
@@ -1753,16 +1759,19 @@ async function loadTasks() {
1753
1759
  if (!currentRepo) return;
1754
1760
 
1755
1761
  // Reset pagination
1762
+ taskPagination.backlog = { page: 1, pageSize: 20, hasMore: true, loading: false };
1756
1763
  taskPagination.todo = { page: 1, pageSize: 20, hasMore: true, loading: false };
1757
1764
  taskPagination.in_progress = { page: 1, pageSize: 20, hasMore: true, loading: false };
1758
1765
  taskPagination.completed = { page: 1, pageSize: 20, hasMore: true, loading: false };
1759
1766
 
1760
1767
  // Clear containers
1768
+ document.getElementById('backlogTasks').innerHTML = '';
1761
1769
  document.getElementById('todoTasks').innerHTML = '';
1762
1770
  document.getElementById('inProgressTasks').innerHTML = '';
1763
1771
  document.getElementById('completedTasks').innerHTML = '';
1764
1772
 
1765
1773
  await Promise.all([
1774
+ loadTaskCategory('backlog'),
1766
1775
  loadTaskCategory('pending,blocked,canceled'),
1767
1776
  loadTaskCategory('in_progress'),
1768
1777
  loadTaskCategory('completed')
@@ -1772,13 +1781,13 @@ async function loadTasks() {
1772
1781
  }
1773
1782
 
1774
1783
  async function loadTaskCategory(status) {
1775
- const category = (status.includes('pending') || status.includes('blocked') || status.includes('canceled')) ? 'todo' : (status === 'in_progress' ? 'in_progress' : 'completed');
1784
+ const category = status === 'backlog' ? 'backlog' : ((status.includes('pending') || status.includes('blocked') || status.includes('canceled')) ? 'todo' : (status === 'in_progress' ? 'in_progress' : 'completed'));
1776
1785
  const pag = taskPagination[category];
1777
1786
 
1778
1787
  if (!pag.hasMore || pag.loading) return;
1779
1788
 
1780
1789
  pag.loading = true;
1781
- const containerId = { todo: 'todoTasks', in_progress: 'inProgressTasks', completed: 'completedTasks' }[category];
1790
+ const containerId = { backlog: 'backlogTasks', todo: 'todoTasks', in_progress: 'inProgressTasks', completed: 'completedTasks' }[category];
1782
1791
  const container = document.getElementById(containerId);
1783
1792
 
1784
1793
  // Show loading indicator
@@ -1817,14 +1826,14 @@ async function loadTaskCategory(status) {
1817
1826
  }
1818
1827
 
1819
1828
  function setupTaskScrollListeners() {
1820
- ['todoTasks', 'inProgressTasks', 'completedTasks'].forEach(id => {
1829
+ ['backlogTasks', 'todoTasks', 'inProgressTasks', 'completedTasks'].forEach(id => {
1821
1830
  const el = document.getElementById(id);
1822
1831
  if (!el) return;
1823
1832
 
1824
1833
  el.onscroll = () => {
1825
1834
  if (el.scrollTop + el.clientHeight >= el.scrollHeight - 50) {
1826
- const category = id === 'todoTasks' ? 'todo' : (id === 'inProgressTasks' ? 'in_progress' : 'completed');
1827
- const status = category === 'todo' ? 'pending,blocked,canceled' : (category === 'in_progress' ? 'in_progress' : 'completed');
1835
+ const category = id === 'backlogTasks' ? 'backlog' : (id === 'todoTasks' ? 'todo' : (id === 'inProgressTasks' ? 'in_progress' : 'completed'));
1836
+ const status = category === 'backlog' ? 'backlog' : (category === 'todo' ? 'pending,blocked,canceled' : (category === 'in_progress' ? 'in_progress' : 'completed'));
1828
1837
  loadTaskCategory(status);
1829
1838
  }
1830
1839
  };
@@ -1107,11 +1107,15 @@
1107
1107
  </div>
1108
1108
 
1109
1109
  <!-- Task Summary Cards -->
1110
- <div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
1110
+ <div class="grid grid-cols-2 md:grid-cols-5 gap-4 mb-6">
1111
1111
  <div class="bg-white dark:bg-gray-800 p-4 rounded-lg shadow-sm border border-indigo-100 dark:border-indigo-900/30">
1112
1112
  <div class="text-xs text-indigo-500 dark:text-indigo-400 uppercase font-bold tracking-wider mb-1">Total Tasks</div>
1113
1113
  <div id="totalTasks" class="text-2xl font-bold">0</div>
1114
1114
  </div>
1115
+ <div class="bg-white dark:bg-gray-800 p-4 rounded-lg shadow-sm border border-gray-100 dark:border-gray-700">
1116
+ <div class="text-xs text-gray-500 dark:text-gray-400 uppercase font-bold tracking-wider mb-1">Backlog</div>
1117
+ <div id="backlogTasksCount" class="text-2xl font-bold text-gray-500">0</div>
1118
+ </div>
1115
1119
  <div class="bg-white dark:bg-gray-800 p-4 rounded-lg shadow-sm border border-gray-100 dark:border-gray-700">
1116
1120
  <div class="text-xs text-gray-500 dark:text-gray-400 uppercase font-bold tracking-wider mb-1">Task To Do</div>
1117
1121
  <div id="todoTasksCount" class="text-2xl font-bold">0</div>
@@ -1187,6 +1191,7 @@
1187
1191
  <canvas id="taskStatusChart"></canvas>
1188
1192
  </div>
1189
1193
  <div class="grid grid-cols-2 gap-1.5 mt-3 text-[10px]">
1194
+ <div class="flex items-center gap-1.5"><span class="w-2 h-2 rounded-full bg-slate-500 flex-shrink-0"></span> <span class="text-gray-500 dark:text-gray-400">Backlog:</span> <span id="backlogStatCount" class="font-bold">0</span></div>
1190
1195
  <div class="flex items-center gap-1.5"><span class="w-2 h-2 rounded-full bg-slate-400 flex-shrink-0"></span> <span class="text-gray-500 dark:text-gray-400">To Do:</span> <span id="todoStatCount" class="font-bold">0</span></div>
1191
1196
  <div class="flex items-center gap-1.5"><span class="w-2 h-2 rounded-full bg-sky-400 flex-shrink-0"></span> <span class="text-gray-500 dark:text-gray-400">In Progress:</span> <span id="inProgressStatCount" class="font-bold">0</span></div>
1192
1197
  <div class="flex items-center gap-1.5"><span class="w-2 h-2 rounded-full bg-emerald-400 flex-shrink-0"></span> <span class="text-gray-500 dark:text-gray-400">Completed:</span> <span id="completedStatCount" class="font-bold">0</span></div>
@@ -1441,7 +1446,15 @@
1441
1446
  </div>
1442
1447
  </div>
1443
1448
 
1444
- <div id="taskBoard" class="grid grid-cols-1 md:grid-cols-3 gap-6">
1449
+ <div id="taskBoard" class="grid grid-cols-1 md:grid-cols-4 gap-6">
1450
+ <!-- Column: Backlog -->
1451
+ <div class="flex flex-col gap-4">
1452
+ <div class="flex items-center justify-between px-2">
1453
+ <h3 class="font-bold text-slate-400 uppercase tracking-wider text-xs">Backlog</h3>
1454
+ <span id="backlogCount" class="bg-slate-100 dark:bg-slate-800 text-slate-500 dark:text-slate-400 px-2 py-0.5 rounded-full text-[10px] font-bold">0</span>
1455
+ </div>
1456
+ <div id="backlogTasks" class="space-y-4 min-h-[200px] max-h-[70vh] overflow-y-auto pr-2 custom-scrollbar"></div>
1457
+ </div>
1445
1458
  <!-- Column: Todo -->
1446
1459
  <div class="flex flex-col gap-4">
1447
1460
  <div class="flex items-center justify-between px-2">
@@ -1715,10 +1728,8 @@
1715
1728
  <div>
1716
1729
  <label class="block text-xs font-bold text-slate-400 uppercase mb-1">Status</label>
1717
1730
  <select name="status" class="w-full bg-slate-50 dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl px-4 py-2.5 text-sm outline-none focus:ring-2 focus:ring-sky-500/50">
1718
- <option value="pending" selected>To Do</option>
1719
- <option value="in_progress">In Progress</option>
1720
- <option value="completed">Completed</option>
1721
- <option value="blocked">Blocked</option>
1731
+ <option value="backlog" selected>Backlog</option>
1732
+ <option value="pending">To Do</option>
1722
1733
  </select>
1723
1734
  </div>
1724
1735
  </div>
@@ -48,6 +48,30 @@ export declare const PROMPTS: {
48
48
  }[];
49
49
  };
50
50
  "import-github-issues": {
51
+ name: string;
52
+ description: string;
53
+ arguments: never[];
54
+ messages: {
55
+ role: string;
56
+ content: {
57
+ type: string;
58
+ text: string;
59
+ };
60
+ }[];
61
+ };
62
+ "project-briefing": {
63
+ name: string;
64
+ description: string;
65
+ arguments: never[];
66
+ messages: {
67
+ role: string;
68
+ content: {
69
+ type: string;
70
+ text: string;
71
+ };
72
+ }[];
73
+ };
74
+ "learning-retrospective": {
51
75
  name: string;
52
76
  description: string;
53
77
  arguments: {
@@ -63,7 +87,7 @@ export declare const PROMPTS: {
63
87
  };
64
88
  }[];
65
89
  };
66
- "project-briefing": {
90
+ "memory-guided-review": {
67
91
  name: string;
68
92
  description: string;
69
93
  arguments: {
@@ -79,7 +103,7 @@ export declare const PROMPTS: {
79
103
  };
80
104
  }[];
81
105
  };
82
- "learning-retrospective": {
106
+ "session-planner": {
83
107
  name: string;
84
108
  description: string;
85
109
  arguments: {
@@ -95,7 +119,7 @@ export declare const PROMPTS: {
95
119
  };
96
120
  }[];
97
121
  };
98
- "memory-guided-review": {
122
+ "tech-affinity-scout": {
99
123
  name: string;
100
124
  description: string;
101
125
  arguments: {
@@ -111,7 +135,31 @@ export declare const PROMPTS: {
111
135
  };
112
136
  }[];
113
137
  };
114
- "session-planner": {
138
+ "documentation-sync": {
139
+ name: string;
140
+ description: string;
141
+ arguments: never[];
142
+ messages: {
143
+ role: string;
144
+ content: {
145
+ type: string;
146
+ text: string;
147
+ };
148
+ }[];
149
+ };
150
+ "task-memory-executor": {
151
+ name: string;
152
+ description: string;
153
+ arguments: never[];
154
+ messages: {
155
+ role: string;
156
+ content: {
157
+ type: string;
158
+ text: string;
159
+ };
160
+ }[];
161
+ };
162
+ "senior-code-review": {
115
163
  name: string;
116
164
  description: string;
117
165
  arguments: {
@@ -127,7 +175,7 @@ export declare const PROMPTS: {
127
175
  };
128
176
  }[];
129
177
  };
130
- "tech-affinity-scout": {
178
+ "fix-suggestion": {
131
179
  name: string;
132
180
  description: string;
133
181
  arguments: {
@@ -143,7 +191,7 @@ export declare const PROMPTS: {
143
191
  };
144
192
  }[];
145
193
  };
146
- "documentation-sync": {
194
+ "root-cause-analysis": {
147
195
  name: string;
148
196
  description: string;
149
197
  arguments: {
@@ -159,10 +207,46 @@ export declare const PROMPTS: {
159
207
  };
160
208
  }[];
161
209
  };
162
- "task-memory-executor": {
210
+ "technical-planning": {
163
211
  name: string;
164
212
  description: string;
165
- arguments: never[];
213
+ arguments: {
214
+ name: string;
215
+ description: string;
216
+ required: boolean;
217
+ }[];
218
+ messages: {
219
+ role: string;
220
+ content: {
221
+ type: string;
222
+ text: string;
223
+ };
224
+ }[];
225
+ };
226
+ "security-triage": {
227
+ name: string;
228
+ description: string;
229
+ arguments: {
230
+ name: string;
231
+ description: string;
232
+ required: boolean;
233
+ }[];
234
+ messages: {
235
+ role: string;
236
+ content: {
237
+ type: string;
238
+ text: string;
239
+ };
240
+ }[];
241
+ };
242
+ "architecture-design": {
243
+ name: string;
244
+ description: string;
245
+ arguments: {
246
+ name: string;
247
+ description: string;
248
+ required: boolean;
249
+ }[];
166
250
  messages: {
167
251
  role: string;
168
252
  content: {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/prompts/registry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6UnB,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/prompts/registry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgfnB,CAAC"}