@vheins/local-memory-mcp 0.4.8 → 0.4.11
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/capabilities.d.ts +7 -7
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +7 -7
- package/dist/capabilities.js.map +1 -1
- package/dist/completion.d.ts +25 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +127 -0
- package/dist/completion.js.map +1 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +8 -1
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/elicitation.d.ts +24 -0
- package/dist/mcp/elicitation.d.ts.map +1 -0
- package/dist/mcp/elicitation.js +13 -0
- package/dist/mcp/elicitation.js.map +1 -0
- package/dist/mcp/sampling.d.ts +69 -0
- package/dist/mcp/sampling.d.ts.map +1 -0
- package/dist/mcp/sampling.js +13 -0
- package/dist/mcp/sampling.js.map +1 -0
- package/dist/mcp/session.d.ts +28 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +106 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/prompts/registry.d.ts +55 -0
- package/dist/prompts/registry.d.ts.map +1 -1
- package/dist/prompts/registry.js +455 -7
- package/dist/prompts/registry.js.map +1 -1
- package/dist/resources/index.d.ts +55 -4
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +222 -52
- package/dist/resources/index.js.map +1 -1
- package/dist/router.d.ts +11 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +151 -34
- package/dist/router.js.map +1 -1
- package/dist/server.js +212 -13
- package/dist/server.js.map +1 -1
- package/dist/tests/client.test.d.ts +2 -0
- package/dist/tests/client.test.d.ts.map +1 -0
- package/dist/tests/client.test.js +130 -0
- package/dist/tests/client.test.js.map +1 -0
- package/dist/tests/dashboard.test.d.ts +2 -0
- package/dist/tests/dashboard.test.d.ts.map +1 -0
- package/dist/tests/dashboard.test.js +370 -0
- package/dist/tests/dashboard.test.js.map +1 -0
- package/dist/tests/e2e.test.d.ts +2 -0
- package/dist/tests/e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e.test.js +250 -0
- package/dist/tests/e2e.test.js.map +1 -0
- package/dist/tests/index.test.d.ts +2 -0
- package/dist/tests/index.test.d.ts.map +1 -0
- package/dist/tests/index.test.js +185 -0
- package/dist/tests/index.test.js.map +1 -0
- package/dist/tests/logger.test.d.ts +2 -0
- package/dist/tests/logger.test.d.ts.map +1 -0
- package/dist/tests/logger.test.js +104 -0
- package/dist/tests/logger.test.js.map +1 -0
- package/dist/tests/memory.bulk.test.d.ts +2 -0
- package/dist/tests/memory.bulk.test.d.ts.map +1 -0
- package/dist/tests/memory.bulk.test.js +52 -0
- package/dist/tests/memory.bulk.test.js.map +1 -0
- package/dist/tests/memory.search.test.d.ts +2 -0
- package/dist/tests/memory.search.test.d.ts.map +1 -0
- package/dist/tests/memory.search.test.js +181 -0
- package/dist/tests/memory.search.test.js.map +1 -0
- package/dist/tests/normalize.test.d.ts +2 -0
- package/dist/tests/normalize.test.d.ts.map +1 -0
- package/dist/tests/normalize.test.js +181 -0
- package/dist/tests/normalize.test.js.map +1 -0
- package/dist/tests/query-expander.test.d.ts +2 -0
- package/dist/tests/query-expander.test.d.ts.map +1 -0
- package/dist/tests/query-expander.test.js +33 -0
- package/dist/tests/query-expander.test.js.map +1 -0
- package/dist/tests/router.test.d.ts +2 -0
- package/dist/tests/router.test.d.ts.map +1 -0
- package/dist/tests/router.test.js +470 -0
- package/dist/tests/router.test.js.map +1 -0
- package/dist/tests/sqlite.test.d.ts +2 -0
- package/dist/tests/sqlite.test.d.ts.map +1 -0
- package/dist/tests/sqlite.test.js +367 -0
- package/dist/tests/sqlite.test.js.map +1 -0
- package/dist/tests/tasks-search.test.d.ts +2 -0
- package/dist/tests/tasks-search.test.d.ts.map +1 -0
- package/dist/tests/tasks-search.test.js +154 -0
- package/dist/tests/tasks-search.test.js.map +1 -0
- package/dist/tests/tasks-transition.test.d.ts +2 -0
- package/dist/tests/tasks-transition.test.d.ts.map +1 -0
- package/dist/tests/tasks-transition.test.js +174 -0
- package/dist/tests/tasks-transition.test.js.map +1 -0
- package/dist/tests/tasks.bulk.test.d.ts +2 -0
- package/dist/tests/tasks.bulk.test.d.ts.map +1 -0
- package/dist/tests/tasks.bulk.test.js +254 -0
- package/dist/tests/tasks.bulk.test.js.map +1 -0
- package/dist/tests/tasks.e2e.test.d.ts +2 -0
- package/dist/tests/tasks.e2e.test.d.ts.map +1 -0
- package/dist/tests/tasks.e2e.test.js +289 -0
- package/dist/tests/tasks.e2e.test.js.map +1 -0
- package/dist/tests/tasks.pending-limit-refined.test.d.ts +2 -0
- package/dist/tests/tasks.pending-limit-refined.test.d.ts.map +1 -0
- package/dist/tests/tasks.pending-limit-refined.test.js +72 -0
- package/dist/tests/tasks.pending-limit-refined.test.js.map +1 -0
- package/dist/tests/v2-features.test.d.ts +2 -0
- package/dist/tests/v2-features.test.d.ts.map +1 -0
- package/dist/tests/v2-features.test.js +209 -0
- package/dist/tests/v2-features.test.js.map +1 -0
- package/dist/tools/memory.bulk-delete.d.ts +1 -7
- package/dist/tools/memory.bulk-delete.d.ts.map +1 -1
- package/dist/tools/memory.bulk-delete.js +30 -8
- package/dist/tools/memory.bulk-delete.js.map +1 -1
- package/dist/tools/memory.delete.d.ts.map +1 -1
- package/dist/tools/memory.delete.js +18 -1
- package/dist/tools/memory.delete.js.map +1 -1
- package/dist/tools/memory.recap.d.ts.map +1 -1
- package/dist/tools/memory.recap.js +24 -1
- package/dist/tools/memory.recap.js.map +1 -1
- package/dist/tools/memory.search.d.ts.map +1 -1
- package/dist/tools/memory.search.js +16 -1
- package/dist/tools/memory.search.js.map +1 -1
- package/dist/tools/memory.store.d.ts.map +1 -1
- package/dist/tools/memory.store.js +31 -1
- package/dist/tools/memory.store.js.map +1 -1
- package/dist/tools/memory.summarize.d.ts.map +1 -1
- package/dist/tools/memory.summarize.js +19 -1
- package/dist/tools/memory.summarize.js.map +1 -1
- package/dist/tools/memory.synthesize.d.ts +14 -0
- package/dist/tools/memory.synthesize.d.ts.map +1 -0
- package/dist/tools/memory.synthesize.js +228 -0
- package/dist/tools/memory.synthesize.js.map +1 -0
- package/dist/tools/memory.update.d.ts.map +1 -1
- package/dist/tools/memory.update.js +19 -1
- package/dist/tools/memory.update.js.map +1 -1
- package/dist/tools/schemas.d.ts +1750 -263
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +482 -14
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/task.bulk-manage.d.ts +1 -7
- package/dist/tools/task.bulk-manage.d.ts.map +1 -1
- package/dist/tools/task.bulk-manage.js +60 -15
- package/dist/tools/task.bulk-manage.js.map +1 -1
- package/dist/tools/task.manage.d.ts +12 -28
- package/dist/tools/task.manage.d.ts.map +1 -1
- package/dist/tools/task.manage.js +198 -31
- package/dist/tools/task.manage.js.map +1 -1
- package/dist/utils/completion.d.ts +2 -0
- package/dist/utils/completion.d.ts.map +1 -0
- package/dist/utils/completion.js +28 -0
- package/dist/utils/completion.js.map +1 -0
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +101 -29
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mcp-response.d.ts +50 -0
- package/dist/utils/mcp-response.d.ts.map +1 -1
- package/dist/utils/mcp-response.js +54 -7
- package/dist/utils/mcp-response.js.map +1 -1
- package/dist/utils/normalize.d.ts +5 -0
- package/dist/utils/normalize.d.ts.map +1 -1
- package/dist/utils/normalize.js +11 -0
- package/dist/utils/normalize.js.map +1 -1
- package/dist/utils/pagination.d.ts +6 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +32 -0
- package/dist/utils/pagination.js.map +1 -0
- package/package.json +1 -1
package/dist/tools/schemas.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { normalizeRepo } from "../utils/normalize.js";
|
|
2
3
|
// Shared schema components
|
|
3
4
|
export const MemoryScopeSchema = z.object({
|
|
4
|
-
repo: z.string().min(1),
|
|
5
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
5
6
|
branch: z.string().optional(),
|
|
6
7
|
folder: z.string().optional(),
|
|
7
8
|
language: z.string().optional()
|
|
@@ -41,7 +42,7 @@ export const MemoryUpdateSchema = z.object({
|
|
|
41
42
|
export const MemorySearchSchema = z.object({
|
|
42
43
|
query: z.string().min(3),
|
|
43
44
|
prompt: z.string().optional(),
|
|
44
|
-
repo: z.string().min(1),
|
|
45
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
45
46
|
types: z.array(MemoryTypeSchema).optional(),
|
|
46
47
|
minImportance: z.number().min(1).max(5).optional(),
|
|
47
48
|
limit: z.number().min(1).max(100).default(5),
|
|
@@ -57,22 +58,32 @@ export const MemoryAcknowledgeSchema = z.object({
|
|
|
57
58
|
application_context: z.string().min(10).optional()
|
|
58
59
|
});
|
|
59
60
|
export const MemoryRecapSchema = z.object({
|
|
60
|
-
repo: z.string().min(1),
|
|
61
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
61
62
|
limit: z.number().min(1).max(50).default(20),
|
|
62
63
|
offset: z.number().min(0).default(0)
|
|
63
64
|
});
|
|
64
65
|
export const MemoryBulkDeleteSchema = z.object({
|
|
65
|
-
repo: z.string().min(1),
|
|
66
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
66
67
|
ids: z.array(z.string().uuid()).min(1)
|
|
67
68
|
});
|
|
68
69
|
export const MemorySummarizeSchema = z.object({
|
|
69
|
-
repo: z.string().min(1),
|
|
70
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
70
71
|
signals: z.array(z.string().max(200)).min(1)
|
|
71
72
|
});
|
|
73
|
+
export const MemorySynthesizeSchema = z.object({
|
|
74
|
+
repo: z.string().min(1).transform(normalizeRepo).optional(),
|
|
75
|
+
objective: z.string().min(5),
|
|
76
|
+
current_file_path: z.string().optional(),
|
|
77
|
+
include_summary: z.boolean().default(true),
|
|
78
|
+
include_tasks: z.boolean().default(true),
|
|
79
|
+
use_tools: z.boolean().default(true),
|
|
80
|
+
max_iterations: z.number().int().min(1).max(5).default(3),
|
|
81
|
+
max_tokens: z.number().int().min(128).max(4000).default(1200)
|
|
82
|
+
});
|
|
72
83
|
export const TaskStatusSchema = z.enum(["backlog", "pending", "in_progress", "completed", "canceled", "blocked"]);
|
|
73
84
|
export const TaskPrioritySchema = z.number().min(1).max(5);
|
|
74
85
|
export const TaskCreateSchema = z.object({
|
|
75
|
-
repo: z.string().min(1),
|
|
86
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
76
87
|
task_code: z.string().min(1),
|
|
77
88
|
phase: z.string().min(1),
|
|
78
89
|
title: z.string().min(3).max(100),
|
|
@@ -88,8 +99,11 @@ export const TaskCreateSchema = z.object({
|
|
|
88
99
|
depends_on: z.string().uuid().optional(),
|
|
89
100
|
est_tokens: z.number().int().min(0).optional()
|
|
90
101
|
});
|
|
102
|
+
export const TaskCreateInteractiveSchema = TaskCreateSchema.partial().extend({
|
|
103
|
+
repo: z.string().min(1).transform(normalizeRepo).optional(),
|
|
104
|
+
});
|
|
91
105
|
export const TaskUpdateSchema = z.object({
|
|
92
|
-
repo: z.string().min(1),
|
|
106
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
93
107
|
id: z.string().uuid(),
|
|
94
108
|
task_code: z.string().optional(),
|
|
95
109
|
phase: z.string().optional(),
|
|
@@ -109,15 +123,23 @@ export const TaskUpdateSchema = z.object({
|
|
|
109
123
|
est_tokens: z.number().int().min(0).optional()
|
|
110
124
|
}).refine((data) => Object.keys(data).length > 2, { message: "At least one field besides repo and id must be provided for update" });
|
|
111
125
|
export const TaskListSchema = z.object({
|
|
112
|
-
repo: z.string().min(1),
|
|
113
|
-
status:
|
|
126
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
127
|
+
status: z.string().optional(),
|
|
114
128
|
phase: z.string().optional(),
|
|
129
|
+
search: z.string().optional(),
|
|
130
|
+
limit: z.number().min(1).max(100).default(15),
|
|
131
|
+
offset: z.number().min(0).default(0)
|
|
132
|
+
});
|
|
133
|
+
export const TaskSearchSchema = z.object({
|
|
134
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
135
|
+
query: z.string().min(1),
|
|
136
|
+
status: z.string().optional(),
|
|
115
137
|
limit: z.number().min(1).max(100).default(15),
|
|
116
138
|
offset: z.number().min(0).default(0)
|
|
117
139
|
});
|
|
118
140
|
export const TaskBulkManageSchema = z.object({
|
|
119
141
|
action: z.enum(["bulk_create", "bulk_delete"]),
|
|
120
|
-
repo: z.string().min(1),
|
|
142
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
121
143
|
tasks: z.array(z.object({
|
|
122
144
|
task_code: z.string().min(1),
|
|
123
145
|
phase: z.string().min(1),
|
|
@@ -137,14 +159,99 @@ export const TaskBulkManageSchema = z.object({
|
|
|
137
159
|
ids: z.array(z.string().uuid()).min(1).optional()
|
|
138
160
|
}).refine((data) => (data.action === "bulk_create" && data.tasks) || (data.action === "bulk_delete" && data.ids), { message: "tasks is required for bulk_create, ids is required for bulk_delete" });
|
|
139
161
|
export const TaskDeleteSchema = z.object({
|
|
140
|
-
repo: z.string().min(1),
|
|
162
|
+
repo: z.string().min(1).transform(normalizeRepo),
|
|
141
163
|
id: z.string().uuid()
|
|
142
164
|
});
|
|
143
165
|
// Tool definitions for MCP
|
|
144
166
|
export const TOOL_DEFINITIONS = [
|
|
167
|
+
{
|
|
168
|
+
name: "memory-synthesize",
|
|
169
|
+
title: "Memory Synthesize",
|
|
170
|
+
description: "Use client sampling to synthesize a grounded answer from local memory and tasks. Best for project briefings, tradeoff summaries, and context-aware answers.",
|
|
171
|
+
annotations: {
|
|
172
|
+
readOnlyHint: true,
|
|
173
|
+
idempotentHint: true,
|
|
174
|
+
openWorldHint: false
|
|
175
|
+
},
|
|
176
|
+
execution: {
|
|
177
|
+
taskSupport: "optional"
|
|
178
|
+
},
|
|
179
|
+
inputSchema: {
|
|
180
|
+
type: "object",
|
|
181
|
+
properties: {
|
|
182
|
+
repo: { type: "string", description: "Repository name. Optional when a single MCP root is active." },
|
|
183
|
+
objective: { type: "string", minLength: 5, description: "Question or synthesis objective." },
|
|
184
|
+
current_file_path: { type: "string", description: "Optional absolute file path for workspace-local grounding." },
|
|
185
|
+
include_summary: { type: "boolean", default: true },
|
|
186
|
+
include_tasks: { type: "boolean", default: true },
|
|
187
|
+
use_tools: { type: "boolean", default: true, description: "Allow the sampled model to call local memory/task tools during synthesis when the client supports sampling.tools." },
|
|
188
|
+
max_iterations: { type: "number", minimum: 1, maximum: 5, default: 3 },
|
|
189
|
+
max_tokens: { type: "number", minimum: 128, maximum: 4000, default: 1200 }
|
|
190
|
+
},
|
|
191
|
+
required: ["objective"]
|
|
192
|
+
},
|
|
193
|
+
outputSchema: {
|
|
194
|
+
type: "object",
|
|
195
|
+
properties: {
|
|
196
|
+
repo: { type: "string" },
|
|
197
|
+
objective: { type: "string" },
|
|
198
|
+
answer: { type: "string" },
|
|
199
|
+
model: { type: "string" },
|
|
200
|
+
stopReason: { type: "string" },
|
|
201
|
+
iterations: { type: "number" },
|
|
202
|
+
toolCalls: { type: "number" }
|
|
203
|
+
},
|
|
204
|
+
required: ["repo", "objective", "answer", "iterations", "toolCalls"]
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
name: "task-create-interactive",
|
|
209
|
+
title: "Interactive Task Create",
|
|
210
|
+
description: "Create a task with MCP elicitation fallback for any missing required fields. Best when an agent knows a task is needed but still needs user confirmation for repo, title, or phase.",
|
|
211
|
+
annotations: {
|
|
212
|
+
readOnlyHint: false,
|
|
213
|
+
idempotentHint: false,
|
|
214
|
+
destructiveHint: false,
|
|
215
|
+
openWorldHint: false
|
|
216
|
+
},
|
|
217
|
+
inputSchema: {
|
|
218
|
+
type: "object",
|
|
219
|
+
properties: {
|
|
220
|
+
repo: { type: "string", description: "Repository name. Optional when it can be inferred from MCP roots or elicited from the user." },
|
|
221
|
+
task_code: { type: "string" },
|
|
222
|
+
phase: { type: "string" },
|
|
223
|
+
title: { type: "string", minLength: 3, maxLength: 100 },
|
|
224
|
+
description: { type: "string", minLength: 1 },
|
|
225
|
+
status: { type: "string", enum: ["backlog", "pending"], default: "backlog" },
|
|
226
|
+
priority: { type: "number", minimum: 1, maximum: 5, default: 3 },
|
|
227
|
+
agent: { type: "string" },
|
|
228
|
+
role: { type: "string" },
|
|
229
|
+
doc_path: { type: "string" }
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
outputSchema: {
|
|
233
|
+
type: "object",
|
|
234
|
+
properties: {
|
|
235
|
+
repo: { type: "string" },
|
|
236
|
+
task_code: { type: "string" },
|
|
237
|
+
phase: { type: "string" },
|
|
238
|
+
title: { type: "string" },
|
|
239
|
+
status: { type: "string" },
|
|
240
|
+
priority: { type: "number" }
|
|
241
|
+
},
|
|
242
|
+
required: ["repo", "task_code", "phase", "title", "status", "priority"]
|
|
243
|
+
}
|
|
244
|
+
},
|
|
145
245
|
{
|
|
146
246
|
name: "memory-store",
|
|
247
|
+
title: "Memory Store",
|
|
147
248
|
description: "Store a new memory entry. Keep 'title' concise and human-readable; do not embed agent/role/date metadata in the title. Put auxiliary context into 'metadata'. Use 'tags' for tech-stack and 'is_global' for universal rules.",
|
|
249
|
+
annotations: {
|
|
250
|
+
readOnlyHint: false,
|
|
251
|
+
idempotentHint: false,
|
|
252
|
+
destructiveHint: false,
|
|
253
|
+
openWorldHint: false
|
|
254
|
+
},
|
|
148
255
|
inputSchema: {
|
|
149
256
|
type: "object",
|
|
150
257
|
properties: {
|
|
@@ -205,11 +312,30 @@ export const TOOL_DEFINITIONS = [
|
|
|
205
312
|
supersedes: { type: "string", format: "uuid" }
|
|
206
313
|
},
|
|
207
314
|
required: ["type", "title", "content", "importance", "scope", "agent", "model"]
|
|
315
|
+
},
|
|
316
|
+
outputSchema: {
|
|
317
|
+
type: "object",
|
|
318
|
+
properties: {
|
|
319
|
+
success: { type: "boolean" },
|
|
320
|
+
id: { type: "string" },
|
|
321
|
+
repo: { type: "string" },
|
|
322
|
+
type: { type: "string" },
|
|
323
|
+
title: { type: "string" },
|
|
324
|
+
error: { type: "string" },
|
|
325
|
+
message: { type: "string" }
|
|
326
|
+
},
|
|
327
|
+
required: ["success"]
|
|
208
328
|
}
|
|
209
329
|
},
|
|
210
330
|
{
|
|
211
331
|
name: "memory-acknowledge",
|
|
332
|
+
title: "Memory Acknowledge",
|
|
212
333
|
description: "Acknowledge the use of a memory or report its irrelevance/contradiction. Mandatory after using memory to generate code.",
|
|
334
|
+
annotations: {
|
|
335
|
+
readOnlyHint: false,
|
|
336
|
+
idempotentHint: false,
|
|
337
|
+
openWorldHint: false
|
|
338
|
+
},
|
|
213
339
|
inputSchema: {
|
|
214
340
|
type: "object",
|
|
215
341
|
properties: {
|
|
@@ -218,11 +344,27 @@ export const TOOL_DEFINITIONS = [
|
|
|
218
344
|
application_context: { type: "string", minLength: 10 }
|
|
219
345
|
},
|
|
220
346
|
required: ["memory_id", "status"]
|
|
347
|
+
},
|
|
348
|
+
outputSchema: {
|
|
349
|
+
type: "object",
|
|
350
|
+
properties: {
|
|
351
|
+
success: { type: "boolean" },
|
|
352
|
+
id: { type: "string" },
|
|
353
|
+
status: { type: "string" }
|
|
354
|
+
},
|
|
355
|
+
required: ["success", "id", "status"]
|
|
221
356
|
}
|
|
222
357
|
},
|
|
223
358
|
{
|
|
224
359
|
name: "memory-update",
|
|
360
|
+
title: "Memory Update",
|
|
225
361
|
description: "Update an existing memory entry. Keep 'title' concise and move agent/role/date or claim context into 'metadata' instead of the title.",
|
|
362
|
+
annotations: {
|
|
363
|
+
readOnlyHint: false,
|
|
364
|
+
idempotentHint: false,
|
|
365
|
+
destructiveHint: false,
|
|
366
|
+
openWorldHint: false
|
|
367
|
+
},
|
|
226
368
|
inputSchema: {
|
|
227
369
|
type: "object",
|
|
228
370
|
properties: {
|
|
@@ -238,11 +380,30 @@ export const TOOL_DEFINITIONS = [
|
|
|
238
380
|
is_global: { type: "boolean" }
|
|
239
381
|
},
|
|
240
382
|
required: ["id"]
|
|
383
|
+
},
|
|
384
|
+
outputSchema: {
|
|
385
|
+
type: "object",
|
|
386
|
+
properties: {
|
|
387
|
+
success: { type: "boolean" },
|
|
388
|
+
id: { type: "string" },
|
|
389
|
+
repo: { type: "string" },
|
|
390
|
+
updatedFields: {
|
|
391
|
+
type: "array",
|
|
392
|
+
items: { type: "string" }
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
required: ["success", "id", "repo", "updatedFields"]
|
|
241
396
|
}
|
|
242
397
|
},
|
|
243
398
|
{
|
|
244
399
|
name: "memory-search",
|
|
400
|
+
title: "Memory Search",
|
|
245
401
|
description: "Search for relevant memories. Use 'current_tags' to find tech-stack specific knowledge from other projects.",
|
|
402
|
+
annotations: {
|
|
403
|
+
readOnlyHint: true,
|
|
404
|
+
idempotentHint: true,
|
|
405
|
+
openWorldHint: false
|
|
406
|
+
},
|
|
246
407
|
inputSchema: {
|
|
247
408
|
type: "object",
|
|
248
409
|
properties: {
|
|
@@ -264,11 +425,39 @@ export const TOOL_DEFINITIONS = [
|
|
|
264
425
|
include_archived: { type: "boolean", default: false }
|
|
265
426
|
},
|
|
266
427
|
required: ["query", "repo"]
|
|
428
|
+
},
|
|
429
|
+
outputSchema: {
|
|
430
|
+
type: "object",
|
|
431
|
+
properties: {
|
|
432
|
+
query: { type: "string" },
|
|
433
|
+
recapContext: { type: "string" },
|
|
434
|
+
results: {
|
|
435
|
+
type: "array",
|
|
436
|
+
items: {
|
|
437
|
+
type: "object",
|
|
438
|
+
properties: {
|
|
439
|
+
id: { type: "string" },
|
|
440
|
+
type: { type: "string" },
|
|
441
|
+
title: { type: "string" },
|
|
442
|
+
content: { type: "string" },
|
|
443
|
+
importance: { type: "number" }
|
|
444
|
+
},
|
|
445
|
+
required: ["id", "type", "content", "importance"]
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
required: ["query", "results"]
|
|
267
450
|
}
|
|
268
451
|
},
|
|
269
452
|
{
|
|
270
453
|
name: "memory-summarize",
|
|
454
|
+
title: "Memory Summarize",
|
|
271
455
|
description: "Update the summary for a repository",
|
|
456
|
+
annotations: {
|
|
457
|
+
readOnlyHint: false,
|
|
458
|
+
idempotentHint: false,
|
|
459
|
+
openWorldHint: false
|
|
460
|
+
},
|
|
272
461
|
inputSchema: {
|
|
273
462
|
type: "object",
|
|
274
463
|
properties: {
|
|
@@ -281,22 +470,55 @@ export const TOOL_DEFINITIONS = [
|
|
|
281
470
|
}
|
|
282
471
|
},
|
|
283
472
|
required: ["repo", "signals"]
|
|
473
|
+
},
|
|
474
|
+
outputSchema: {
|
|
475
|
+
type: "object",
|
|
476
|
+
properties: {
|
|
477
|
+
success: { type: "boolean" },
|
|
478
|
+
repo: { type: "string" },
|
|
479
|
+
summary: { type: "string" },
|
|
480
|
+
signalCount: { type: "number" }
|
|
481
|
+
},
|
|
482
|
+
required: ["success", "repo", "summary", "signalCount"]
|
|
284
483
|
}
|
|
285
484
|
},
|
|
286
485
|
{
|
|
287
486
|
name: "memory-delete",
|
|
487
|
+
title: "Memory Delete",
|
|
288
488
|
description: "Soft-delete a memory entry (remove from active use)",
|
|
489
|
+
annotations: {
|
|
490
|
+
readOnlyHint: false,
|
|
491
|
+
idempotentHint: false,
|
|
492
|
+
destructiveHint: true,
|
|
493
|
+
openWorldHint: false
|
|
494
|
+
},
|
|
289
495
|
inputSchema: {
|
|
290
496
|
type: "object",
|
|
291
497
|
properties: {
|
|
292
498
|
id: { type: "string", format: "uuid", description: "Memory entry ID to delete" }
|
|
293
499
|
},
|
|
294
500
|
required: ["id"]
|
|
501
|
+
},
|
|
502
|
+
outputSchema: {
|
|
503
|
+
type: "object",
|
|
504
|
+
properties: {
|
|
505
|
+
success: { type: "boolean" },
|
|
506
|
+
id: { type: "string" },
|
|
507
|
+
repo: { type: "string" }
|
|
508
|
+
},
|
|
509
|
+
required: ["success", "id", "repo"]
|
|
295
510
|
}
|
|
296
511
|
},
|
|
297
512
|
{
|
|
298
513
|
name: "memory-bulk-delete",
|
|
514
|
+
title: "Memory Bulk Delete",
|
|
299
515
|
description: "Delete multiple memory entries at once.",
|
|
516
|
+
annotations: {
|
|
517
|
+
readOnlyHint: false,
|
|
518
|
+
idempotentHint: false,
|
|
519
|
+
destructiveHint: true,
|
|
520
|
+
openWorldHint: false
|
|
521
|
+
},
|
|
300
522
|
inputSchema: {
|
|
301
523
|
type: "object",
|
|
302
524
|
properties: {
|
|
@@ -304,11 +526,30 @@ export const TOOL_DEFINITIONS = [
|
|
|
304
526
|
ids: { type: "array", items: { type: "string", format: "uuid" }, minItems: 1, description: "Array of memory IDs to delete" }
|
|
305
527
|
},
|
|
306
528
|
required: ["repo", "ids"]
|
|
529
|
+
},
|
|
530
|
+
outputSchema: {
|
|
531
|
+
type: "object",
|
|
532
|
+
properties: {
|
|
533
|
+
success: { type: "boolean" },
|
|
534
|
+
repo: { type: "string" },
|
|
535
|
+
deletedCount: { type: "number" },
|
|
536
|
+
ids: {
|
|
537
|
+
type: "array",
|
|
538
|
+
items: { type: "string" }
|
|
539
|
+
}
|
|
540
|
+
},
|
|
541
|
+
required: ["success", "repo", "deletedCount", "ids"]
|
|
307
542
|
}
|
|
308
543
|
},
|
|
309
544
|
{
|
|
310
545
|
name: "memory-recap",
|
|
546
|
+
title: "Memory Recap",
|
|
311
547
|
description: "Get the last 20 memories from a repository for context",
|
|
548
|
+
annotations: {
|
|
549
|
+
readOnlyHint: true,
|
|
550
|
+
idempotentHint: true,
|
|
551
|
+
openWorldHint: false
|
|
552
|
+
},
|
|
312
553
|
inputSchema: {
|
|
313
554
|
type: "object",
|
|
314
555
|
properties: {
|
|
@@ -328,11 +569,57 @@ export const TOOL_DEFINITIONS = [
|
|
|
328
569
|
}
|
|
329
570
|
},
|
|
330
571
|
required: ["repo"]
|
|
572
|
+
},
|
|
573
|
+
outputSchema: {
|
|
574
|
+
type: "object",
|
|
575
|
+
properties: {
|
|
576
|
+
repo: { type: "string" },
|
|
577
|
+
count: { type: "number" },
|
|
578
|
+
total: { type: "number" },
|
|
579
|
+
offset: { type: "number" },
|
|
580
|
+
summary: { type: "string" },
|
|
581
|
+
memories: {
|
|
582
|
+
type: "array",
|
|
583
|
+
items: {
|
|
584
|
+
type: "object",
|
|
585
|
+
properties: {
|
|
586
|
+
number: { type: "number" },
|
|
587
|
+
id: { type: "string" },
|
|
588
|
+
type: { type: "string" },
|
|
589
|
+
importance: { type: "number" },
|
|
590
|
+
preview: { type: "string" },
|
|
591
|
+
created_at: { type: "string" }
|
|
592
|
+
},
|
|
593
|
+
required: ["number", "id", "type", "importance", "preview", "created_at"]
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
tasks: {
|
|
597
|
+
type: "array",
|
|
598
|
+
items: {
|
|
599
|
+
type: "object",
|
|
600
|
+
properties: {
|
|
601
|
+
id: { type: "string" },
|
|
602
|
+
task_code: { type: "string" },
|
|
603
|
+
title: { type: "string" },
|
|
604
|
+
status: { type: "string" },
|
|
605
|
+
priority: { type: "number" }
|
|
606
|
+
},
|
|
607
|
+
required: ["id", "task_code", "title", "status", "priority"]
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
required: ["repo", "count", "total", "offset", "memories", "tasks", "summary"]
|
|
331
612
|
}
|
|
332
613
|
},
|
|
333
614
|
{
|
|
334
615
|
name: "task-create",
|
|
616
|
+
title: "Task Create",
|
|
335
617
|
description: "Create a new task in a repository. task_code must be unique within the repository. 'est_tokens' is optional during planning/creation.",
|
|
618
|
+
annotations: {
|
|
619
|
+
readOnlyHint: false,
|
|
620
|
+
idempotentHint: false,
|
|
621
|
+
openWorldHint: false
|
|
622
|
+
},
|
|
336
623
|
inputSchema: {
|
|
337
624
|
type: "object",
|
|
338
625
|
properties: {
|
|
@@ -353,11 +640,31 @@ export const TOOL_DEFINITIONS = [
|
|
|
353
640
|
est_tokens: { type: "number", minimum: 0, description: "Estimated tokens budget for this task" }
|
|
354
641
|
},
|
|
355
642
|
required: ["repo", "task_code", "phase", "title", "description", "status"]
|
|
643
|
+
},
|
|
644
|
+
outputSchema: {
|
|
645
|
+
type: "object",
|
|
646
|
+
properties: {
|
|
647
|
+
success: { type: "boolean" },
|
|
648
|
+
id: { type: "string" },
|
|
649
|
+
repo: { type: "string" },
|
|
650
|
+
task_code: { type: "string" },
|
|
651
|
+
phase: { type: "string" },
|
|
652
|
+
title: { type: "string" },
|
|
653
|
+
status: { type: "string" },
|
|
654
|
+
priority: { type: "number" }
|
|
655
|
+
},
|
|
656
|
+
required: ["success", "id", "repo", "task_code", "phase", "title", "status", "priority"]
|
|
356
657
|
}
|
|
357
658
|
},
|
|
358
659
|
{
|
|
359
660
|
name: "task-update",
|
|
661
|
+
title: "Task Update",
|
|
360
662
|
description: "Update an existing task. Provide only the fields that need to be changed. MANDATORY WORKFLOW: You cannot move a task from 'pending' or 'blocked' directly to 'completed'. You MUST move it to 'in_progress' first. When changing status to 'completed', include 'est_tokens' with the estimated total tokens actually used for the task.",
|
|
663
|
+
annotations: {
|
|
664
|
+
readOnlyHint: false,
|
|
665
|
+
idempotentHint: false,
|
|
666
|
+
openWorldHint: false
|
|
667
|
+
},
|
|
361
668
|
inputSchema: {
|
|
362
669
|
type: "object",
|
|
363
670
|
properties: {
|
|
@@ -381,11 +688,33 @@ export const TOOL_DEFINITIONS = [
|
|
|
381
688
|
est_tokens: { type: "number", minimum: 0, description: "Estimated total tokens actually used for this task. Required when status changes to 'completed'." }
|
|
382
689
|
},
|
|
383
690
|
required: ["repo", "id"]
|
|
691
|
+
},
|
|
692
|
+
outputSchema: {
|
|
693
|
+
type: "object",
|
|
694
|
+
properties: {
|
|
695
|
+
success: { type: "boolean" },
|
|
696
|
+
id: { type: "string" },
|
|
697
|
+
repo: { type: "string" },
|
|
698
|
+
status: { type: "string" },
|
|
699
|
+
archivedToMemory: { type: "boolean" },
|
|
700
|
+
updatedFields: {
|
|
701
|
+
type: "array",
|
|
702
|
+
items: { type: "string" }
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
required: ["success", "id", "repo", "status", "archivedToMemory", "updatedFields"]
|
|
384
706
|
}
|
|
385
707
|
},
|
|
386
708
|
{
|
|
387
709
|
name: "task-delete",
|
|
710
|
+
title: "Task Delete",
|
|
388
711
|
description: "Delete a task from a repository.",
|
|
712
|
+
annotations: {
|
|
713
|
+
readOnlyHint: false,
|
|
714
|
+
idempotentHint: false,
|
|
715
|
+
destructiveHint: true,
|
|
716
|
+
openWorldHint: false
|
|
717
|
+
},
|
|
389
718
|
inputSchema: {
|
|
390
719
|
type: "object",
|
|
391
720
|
properties: {
|
|
@@ -393,11 +722,26 @@ export const TOOL_DEFINITIONS = [
|
|
|
393
722
|
id: { type: "string", format: "uuid", description: "Task ID" }
|
|
394
723
|
},
|
|
395
724
|
required: ["repo", "id"]
|
|
725
|
+
},
|
|
726
|
+
outputSchema: {
|
|
727
|
+
type: "object",
|
|
728
|
+
properties: {
|
|
729
|
+
success: { type: "boolean" },
|
|
730
|
+
id: { type: "string" },
|
|
731
|
+
repo: { type: "string" }
|
|
732
|
+
},
|
|
733
|
+
required: ["success", "id", "repo"]
|
|
396
734
|
}
|
|
397
735
|
},
|
|
398
736
|
{
|
|
399
737
|
name: "task-list",
|
|
400
|
-
|
|
738
|
+
title: "Task List",
|
|
739
|
+
description: "List or search tasks for a repository. Use 'search' to filter by code, title, or description. Use 'status' (comma-separated) to filter by status (backlog, pending, in_progress, completed, canceled, blocked). Defaults to active tasks.",
|
|
740
|
+
annotations: {
|
|
741
|
+
readOnlyHint: true,
|
|
742
|
+
idempotentHint: true,
|
|
743
|
+
openWorldHint: false
|
|
744
|
+
},
|
|
401
745
|
inputSchema: {
|
|
402
746
|
type: "object",
|
|
403
747
|
properties: {
|
|
@@ -407,13 +751,16 @@ export const TOOL_DEFINITIONS = [
|
|
|
407
751
|
},
|
|
408
752
|
status: {
|
|
409
753
|
type: "string",
|
|
410
|
-
|
|
411
|
-
description: "Filter by status"
|
|
754
|
+
description: "Filter by status (e.g. 'pending,in_progress' or 'completed'). Defaults to active tasks if omitted."
|
|
412
755
|
},
|
|
413
756
|
phase: {
|
|
414
757
|
type: "string",
|
|
415
758
|
description: "Filter by phase"
|
|
416
759
|
},
|
|
760
|
+
search: {
|
|
761
|
+
type: "string",
|
|
762
|
+
description: "Search query to filter by task code, title, or description"
|
|
763
|
+
},
|
|
417
764
|
limit: {
|
|
418
765
|
type: "number",
|
|
419
766
|
minimum: 1,
|
|
@@ -429,11 +776,113 @@ export const TOOL_DEFINITIONS = [
|
|
|
429
776
|
}
|
|
430
777
|
},
|
|
431
778
|
required: ["repo"]
|
|
779
|
+
},
|
|
780
|
+
outputSchema: {
|
|
781
|
+
type: "object",
|
|
782
|
+
properties: {
|
|
783
|
+
repo: { type: "string" },
|
|
784
|
+
count: { type: "number" },
|
|
785
|
+
offset: { type: "number" },
|
|
786
|
+
limit: { type: "number" },
|
|
787
|
+
tasks: {
|
|
788
|
+
type: "array",
|
|
789
|
+
items: {
|
|
790
|
+
type: "object",
|
|
791
|
+
properties: {
|
|
792
|
+
id: { type: "string" },
|
|
793
|
+
repo: { type: "string" },
|
|
794
|
+
task_code: { type: "string" },
|
|
795
|
+
phase: { type: "string" },
|
|
796
|
+
title: { type: "string" },
|
|
797
|
+
description: { type: "string" },
|
|
798
|
+
status: { type: "string" },
|
|
799
|
+
priority: { type: "number" }
|
|
800
|
+
},
|
|
801
|
+
required: ["id", "repo", "task_code", "phase", "title", "description", "status", "priority"]
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
required: ["repo", "count", "offset", "limit", "tasks"]
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
name: "task-search",
|
|
810
|
+
title: "Task Search",
|
|
811
|
+
description: "Search for tasks by code, title, or description across any status.",
|
|
812
|
+
annotations: {
|
|
813
|
+
readOnlyHint: true,
|
|
814
|
+
idempotentHint: true,
|
|
815
|
+
openWorldHint: false
|
|
816
|
+
},
|
|
817
|
+
inputSchema: {
|
|
818
|
+
type: "object",
|
|
819
|
+
properties: {
|
|
820
|
+
repo: {
|
|
821
|
+
type: "string",
|
|
822
|
+
description: "Repository name"
|
|
823
|
+
},
|
|
824
|
+
query: {
|
|
825
|
+
type: "string",
|
|
826
|
+
description: "Search query"
|
|
827
|
+
},
|
|
828
|
+
status: {
|
|
829
|
+
type: "string",
|
|
830
|
+
description: "Optional status filter (comma-separated). Defaults to 'all' if omitted."
|
|
831
|
+
},
|
|
832
|
+
limit: {
|
|
833
|
+
type: "number",
|
|
834
|
+
minimum: 1,
|
|
835
|
+
maximum: 100,
|
|
836
|
+
default: 15,
|
|
837
|
+
description: "Maximum number of tasks to return"
|
|
838
|
+
},
|
|
839
|
+
offset: {
|
|
840
|
+
type: "number",
|
|
841
|
+
minimum: 0,
|
|
842
|
+
default: 0,
|
|
843
|
+
description: "Offset for pagination"
|
|
844
|
+
}
|
|
845
|
+
},
|
|
846
|
+
required: ["repo", "query"]
|
|
847
|
+
},
|
|
848
|
+
outputSchema: {
|
|
849
|
+
type: "object",
|
|
850
|
+
properties: {
|
|
851
|
+
repo: { type: "string" },
|
|
852
|
+
count: { type: "number" },
|
|
853
|
+
offset: { type: "number" },
|
|
854
|
+
limit: { type: "number" },
|
|
855
|
+
tasks: {
|
|
856
|
+
type: "array",
|
|
857
|
+
items: {
|
|
858
|
+
type: "object",
|
|
859
|
+
properties: {
|
|
860
|
+
id: { type: "string" },
|
|
861
|
+
repo: { type: "string" },
|
|
862
|
+
task_code: { type: "string" },
|
|
863
|
+
phase: { type: "string" },
|
|
864
|
+
title: { type: "string" },
|
|
865
|
+
description: { type: "string" },
|
|
866
|
+
status: { type: "string" },
|
|
867
|
+
priority: { type: "number" }
|
|
868
|
+
},
|
|
869
|
+
required: ["id", "repo", "task_code", "phase", "title", "description", "status", "priority"]
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
required: ["repo", "count", "offset", "limit", "tasks"]
|
|
432
874
|
}
|
|
433
875
|
},
|
|
434
876
|
{
|
|
435
877
|
name: "task-bulk-manage",
|
|
878
|
+
title: "Task Bulk Manage",
|
|
436
879
|
description: "Perform bulk operations on tasks (e.g., bulk creation, bulk deletion). For bulk_create, 'est_tokens' is optional and can be filled later when the task is completed.",
|
|
880
|
+
annotations: {
|
|
881
|
+
readOnlyHint: false,
|
|
882
|
+
idempotentHint: false,
|
|
883
|
+
destructiveHint: false,
|
|
884
|
+
openWorldHint: false
|
|
885
|
+
},
|
|
437
886
|
inputSchema: {
|
|
438
887
|
type: "object",
|
|
439
888
|
properties: {
|
|
@@ -478,6 +927,25 @@ export const TOOL_DEFINITIONS = [
|
|
|
478
927
|
}
|
|
479
928
|
},
|
|
480
929
|
required: ["action", "repo"]
|
|
930
|
+
},
|
|
931
|
+
outputSchema: {
|
|
932
|
+
type: "object",
|
|
933
|
+
properties: {
|
|
934
|
+
success: { type: "boolean" },
|
|
935
|
+
action: { type: "string" },
|
|
936
|
+
repo: { type: "string" },
|
|
937
|
+
createdCount: { type: "number" },
|
|
938
|
+
deletedCount: { type: "number" },
|
|
939
|
+
taskCodes: {
|
|
940
|
+
type: "array",
|
|
941
|
+
items: { type: "string" }
|
|
942
|
+
},
|
|
943
|
+
ids: {
|
|
944
|
+
type: "array",
|
|
945
|
+
items: { type: "string" }
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
required: ["success", "action", "repo"]
|
|
481
949
|
}
|
|
482
950
|
}
|
|
483
951
|
];
|