@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
@@ -1,5 +1,6 @@
1
1
  import { SQLiteStore } from "../storage/sqlite.js";
2
- export declare function handleTaskBulkManage(args: any, storage: SQLiteStore): Promise<{
2
+ import { VectorStore } from "../types.js";
3
+ export declare function handleTaskBulkManage(args: any, storage: SQLiteStore, vectors: VectorStore): Promise<{
3
4
  content: {
4
5
  type: string;
5
6
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"task.bulk-manage.d.ts","sourceRoot":"","sources":["../../src/tools/task.bulk-manage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAYnD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GA6ErB"}
1
+ {"version":3,"file":"task.bulk-manage.d.ts","sourceRoot":"","sources":["../../src/tools/task.bulk-manage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAkC,WAAW,EAAE,MAAM,aAAa,CAAC;AAY1E,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW;;;;;;GAkGrB"}
@@ -1,5 +1,6 @@
1
1
  import { randomUUID } from "crypto";
2
2
  import { TaskBulkManageSchema } from "./schemas.js";
3
+ import { archiveTaskToMemory } from "./task.manage.js";
3
4
  function deriveTaskStatusTimestamps(status, now) {
4
5
  return {
5
6
  in_progress_at: status === "in_progress" ? now : null,
@@ -7,7 +8,7 @@ function deriveTaskStatusTimestamps(status, now) {
7
8
  canceled_at: status === "canceled" ? now : null
8
9
  };
9
10
  }
10
- export async function handleTaskBulkManage(args, storage) {
11
+ export async function handleTaskBulkManage(args, storage, vectors) {
11
12
  const parsed = TaskBulkManageSchema.parse(args);
12
13
  const { action, repo, tasks, ids } = parsed;
13
14
  switch (action) {
@@ -26,7 +27,20 @@ export async function handleTaskBulkManage(args, storage) {
26
27
  }
27
28
  codesInRequest.add(taskData.task_code);
28
29
  const taskId = randomUUID();
29
- const normalizedStatus = taskData.status || "pending";
30
+ const normalizedStatus = taskData.status || "backlog";
31
+ // New tasks MUST be backlog or pending
32
+ if (normalizedStatus !== "backlog" && normalizedStatus !== "pending") {
33
+ throw new Error(`New tasks must be created with status 'backlog' or 'pending'. Task '${taskData.task_code}' has status '${normalizedStatus}'.`);
34
+ }
35
+ // Max 10 pending tasks validation
36
+ if (normalizedStatus === "pending") {
37
+ const stats = storage.getTaskStats(repo);
38
+ // Count pending tasks in current request that are already processed
39
+ const pendingInRequest = tasks.slice(0, createdTasks.length).filter(t => (t.status || "backlog") === "pending").length;
40
+ if (stats.todo + pendingInRequest >= 10) {
41
+ throw new Error(`Cannot create task '${taskData.task_code}' as 'pending'. Maximum of 10 pending tasks reached in repository '${repo}'. Please use 'backlog' instead.`);
42
+ }
43
+ }
30
44
  const statusTimestamps = deriveTaskStatusTimestamps(normalizedStatus, now);
31
45
  const task = {
32
46
  id: taskId,
@@ -53,6 +67,10 @@ export async function handleTaskBulkManage(args, storage) {
53
67
  };
54
68
  storage.insertTask(task);
55
69
  createdTasks.push(task.task_code);
70
+ // Archive if created as completed
71
+ if (task.status === "completed") {
72
+ await archiveTaskToMemory(task.id, repo, storage, vectors);
73
+ }
56
74
  }
57
75
  return {
58
76
  content: [{
@@ -1 +1 @@
1
- {"version":3,"file":"task.bulk-manage.js","sourceRoot":"","sources":["../../src/tools/task.bulk-manage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.bulk-manage.js","sourceRoot":"","sources":["../../src/tools/task.bulk-manage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { SQLiteStore } from "../storage/sqlite.js";
2
+ import { VectorStore } from "../types.js";
3
+ export declare function archiveTaskToMemory(taskId: string, repo: string, storage: SQLiteStore, vectors: VectorStore): Promise<void>;
2
4
  export declare function handleTaskList(args: any, storage: SQLiteStore): Promise<{
3
5
  content: {
4
6
  type: string;
@@ -13,7 +15,7 @@ export declare function handleTaskCreate(args: any, storage: SQLiteStore): Promi
13
15
  }[];
14
16
  isError: boolean;
15
17
  }>;
16
- export declare function handleTaskUpdate(args: any, storage: SQLiteStore): Promise<{
18
+ export declare function handleTaskUpdate(args: any, storage: SQLiteStore, vectors: VectorStore): Promise<{
17
19
  content: {
18
20
  type: string;
19
21
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"task.manage.d.ts","sourceRoot":"","sources":["../../src/tools/task.manage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA8BnD,wBAAsB,cAAc,CAClC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GA+BrB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GA6CrB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GAyErB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GAYrB"}
1
+ {"version":3,"file":"task.manage.d.ts","sourceRoot":"","sources":["../../src/tools/task.manage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAkC,WAAW,EAAE,MAAM,aAAa,CAAC;AA8B1E,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,iBAgDrB;AAGD,wBAAsB,cAAc,CAClC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GA+BrB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GA0DrB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW;;;;;;GAkFrB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW;;;;;;GAYrB"}
@@ -1,5 +1,6 @@
1
1
  import { randomUUID } from "crypto";
2
2
  import { TaskListSchema, TaskCreateSchema, TaskUpdateSchema, TaskDeleteSchema } from "./schemas.js";
3
+ import { handleMemoryStore } from "./memory.store.js";
3
4
  function deriveTaskStatusTimestamps(status, now, existingTask) {
4
5
  const timestamps = {
5
6
  in_progress_at: null,
@@ -17,6 +18,50 @@ function deriveTaskStatusTimestamps(status, now, existingTask) {
17
18
  }
18
19
  return timestamps;
19
20
  }
21
+ export async function archiveTaskToMemory(taskId, repo, storage, vectors) {
22
+ const task = storage.getTaskById(taskId);
23
+ if (!task)
24
+ return;
25
+ const comments = storage.getTaskCommentsByTaskId(taskId);
26
+ let content = `Task: [${task.task_code}] ${task.title}\n`;
27
+ content += `Phase: ${task.phase}\n`;
28
+ content += `Description: ${task.description || "No description"}\n`;
29
+ if (comments && comments.length > 0) {
30
+ content += `\nComments & History:\n`;
31
+ // Reverse comments to show in chronological order for the archive
32
+ const chronComments = [...comments].reverse();
33
+ for (const c of chronComments) {
34
+ const statusInfo = c.next_status ? ` (Status: ${c.previous_status} -> ${c.next_status})` : "";
35
+ content += `- [${c.created_at}] ${c.agent}${statusInfo}: ${c.comment}\n`;
36
+ }
37
+ }
38
+ // Use the task metadata if available
39
+ const metadata = {
40
+ task_id: taskId,
41
+ task_code: task.task_code,
42
+ original_metadata: task.metadata
43
+ };
44
+ const title = `Completed Task: ${task.title}`;
45
+ const truncatedTitle = title.length > 100 ? title.substring(0, 97) + "..." : title;
46
+ try {
47
+ await handleMemoryStore({
48
+ type: "task_archive",
49
+ title: truncatedTitle,
50
+ content: content,
51
+ importance: Math.min(5, task.priority + 1), // Slightly higher importance for archived tasks
52
+ agent: task.agent || "system",
53
+ role: task.role || "unknown",
54
+ model: "system",
55
+ scope: { repo: repo },
56
+ tags: ["task-archive", ...task.tags],
57
+ metadata: metadata
58
+ }, storage, vectors);
59
+ }
60
+ catch (error) {
61
+ // console.error is fine here, or use logger if available
62
+ console.error("Failed to archive task to memory", error);
63
+ }
64
+ }
20
65
  export async function handleTaskList(args, storage) {
21
66
  const { repo, status, phase, limit, offset } = TaskListSchema.parse(args);
22
67
  let tasks;
@@ -26,7 +71,7 @@ export async function handleTaskList(args, storage) {
26
71
  }
27
72
  else {
28
73
  // If no status specified, exclude 'completed' by default to keep context clean.
29
- const activeStatuses = ['pending', 'in_progress', 'blocked', 'canceled'];
74
+ const activeStatuses = ['backlog', 'pending', 'in_progress', 'blocked', 'canceled'];
30
75
  tasks = storage.getTasksByMultipleStatuses(repo, activeStatuses, limit, offset);
31
76
  }
32
77
  const filteredTasks = phase
@@ -51,6 +96,17 @@ export async function handleTaskCreate(args, storage) {
51
96
  if (storage.isTaskCodeDuplicate(repo, task_code)) {
52
97
  throw new Error(`Duplicate task_code: '${task_code}' already exists in repository '${repo}'`);
53
98
  }
99
+ // New tasks MUST be backlog or pending
100
+ if (status !== "backlog" && status !== "pending") {
101
+ throw new Error("New tasks must be created with status 'backlog' or 'pending'.");
102
+ }
103
+ // Max 10 pending tasks validation
104
+ if (status === "pending") {
105
+ const stats = storage.getTaskStats(repo);
106
+ if (stats.todo >= 10) {
107
+ throw new Error(`Cannot create task as 'pending'. Maximum of 10 pending tasks reached in repository '${repo}'. Please use 'backlog' instead.`);
108
+ }
109
+ }
54
110
  const taskId = randomUUID();
55
111
  const now = new Date().toISOString();
56
112
  const statusTimestamps = deriveTaskStatusTimestamps(status, now);
@@ -86,7 +142,7 @@ export async function handleTaskCreate(args, storage) {
86
142
  isError: false
87
143
  };
88
144
  }
89
- export async function handleTaskUpdate(args, storage) {
145
+ export async function handleTaskUpdate(args, storage, vectors) {
90
146
  const updateData = TaskUpdateSchema.parse(args);
91
147
  const { repo, id, comment, ...updates } = updateData;
92
148
  const existingTask = storage.getTaskById(id);
@@ -99,6 +155,9 @@ export async function handleTaskUpdate(args, storage) {
99
155
  throw new Error("comment is required when changing task status");
100
156
  }
101
157
  // Workflow transition validation
158
+ if (existingTask.status === "backlog" && updates.status === "completed") {
159
+ throw new Error("Cannot transition directly from 'backlog' to 'completed'. Task must be 'in_progress' first.");
160
+ }
102
161
  if (existingTask.status === "pending" && updates.status === "completed") {
103
162
  throw new Error("Cannot transition directly from 'pending' to 'completed'. Task must be 'in_progress' first.");
104
163
  }
@@ -143,10 +202,14 @@ export async function handleTaskUpdate(args, storage) {
143
202
  created_at: new Date().toISOString()
144
203
  });
145
204
  }
205
+ // Archive to memory if completed
206
+ if (updates.status === "completed" && existingTask.status !== "completed") {
207
+ await archiveTaskToMemory(id, repo, storage, vectors);
208
+ }
146
209
  return {
147
210
  content: [{
148
211
  type: "text",
149
- text: `Task updated: ${id}`
212
+ text: `Task updated: ${id}${updates.status === "completed" ? " and archived to memory" : ""}`
150
213
  }],
151
214
  isError: false
152
215
  };
@@ -1 +1 @@
1
- {"version":3,"file":"task.manage.js","sourceRoot":"","sources":["../../src/tools/task.manage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.manage.js","sourceRoot":"","sources":["../../src/tools/task.manage.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,17 @@
1
- import { describe, it, expect, beforeEach } from "vitest";
1
+ import { describe, it, expect, beforeEach, vi } from "vitest";
2
2
  import { handleTaskUpdate, handleTaskCreate } from "./task.manage.js";
3
3
  import { SQLiteStore } from "../storage/sqlite.js";
4
4
  describe("Task Status Transitions", () => {
5
5
  let db;
6
+ let mockVectors;
6
7
  const REPO = "test-repo";
7
8
  beforeEach(() => {
8
9
  db = new SQLiteStore(":memory:");
10
+ mockVectors = {
11
+ upsert: vi.fn().mockResolvedValue(undefined),
12
+ remove: vi.fn().mockResolvedValue(undefined),
13
+ search: vi.fn().mockResolvedValue([])
14
+ };
9
15
  });
10
16
  async function createTask(taskCode, status) {
11
17
  return await handleTaskCreate({
@@ -19,6 +25,33 @@ describe("Task Status Transitions", () => {
19
25
  role: "test-role"
20
26
  }, db);
21
27
  }
28
+ it("should block transition from backlog to completed", async () => {
29
+ await createTask("TASK-001", "backlog");
30
+ const task = db.getTasksByRepo(REPO)[0];
31
+ await expect(handleTaskUpdate({
32
+ repo: REPO,
33
+ id: task.id,
34
+ status: "completed",
35
+ comment: "finishing",
36
+ est_tokens: 100,
37
+ agent: "test-agent",
38
+ role: "test-role"
39
+ }, db, mockVectors)).rejects.toThrow("Cannot transition directly from 'backlog' to 'completed'. Task must be 'in_progress' first.");
40
+ });
41
+ it("should allow transition from backlog to pending", async () => {
42
+ await createTask("TASK-001", "backlog");
43
+ const task = db.getTasksByRepo(REPO)[0];
44
+ await handleTaskUpdate({
45
+ repo: REPO,
46
+ id: task.id,
47
+ status: "pending",
48
+ comment: "ready for execution",
49
+ agent: "test-agent",
50
+ role: "test-role"
51
+ }, db, mockVectors);
52
+ const updatedTask = db.getTaskById(task.id);
53
+ expect(updatedTask.status).toBe("pending");
54
+ });
22
55
  it("should block transition from pending to completed", async () => {
23
56
  await createTask("TASK-001", "pending");
24
57
  const task = db.getTasksByRepo(REPO)[0];
@@ -30,7 +63,7 @@ describe("Task Status Transitions", () => {
30
63
  est_tokens: 100,
31
64
  agent: "test-agent",
32
65
  role: "test-role"
33
- }, db)).rejects.toThrow("Cannot transition directly from 'pending' to 'completed'. Task must be 'in_progress' first.");
66
+ }, db, mockVectors)).rejects.toThrow("Cannot transition directly from 'pending' to 'completed'. Task must be 'in_progress' first.");
34
67
  });
35
68
  it("should allow transition from pending to in_progress", async () => {
36
69
  await createTask("TASK-001", "pending");
@@ -42,13 +75,22 @@ describe("Task Status Transitions", () => {
42
75
  comment: "starting",
43
76
  agent: "test-agent",
44
77
  role: "test-role"
45
- }, db);
78
+ }, db, mockVectors);
46
79
  const updatedTask = db.getTaskById(task.id);
47
80
  expect(updatedTask.status).toBe("in_progress");
48
81
  });
49
82
  it("should allow transition from in_progress to completed", async () => {
50
- await createTask("TASK-001", "in_progress");
83
+ await createTask("TASK-001", "pending");
51
84
  const task = db.getTasksByRepo(REPO)[0];
85
+ // to in_progress first
86
+ await handleTaskUpdate({
87
+ repo: REPO,
88
+ id: task.id,
89
+ status: "in_progress",
90
+ comment: "starting",
91
+ agent: "test-agent",
92
+ role: "test-role"
93
+ }, db, mockVectors);
52
94
  await handleTaskUpdate({
53
95
  repo: REPO,
54
96
  id: task.id,
@@ -57,13 +99,22 @@ describe("Task Status Transitions", () => {
57
99
  est_tokens: 100,
58
100
  agent: "test-agent",
59
101
  role: "test-role"
60
- }, db);
102
+ }, db, mockVectors);
61
103
  const updatedTask = db.getTaskById(task.id);
62
104
  expect(updatedTask.status).toBe("completed");
63
105
  });
64
106
  it("should allow transition to blocked and back", async () => {
65
- await createTask("TASK-001", "in_progress");
107
+ await createTask("TASK-001", "pending");
66
108
  const task = db.getTasksByRepo(REPO)[0];
109
+ // to in_progress first
110
+ await handleTaskUpdate({
111
+ repo: REPO,
112
+ id: task.id,
113
+ status: "in_progress",
114
+ comment: "starting",
115
+ agent: "test-agent",
116
+ role: "test-role"
117
+ }, db, mockVectors);
67
118
  // to blocked
68
119
  await handleTaskUpdate({
69
120
  repo: REPO,
@@ -72,7 +123,7 @@ describe("Task Status Transitions", () => {
72
123
  comment: "waiting for feedback",
73
124
  agent: "test-agent",
74
125
  role: "test-role"
75
- }, db);
126
+ }, db, mockVectors);
76
127
  expect(db.getTaskById(task.id).status).toBe("blocked");
77
128
  // back to in_progress
78
129
  await handleTaskUpdate({
@@ -82,7 +133,7 @@ describe("Task Status Transitions", () => {
82
133
  comment: "feedback received",
83
134
  agent: "test-agent",
84
135
  role: "test-role"
85
- }, db);
136
+ }, db, mockVectors);
86
137
  expect(db.getTaskById(task.id).status).toBe("in_progress");
87
138
  // to blocked from pending
88
139
  await createTask("TASK-002", "pending");
@@ -94,12 +145,21 @@ describe("Task Status Transitions", () => {
94
145
  comment: "blocked early",
95
146
  agent: "test-agent",
96
147
  role: "test-role"
97
- }, db);
148
+ }, db, mockVectors);
98
149
  expect(db.getTaskById(task2.id).status).toBe("blocked");
99
150
  });
100
151
  it("should block transition from blocked to completed", async () => {
101
- await createTask("TASK-001", "blocked");
152
+ await createTask("TASK-001", "pending");
102
153
  const task = db.getTasksByRepo(REPO)[0];
154
+ // to blocked
155
+ await handleTaskUpdate({
156
+ repo: REPO,
157
+ id: task.id,
158
+ status: "blocked",
159
+ comment: "blocked",
160
+ agent: "test-agent",
161
+ role: "test-role"
162
+ }, db, mockVectors);
103
163
  await expect(handleTaskUpdate({
104
164
  repo: REPO,
105
165
  id: task.id,
@@ -108,7 +168,7 @@ describe("Task Status Transitions", () => {
108
168
  est_tokens: 100,
109
169
  agent: "test-agent",
110
170
  role: "test-role"
111
- }, db)).rejects.toThrow("Cannot transition directly from 'blocked' to 'completed'. Task must be 'in_progress' first.");
171
+ }, db, mockVectors)).rejects.toThrow("Cannot transition directly from 'blocked' to 'completed'. Task must be 'in_progress' first.");
112
172
  });
113
173
  });
114
174
  //# sourceMappingURL=tasks-transition.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-transition.test.js","sourceRoot":"","sources":["../../src/tools/tasks-transition.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks-transition.test.js","sourceRoot":"","sources":["../../src/tools/tasks-transition.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tasks.pending-limit-refined.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.pending-limit-refined.test.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.pending-limit-refined.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import { describe, it, expect, beforeEach, vi } from "vitest";
2
+ import { handleTaskCreate, handleTaskUpdate } from "./task.manage.js";
3
+ import { SQLiteStore } from "../storage/sqlite.js";
4
+ describe("Task Pending Limit Refined Validation", () => {
5
+ let db;
6
+ let mockVectors;
7
+ const REPO = "test-repo";
8
+ beforeEach(() => {
9
+ db = new SQLiteStore(":memory:");
10
+ mockVectors = {
11
+ upsert: vi.fn().mockResolvedValue(undefined),
12
+ remove: vi.fn().mockResolvedValue(undefined),
13
+ search: vi.fn().mockResolvedValue([])
14
+ };
15
+ });
16
+ async function createManyPending(count) {
17
+ for (let i = 0; i < count; i++) {
18
+ await handleTaskCreate({
19
+ repo: REPO,
20
+ task_code: `TASK-${i}`,
21
+ phase: "test",
22
+ title: "Test Task",
23
+ description: "Test Description",
24
+ status: "pending",
25
+ agent: "test-agent",
26
+ role: "test-role"
27
+ }, db);
28
+ }
29
+ }
30
+ it("should block creating the 11th pending task", async () => {
31
+ await createManyPending(10);
32
+ await expect(handleTaskCreate({
33
+ repo: REPO,
34
+ task_code: "TASK-11",
35
+ phase: "test",
36
+ title: "11th Task",
37
+ description: "Should fail",
38
+ status: "pending",
39
+ agent: "test-agent",
40
+ role: "test-role"
41
+ }, db)).rejects.toThrow(/Maximum of 10 pending tasks reached/);
42
+ });
43
+ it("should ALLOW moving from backlog to pending even if limit reached", async () => {
44
+ await createManyPending(10);
45
+ // Create one backlog task (allowed)
46
+ await handleTaskCreate({
47
+ repo: REPO,
48
+ task_code: "TASK-BACKLOG",
49
+ phase: "test",
50
+ title: "Backlog Task",
51
+ description: "In backlog",
52
+ status: "backlog",
53
+ agent: "test-agent",
54
+ role: "test-role"
55
+ }, db);
56
+ const task = db.getTasksByRepo(REPO).find(t => t.task_code === "TASK-BACKLOG");
57
+ // Move to pending (should be ALLOWED now)
58
+ await handleTaskUpdate({
59
+ repo: REPO,
60
+ id: task.id,
61
+ status: "pending",
62
+ comment: "ready to start",
63
+ agent: "test-agent",
64
+ role: "test-role"
65
+ }, db, mockVectors);
66
+ const updatedTask = db.getTaskById(task.id);
67
+ expect(updatedTask.status).toBe("pending");
68
+ const stats = db.getTaskStats(REPO);
69
+ expect(stats.todo).toBe(11);
70
+ });
71
+ });
72
+ //# sourceMappingURL=tasks.pending-limit-refined.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.pending-limit-refined.test.js","sourceRoot":"","sources":["../../src/tools/tasks.pending-limit-refined.test.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type MemoryType = "code_fact" | "decision" | "mistake" | "pattern" | "agent_handoff" | "agent_registered" | "file_claim";
1
+ export type MemoryType = "code_fact" | "decision" | "mistake" | "pattern" | "agent_handoff" | "agent_registered" | "file_claim" | "task_archive";
2
2
  export type MemoryScope = {
3
3
  repo: string;
4
4
  branch?: string;
@@ -32,10 +32,11 @@ export type VectorResult = {
32
32
  id: string;
33
33
  score: number;
34
34
  };
35
- export type TaskStatus = "pending" | "in_progress" | "completed" | "canceled" | "blocked";
35
+ export type TaskStatus = "backlog" | "pending" | "in_progress" | "completed" | "canceled" | "blocked";
36
36
  export type TaskPriority = 1 | 2 | 3 | 4 | 5;
37
37
  export interface TaskStats {
38
38
  total: number;
39
+ backlog: number;
39
40
  todo: number;
40
41
  inProgress: number;
41
42
  completed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.4.2",
3
+ "version": "0.4.6",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",