@vheins/local-memory-mcp 0.4.2 → 0.4.5
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/dist/prompts/registry.d.ts +92 -8
- package/dist/prompts/registry.d.ts.map +1 -1
- package/dist/prompts/registry.js +204 -41
- package/dist/prompts/registry.js.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +18 -3
- package/dist/router.js.map +1 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +5 -3
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/tasks.archive.test.d.ts +2 -0
- package/dist/tasks.archive.test.d.ts.map +1 -0
- package/dist/tasks.archive.test.js +75 -0
- package/dist/tasks.archive.test.js.map +1 -0
- package/dist/tools/schemas.d.ts +4 -15
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +4 -5
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/task.bulk-manage.d.ts +2 -1
- package/dist/tools/task.bulk-manage.d.ts.map +1 -1
- package/dist/tools/task.bulk-manage.js +6 -1
- package/dist/tools/task.bulk-manage.js.map +1 -1
- package/dist/tools/task.manage.d.ts +3 -1
- package/dist/tools/task.manage.d.ts.map +1 -1
- package/dist/tools/task.manage.js +51 -2
- package/dist/tools/task.manage.js.map +1 -1
- package/dist/tools/tasks-transition.test.js +14 -8
- package/dist/tools/tasks-transition.test.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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;;;;;;GA6CrB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW;;;;;;GA8ErB;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;
|
|
@@ -86,7 +131,7 @@ export async function handleTaskCreate(args, storage) {
|
|
|
86
131
|
isError: false
|
|
87
132
|
};
|
|
88
133
|
}
|
|
89
|
-
export async function handleTaskUpdate(args, storage) {
|
|
134
|
+
export async function handleTaskUpdate(args, storage, vectors) {
|
|
90
135
|
const updateData = TaskUpdateSchema.parse(args);
|
|
91
136
|
const { repo, id, comment, ...updates } = updateData;
|
|
92
137
|
const existingTask = storage.getTaskById(id);
|
|
@@ -143,10 +188,14 @@ export async function handleTaskUpdate(args, storage) {
|
|
|
143
188
|
created_at: new Date().toISOString()
|
|
144
189
|
});
|
|
145
190
|
}
|
|
191
|
+
// Archive to memory if completed
|
|
192
|
+
if (updates.status === "completed" && existingTask.status !== "completed") {
|
|
193
|
+
await archiveTaskToMemory(id, repo, storage, vectors);
|
|
194
|
+
}
|
|
146
195
|
return {
|
|
147
196
|
content: [{
|
|
148
197
|
type: "text",
|
|
149
|
-
text: `Task updated: ${id}`
|
|
198
|
+
text: `Task updated: ${id}${updates.status === "completed" ? " and archived to memory" : ""}`
|
|
150
199
|
}],
|
|
151
200
|
isError: false
|
|
152
201
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.manage.js","sourceRoot":"","sources":["../../src/tools/task.manage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
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({
|
|
@@ -30,7 +36,7 @@ describe("Task Status Transitions", () => {
|
|
|
30
36
|
est_tokens: 100,
|
|
31
37
|
agent: "test-agent",
|
|
32
38
|
role: "test-role"
|
|
33
|
-
}, db)).rejects.toThrow("Cannot transition directly from 'pending' to 'completed'. Task must be 'in_progress' first.");
|
|
39
|
+
}, db, mockVectors)).rejects.toThrow("Cannot transition directly from 'pending' to 'completed'. Task must be 'in_progress' first.");
|
|
34
40
|
});
|
|
35
41
|
it("should allow transition from pending to in_progress", async () => {
|
|
36
42
|
await createTask("TASK-001", "pending");
|
|
@@ -42,7 +48,7 @@ describe("Task Status Transitions", () => {
|
|
|
42
48
|
comment: "starting",
|
|
43
49
|
agent: "test-agent",
|
|
44
50
|
role: "test-role"
|
|
45
|
-
}, db);
|
|
51
|
+
}, db, mockVectors);
|
|
46
52
|
const updatedTask = db.getTaskById(task.id);
|
|
47
53
|
expect(updatedTask.status).toBe("in_progress");
|
|
48
54
|
});
|
|
@@ -57,7 +63,7 @@ describe("Task Status Transitions", () => {
|
|
|
57
63
|
est_tokens: 100,
|
|
58
64
|
agent: "test-agent",
|
|
59
65
|
role: "test-role"
|
|
60
|
-
}, db);
|
|
66
|
+
}, db, mockVectors);
|
|
61
67
|
const updatedTask = db.getTaskById(task.id);
|
|
62
68
|
expect(updatedTask.status).toBe("completed");
|
|
63
69
|
});
|
|
@@ -72,7 +78,7 @@ describe("Task Status Transitions", () => {
|
|
|
72
78
|
comment: "waiting for feedback",
|
|
73
79
|
agent: "test-agent",
|
|
74
80
|
role: "test-role"
|
|
75
|
-
}, db);
|
|
81
|
+
}, db, mockVectors);
|
|
76
82
|
expect(db.getTaskById(task.id).status).toBe("blocked");
|
|
77
83
|
// back to in_progress
|
|
78
84
|
await handleTaskUpdate({
|
|
@@ -82,7 +88,7 @@ describe("Task Status Transitions", () => {
|
|
|
82
88
|
comment: "feedback received",
|
|
83
89
|
agent: "test-agent",
|
|
84
90
|
role: "test-role"
|
|
85
|
-
}, db);
|
|
91
|
+
}, db, mockVectors);
|
|
86
92
|
expect(db.getTaskById(task.id).status).toBe("in_progress");
|
|
87
93
|
// to blocked from pending
|
|
88
94
|
await createTask("TASK-002", "pending");
|
|
@@ -94,7 +100,7 @@ describe("Task Status Transitions", () => {
|
|
|
94
100
|
comment: "blocked early",
|
|
95
101
|
agent: "test-agent",
|
|
96
102
|
role: "test-role"
|
|
97
|
-
}, db);
|
|
103
|
+
}, db, mockVectors);
|
|
98
104
|
expect(db.getTaskById(task2.id).status).toBe("blocked");
|
|
99
105
|
});
|
|
100
106
|
it("should block transition from blocked to completed", async () => {
|
|
@@ -108,7 +114,7 @@ describe("Task Status Transitions", () => {
|
|
|
108
114
|
est_tokens: 100,
|
|
109
115
|
agent: "test-agent",
|
|
110
116
|
role: "test-role"
|
|
111
|
-
}, db)).rejects.toThrow("Cannot transition directly from 'blocked' to 'completed'. Task must be 'in_progress' first.");
|
|
117
|
+
}, db, mockVectors)).rejects.toThrow("Cannot transition directly from 'blocked' to 'completed'. Task must be 'in_progress' first.");
|
|
112
118
|
});
|
|
113
119
|
});
|
|
114
120
|
//# 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"tasks-transition.test.js","sourceRoot":"","sources":["../../src/tools/tasks-transition.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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|