nightshift-mcp 1.0.0
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/README.md +670 -0
- package/dist/agent-spawner.d.ts +55 -0
- package/dist/agent-spawner.d.ts.map +1 -0
- package/dist/agent-spawner.js +468 -0
- package/dist/agent-spawner.js.map +1 -0
- package/dist/chat-manager.d.ts +72 -0
- package/dist/chat-manager.d.ts.map +1 -0
- package/dist/chat-manager.js +331 -0
- package/dist/chat-manager.js.map +1 -0
- package/dist/daemon.d.ts +65 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +563 -0
- package/dist/daemon.js.map +1 -0
- package/dist/file-lock.d.ts +41 -0
- package/dist/file-lock.d.ts.map +1 -0
- package/dist/file-lock.js +157 -0
- package/dist/file-lock.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2433 -0
- package/dist/index.js.map +1 -0
- package/dist/ralph-manager.d.ts +148 -0
- package/dist/ralph-manager.d.ts.map +1 -0
- package/dist/ralph-manager.js +399 -0
- package/dist/ralph-manager.js.map +1 -0
- package/dist/tool-registry.d.ts +130 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +280 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/agents.d.ts +7 -0
- package/dist/tools/agents.d.ts.map +1 -0
- package/dist/tools/agents.js +366 -0
- package/dist/tools/agents.js.map +1 -0
- package/dist/tools/bugs.d.ts +6 -0
- package/dist/tools/bugs.d.ts.map +1 -0
- package/dist/tools/bugs.js +184 -0
- package/dist/tools/bugs.js.map +1 -0
- package/dist/tools/chat.d.ts +10 -0
- package/dist/tools/chat.d.ts.map +1 -0
- package/dist/tools/chat.js +287 -0
- package/dist/tools/chat.js.map +1 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +51 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/prd.d.ts +8 -0
- package/dist/tools/prd.d.ts.map +1 -0
- package/dist/tools/prd.js +275 -0
- package/dist/tools/prd.js.map +1 -0
- package/dist/tools/progress.d.ts +5 -0
- package/dist/tools/progress.d.ts.map +1 -0
- package/dist/tools/progress.js +81 -0
- package/dist/tools/progress.js.map +1 -0
- package/dist/tools/savepoints.d.ts +5 -0
- package/dist/tools/savepoints.d.ts.map +1 -0
- package/dist/tools/savepoints.js +100 -0
- package/dist/tools/savepoints.js.map +1 -0
- package/dist/tools/utility.d.ts +4 -0
- package/dist/tools/utility.d.ts.map +1 -0
- package/dist/tools/utility.js +375 -0
- package/dist/tools/utility.js.map +1 -0
- package/dist/tools/workflow.d.ts +10 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +321 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/types.d.ts +105 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workflow-manager.d.ts +154 -0
- package/dist/workflow-manager.d.ts.map +1 -0
- package/dist/workflow-manager.js +356 -0
- package/dist/workflow-manager.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { execSync } from "child_process";
|
|
4
|
+
/**
|
|
5
|
+
* Manages Ralph-style PRD and progress file operations
|
|
6
|
+
*/
|
|
7
|
+
export class RalphManager {
|
|
8
|
+
projectPath;
|
|
9
|
+
prdFile;
|
|
10
|
+
progressFile;
|
|
11
|
+
bugsFile;
|
|
12
|
+
constructor(projectPath) {
|
|
13
|
+
this.projectPath = projectPath;
|
|
14
|
+
this.prdFile = path.join(projectPath, "prd.json");
|
|
15
|
+
this.progressFile = path.join(projectPath, "progress.txt");
|
|
16
|
+
this.bugsFile = path.join(projectPath, "bugs.json");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check if a PRD file exists
|
|
20
|
+
*/
|
|
21
|
+
hasPRD() {
|
|
22
|
+
return fs.existsSync(this.prdFile);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read and parse the PRD file
|
|
26
|
+
*/
|
|
27
|
+
readPRD() {
|
|
28
|
+
if (!this.hasPRD()) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const content = fs.readFileSync(this.prdFile, "utf-8");
|
|
33
|
+
return JSON.parse(content);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new Error(`Failed to parse PRD: ${error instanceof Error ? error.message : String(error)}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Write the PRD file
|
|
41
|
+
*/
|
|
42
|
+
writePRD(prd) {
|
|
43
|
+
fs.writeFileSync(this.prdFile, JSON.stringify(prd, null, 2), "utf-8");
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the next story to work on (highest priority with passes: false)
|
|
47
|
+
*/
|
|
48
|
+
getNextStory() {
|
|
49
|
+
const prd = this.readPRD();
|
|
50
|
+
if (!prd)
|
|
51
|
+
return null;
|
|
52
|
+
const incompleteStories = prd.userStories
|
|
53
|
+
.filter((s) => !s.passes)
|
|
54
|
+
.sort((a, b) => a.priority - b.priority);
|
|
55
|
+
return incompleteStories[0] || null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a specific story by ID
|
|
59
|
+
*/
|
|
60
|
+
getStory(storyId) {
|
|
61
|
+
const prd = this.readPRD();
|
|
62
|
+
if (!prd)
|
|
63
|
+
return null;
|
|
64
|
+
return prd.userStories.find((s) => s.id === storyId) || null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get all incomplete stories
|
|
68
|
+
*/
|
|
69
|
+
getIncompleteStories() {
|
|
70
|
+
const prd = this.readPRD();
|
|
71
|
+
if (!prd)
|
|
72
|
+
return [];
|
|
73
|
+
return prd.userStories
|
|
74
|
+
.filter((s) => !s.passes)
|
|
75
|
+
.sort((a, b) => a.priority - b.priority);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all complete stories
|
|
79
|
+
*/
|
|
80
|
+
getCompleteStories() {
|
|
81
|
+
const prd = this.readPRD();
|
|
82
|
+
if (!prd)
|
|
83
|
+
return [];
|
|
84
|
+
return prd.userStories.filter((s) => s.passes);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Mark a story as complete (passes: true)
|
|
88
|
+
*/
|
|
89
|
+
markStoryComplete(storyId, notes) {
|
|
90
|
+
const prd = this.readPRD();
|
|
91
|
+
if (!prd)
|
|
92
|
+
return null;
|
|
93
|
+
const story = prd.userStories.find((s) => s.id === storyId);
|
|
94
|
+
if (!story)
|
|
95
|
+
return null;
|
|
96
|
+
story.passes = true;
|
|
97
|
+
if (notes) {
|
|
98
|
+
story.notes = notes;
|
|
99
|
+
}
|
|
100
|
+
this.writePRD(prd);
|
|
101
|
+
return story;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Update a story's notes
|
|
105
|
+
*/
|
|
106
|
+
updateStoryNotes(storyId, notes) {
|
|
107
|
+
const prd = this.readPRD();
|
|
108
|
+
if (!prd)
|
|
109
|
+
return null;
|
|
110
|
+
const story = prd.userStories.find((s) => s.id === storyId);
|
|
111
|
+
if (!story)
|
|
112
|
+
return null;
|
|
113
|
+
story.notes = notes;
|
|
114
|
+
this.writePRD(prd);
|
|
115
|
+
return story;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check if all stories are complete
|
|
119
|
+
*/
|
|
120
|
+
isAllComplete() {
|
|
121
|
+
const prd = this.readPRD();
|
|
122
|
+
if (!prd)
|
|
123
|
+
return false;
|
|
124
|
+
return prd.userStories.every((s) => s.passes);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get completion summary
|
|
128
|
+
*/
|
|
129
|
+
getCompletionSummary() {
|
|
130
|
+
const prd = this.readPRD();
|
|
131
|
+
if (!prd) {
|
|
132
|
+
return { total: 0, complete: 0, incomplete: 0, percentComplete: 0 };
|
|
133
|
+
}
|
|
134
|
+
const total = prd.userStories.length;
|
|
135
|
+
const complete = prd.userStories.filter((s) => s.passes).length;
|
|
136
|
+
const incomplete = total - complete;
|
|
137
|
+
const percentComplete = total > 0 ? Math.round((complete / total) * 100) : 0;
|
|
138
|
+
return { total, complete, incomplete, percentComplete };
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if progress file exists
|
|
142
|
+
*/
|
|
143
|
+
hasProgressFile() {
|
|
144
|
+
return fs.existsSync(this.progressFile);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Read the progress file
|
|
148
|
+
*/
|
|
149
|
+
readProgress() {
|
|
150
|
+
if (!this.hasProgressFile()) {
|
|
151
|
+
return "";
|
|
152
|
+
}
|
|
153
|
+
return fs.readFileSync(this.progressFile, "utf-8");
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Initialize the progress file
|
|
157
|
+
*/
|
|
158
|
+
initProgressFile() {
|
|
159
|
+
if (this.hasProgressFile())
|
|
160
|
+
return;
|
|
161
|
+
const header = `# Ralph Progress Log
|
|
162
|
+
Started: ${new Date().toISOString()}
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Codebase Patterns
|
|
166
|
+
(Add reusable patterns discovered during development here)
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
`;
|
|
171
|
+
fs.writeFileSync(this.progressFile, header, "utf-8");
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Append to the progress file
|
|
175
|
+
*/
|
|
176
|
+
appendProgress(content) {
|
|
177
|
+
this.initProgressFile();
|
|
178
|
+
const timestamp = new Date().toISOString();
|
|
179
|
+
const entry = `\n## ${timestamp}\n${content}\n---\n`;
|
|
180
|
+
fs.appendFileSync(this.progressFile, entry, "utf-8");
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Add a codebase pattern to the progress file
|
|
184
|
+
*/
|
|
185
|
+
addCodebasePattern(pattern) {
|
|
186
|
+
if (!this.hasProgressFile()) {
|
|
187
|
+
this.initProgressFile();
|
|
188
|
+
}
|
|
189
|
+
const content = this.readProgress();
|
|
190
|
+
const patternSection = "## Codebase Patterns";
|
|
191
|
+
const idx = content.indexOf(patternSection);
|
|
192
|
+
if (idx === -1) {
|
|
193
|
+
// Pattern section doesn't exist, add it
|
|
194
|
+
this.initProgressFile();
|
|
195
|
+
return this.addCodebasePattern(pattern);
|
|
196
|
+
}
|
|
197
|
+
// Find the end of the patterns section (next ## or ---)
|
|
198
|
+
const afterSection = content.substring(idx + patternSection.length);
|
|
199
|
+
const endIdx = afterSection.search(/\n## |\n---/);
|
|
200
|
+
const patternsContent = endIdx === -1 ? afterSection : afterSection.substring(0, endIdx);
|
|
201
|
+
// Add new pattern
|
|
202
|
+
const newPattern = `- ${pattern}\n`;
|
|
203
|
+
const updatedContent = content.substring(0, idx + patternSection.length) +
|
|
204
|
+
patternsContent.trimEnd() +
|
|
205
|
+
"\n" +
|
|
206
|
+
newPattern +
|
|
207
|
+
(endIdx === -1 ? "" : afterSection.substring(endIdx));
|
|
208
|
+
fs.writeFileSync(this.progressFile, updatedContent, "utf-8");
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get file paths
|
|
212
|
+
*/
|
|
213
|
+
getPRDPath() {
|
|
214
|
+
return this.prdFile;
|
|
215
|
+
}
|
|
216
|
+
getProgressPath() {
|
|
217
|
+
return this.progressFile;
|
|
218
|
+
}
|
|
219
|
+
// ============================================
|
|
220
|
+
// Bugs Management
|
|
221
|
+
// ============================================
|
|
222
|
+
/**
|
|
223
|
+
* Check if a bugs file exists
|
|
224
|
+
*/
|
|
225
|
+
hasBugs() {
|
|
226
|
+
return fs.existsSync(this.bugsFile);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Read and parse the bugs file
|
|
230
|
+
*/
|
|
231
|
+
readBugs() {
|
|
232
|
+
if (!this.hasBugs()) {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
const content = fs.readFileSync(this.bugsFile, "utf-8");
|
|
237
|
+
return JSON.parse(content);
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw new Error(`Failed to parse bugs.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Write the bugs file
|
|
245
|
+
*/
|
|
246
|
+
writeBugs(bugList) {
|
|
247
|
+
fs.writeFileSync(this.bugsFile, JSON.stringify(bugList, null, 2), "utf-8");
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get the next bug to fix (highest priority unfixed)
|
|
251
|
+
*/
|
|
252
|
+
getNextBug() {
|
|
253
|
+
const bugList = this.readBugs();
|
|
254
|
+
if (!bugList)
|
|
255
|
+
return null;
|
|
256
|
+
const unfixed = bugList.bugs
|
|
257
|
+
.filter((b) => !b.fixed)
|
|
258
|
+
.sort((a, b) => a.priority - b.priority);
|
|
259
|
+
return unfixed[0] || null;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get a specific bug by ID
|
|
263
|
+
*/
|
|
264
|
+
getBug(bugId) {
|
|
265
|
+
const bugList = this.readBugs();
|
|
266
|
+
if (!bugList)
|
|
267
|
+
return null;
|
|
268
|
+
return bugList.bugs.find((b) => b.id === bugId) || null;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Get all unfixed bugs
|
|
272
|
+
*/
|
|
273
|
+
getUnfixedBugs() {
|
|
274
|
+
const bugList = this.readBugs();
|
|
275
|
+
if (!bugList)
|
|
276
|
+
return [];
|
|
277
|
+
return bugList.bugs
|
|
278
|
+
.filter((b) => !b.fixed)
|
|
279
|
+
.sort((a, b) => a.priority - b.priority);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Mark a bug as fixed
|
|
283
|
+
*/
|
|
284
|
+
markBugFixed(bugId, notes) {
|
|
285
|
+
const bugList = this.readBugs();
|
|
286
|
+
if (!bugList)
|
|
287
|
+
return null;
|
|
288
|
+
const bug = bugList.bugs.find((b) => b.id === bugId);
|
|
289
|
+
if (!bug)
|
|
290
|
+
return null;
|
|
291
|
+
bug.fixed = true;
|
|
292
|
+
if (notes) {
|
|
293
|
+
bug.notes = notes;
|
|
294
|
+
}
|
|
295
|
+
this.writeBugs(bugList);
|
|
296
|
+
return bug;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get bugs completion summary
|
|
300
|
+
*/
|
|
301
|
+
getBugsSummary() {
|
|
302
|
+
const bugList = this.readBugs();
|
|
303
|
+
if (!bugList) {
|
|
304
|
+
return { total: 0, fixed: 0, unfixed: 0, percentFixed: 0 };
|
|
305
|
+
}
|
|
306
|
+
const total = bugList.bugs.length;
|
|
307
|
+
const fixed = bugList.bugs.filter((b) => b.fixed).length;
|
|
308
|
+
const unfixed = total - fixed;
|
|
309
|
+
const percentFixed = total > 0 ? Math.round((fixed / total) * 100) : 0;
|
|
310
|
+
return { total, fixed, unfixed, percentFixed };
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Check if all work is complete (stories + bugs)
|
|
314
|
+
*/
|
|
315
|
+
isAllWorkComplete() {
|
|
316
|
+
const storiesComplete = this.isAllComplete();
|
|
317
|
+
const bugsSummary = this.getBugsSummary();
|
|
318
|
+
const bugsComplete = bugsSummary.total === 0 || bugsSummary.unfixed === 0;
|
|
319
|
+
return storiesComplete && bugsComplete;
|
|
320
|
+
}
|
|
321
|
+
getBugsPath() {
|
|
322
|
+
return this.bugsFile;
|
|
323
|
+
}
|
|
324
|
+
// ============================================
|
|
325
|
+
// Savepoints
|
|
326
|
+
// ============================================
|
|
327
|
+
/**
|
|
328
|
+
* Create a savepoint (git commit + tag)
|
|
329
|
+
* Returns the tag name if successful, null if failed
|
|
330
|
+
*/
|
|
331
|
+
createSavepoint(label, message) {
|
|
332
|
+
const tag = `savepoint/${label}`;
|
|
333
|
+
const commitMessage = message || `savepoint: ${label}`;
|
|
334
|
+
try {
|
|
335
|
+
// Check if we're in a git repo
|
|
336
|
+
execSync("git rev-parse --git-dir", {
|
|
337
|
+
cwd: this.projectPath,
|
|
338
|
+
stdio: "pipe",
|
|
339
|
+
});
|
|
340
|
+
// Check if there are changes to commit
|
|
341
|
+
const status = execSync("git status --porcelain", {
|
|
342
|
+
cwd: this.projectPath,
|
|
343
|
+
encoding: "utf-8",
|
|
344
|
+
}).trim();
|
|
345
|
+
if (status) {
|
|
346
|
+
// Stage all changes and commit
|
|
347
|
+
execSync("git add -A", { cwd: this.projectPath, stdio: "pipe" });
|
|
348
|
+
execSync(`git commit -m "${commitMessage}"`, {
|
|
349
|
+
cwd: this.projectPath,
|
|
350
|
+
stdio: "pipe",
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
// Create the tag (force to overwrite if exists)
|
|
354
|
+
execSync(`git tag -f ${tag}`, { cwd: this.projectPath, stdio: "pipe" });
|
|
355
|
+
return { success: true, tag };
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
358
|
+
return {
|
|
359
|
+
success: false,
|
|
360
|
+
error: error instanceof Error ? error.message : String(error),
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* List all savepoints
|
|
366
|
+
*/
|
|
367
|
+
listSavepoints() {
|
|
368
|
+
try {
|
|
369
|
+
const output = execSync("git tag -l 'savepoint/*'", {
|
|
370
|
+
cwd: this.projectPath,
|
|
371
|
+
encoding: "utf-8",
|
|
372
|
+
});
|
|
373
|
+
return output.trim().split("\n").filter(Boolean);
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return [];
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Rollback to a savepoint
|
|
381
|
+
*/
|
|
382
|
+
rollbackToSavepoint(tag) {
|
|
383
|
+
try {
|
|
384
|
+
const fullTag = tag.startsWith("savepoint/") ? tag : `savepoint/${tag}`;
|
|
385
|
+
execSync(`git reset --hard ${fullTag}`, {
|
|
386
|
+
cwd: this.projectPath,
|
|
387
|
+
stdio: "pipe",
|
|
388
|
+
});
|
|
389
|
+
return { success: true };
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
return {
|
|
393
|
+
success: false,
|
|
394
|
+
error: error instanceof Error ? error.message : String(error),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
//# sourceMappingURL=ralph-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ralph-manager.js","sourceRoot":"","sources":["../src/ralph-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { z, type ZodObject, type ZodRawShape } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Context passed to tool handlers
|
|
4
|
+
*/
|
|
5
|
+
export interface ToolContext {
|
|
6
|
+
chatManager: any;
|
|
7
|
+
ralphManager: any;
|
|
8
|
+
workflowManager: any;
|
|
9
|
+
projectPath: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Result returned by tool handlers
|
|
13
|
+
*/
|
|
14
|
+
export interface ToolResult {
|
|
15
|
+
content: Array<{
|
|
16
|
+
type: "text";
|
|
17
|
+
text: string;
|
|
18
|
+
}>;
|
|
19
|
+
isError?: boolean;
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Summary of a tool for help/listing
|
|
24
|
+
*/
|
|
25
|
+
export interface ToolSummary {
|
|
26
|
+
name: string;
|
|
27
|
+
category: string;
|
|
28
|
+
description: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Full tool definition including schema and handler
|
|
32
|
+
* Uses 'any' for handler params to allow variance in tool definitions
|
|
33
|
+
*/
|
|
34
|
+
export interface ToolDefinition {
|
|
35
|
+
name: string;
|
|
36
|
+
category: string;
|
|
37
|
+
description: string;
|
|
38
|
+
fullDescription: string;
|
|
39
|
+
inputSchema: ZodObject<any>;
|
|
40
|
+
handler: (params: any, context: ToolContext) => Promise<ToolResult>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Detailed schema info for help output
|
|
44
|
+
*/
|
|
45
|
+
export interface SchemaInfo {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
fullDescription: string;
|
|
49
|
+
category: string;
|
|
50
|
+
parameters: Record<string, {
|
|
51
|
+
type: string;
|
|
52
|
+
description: string;
|
|
53
|
+
required: boolean;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Tool categories for organization
|
|
58
|
+
*/
|
|
59
|
+
export declare const TOOL_CATEGORIES: readonly ["chat", "prd", "workflow", "agents", "progress", "bugs", "savepoints", "utility"];
|
|
60
|
+
export type ToolCategory = typeof TOOL_CATEGORIES[number];
|
|
61
|
+
/**
|
|
62
|
+
* Registry for managing tool definitions
|
|
63
|
+
* Provides lazy loading of schemas and centralized execution
|
|
64
|
+
*/
|
|
65
|
+
export declare class ToolRegistry {
|
|
66
|
+
private tools;
|
|
67
|
+
private categoryIndex;
|
|
68
|
+
constructor();
|
|
69
|
+
/**
|
|
70
|
+
* Register a tool definition
|
|
71
|
+
*/
|
|
72
|
+
register(tool: ToolDefinition): void;
|
|
73
|
+
/**
|
|
74
|
+
* Register multiple tools at once
|
|
75
|
+
*/
|
|
76
|
+
registerAll(tools: ToolDefinition[]): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get all registered tool names
|
|
79
|
+
*/
|
|
80
|
+
getToolNames(): string[];
|
|
81
|
+
/**
|
|
82
|
+
* Get all categories
|
|
83
|
+
*/
|
|
84
|
+
getCategories(): ToolCategory[];
|
|
85
|
+
/**
|
|
86
|
+
* Get tool count
|
|
87
|
+
*/
|
|
88
|
+
getToolCount(): number;
|
|
89
|
+
/**
|
|
90
|
+
* Check if a tool exists
|
|
91
|
+
*/
|
|
92
|
+
has(name: string): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Get a tool definition by name
|
|
95
|
+
*/
|
|
96
|
+
get(name: string): ToolDefinition | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* List tools with brief summaries, optionally filtered by category
|
|
99
|
+
*/
|
|
100
|
+
listTools(category?: string): ToolSummary[];
|
|
101
|
+
/**
|
|
102
|
+
* Get detailed schema information for a tool
|
|
103
|
+
*/
|
|
104
|
+
getSchema(toolName: string): SchemaInfo | null;
|
|
105
|
+
/**
|
|
106
|
+
* Get a human-readable type name from a Zod schema
|
|
107
|
+
*/
|
|
108
|
+
private getZodTypeName;
|
|
109
|
+
/**
|
|
110
|
+
* Execute a tool by name with the given parameters
|
|
111
|
+
*/
|
|
112
|
+
execute(toolName: string, params: Record<string, unknown>, context: ToolContext): Promise<ToolResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Generate help text for all tools or a specific tool
|
|
115
|
+
*/
|
|
116
|
+
generateHelp(action?: string, category?: string): string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Helper to create a tool definition with proper typing
|
|
120
|
+
*/
|
|
121
|
+
export declare function defineTool<T extends ZodRawShape>(config: {
|
|
122
|
+
name: string;
|
|
123
|
+
category: ToolCategory;
|
|
124
|
+
description: string;
|
|
125
|
+
fullDescription: string;
|
|
126
|
+
inputSchema: ZodObject<T>;
|
|
127
|
+
handler: (params: z.infer<ZodObject<T>>, context: ToolContext) => Promise<ToolResult>;
|
|
128
|
+
}): ToolDefinition;
|
|
129
|
+
export declare const toolRegistry: ToolRegistry;
|
|
130
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"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"}
|