@nihalcastelino/project-brain-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.
@@ -0,0 +1,525 @@
1
+ // AI-Friendly Formatter - Formats data for handoff to any AI agent
2
+ // Supports multiple formats: markdown, plain text, chat format, JSON
3
+ export class MarkdownFormatter {
4
+ formatTaskContext(context) {
5
+ const parts = [];
6
+ if (context.task) {
7
+ parts.push(`# Task: ${context.task.title || "Untitled"}`);
8
+ parts.push("");
9
+ if (context.task.description) {
10
+ parts.push(`**Description:** ${context.task.description}`);
11
+ parts.push("");
12
+ }
13
+ parts.push(`**Status:** ${context.task.status || "todo"}`);
14
+ parts.push(`**Type:** ${context.task.type || "feature"}`);
15
+ if (context.task.createdAt) {
16
+ parts.push(`**Created:** ${new Date(context.task.createdAt).toLocaleString()}`);
17
+ }
18
+ parts.push("");
19
+ }
20
+ if (context.openDecisions && context.openDecisions.length > 0) {
21
+ parts.push("## Open Decisions");
22
+ parts.push("");
23
+ context.openDecisions.forEach((d, i) => {
24
+ parts.push(`### ${i + 1}. ${d.question}`);
25
+ if (d.options && d.options.length > 0) {
26
+ parts.push(`**Options:**`);
27
+ d.options.forEach((opt) => {
28
+ parts.push(`- ${opt}`);
29
+ });
30
+ }
31
+ if (d.createdAt) {
32
+ parts.push(`*Created: ${new Date(d.createdAt).toLocaleString()}*`);
33
+ }
34
+ parts.push("");
35
+ });
36
+ }
37
+ if (context.allDecisions && context.allDecisions.length > 0) {
38
+ const answered = context.allDecisions.filter((d) => d.status === "answered");
39
+ if (answered.length > 0) {
40
+ parts.push("## Answered Decisions");
41
+ parts.push("");
42
+ answered.forEach((d, i) => {
43
+ parts.push(`### ${i + 1}. ${d.question}`);
44
+ if (d.selectedOption) {
45
+ parts.push(`**Selected:** ${d.selectedOption}`);
46
+ }
47
+ else if (d.selectedText) {
48
+ parts.push(`**Answer:** ${d.selectedText}`);
49
+ }
50
+ if (d.rationale) {
51
+ parts.push(`**Rationale:** ${d.rationale}`);
52
+ }
53
+ if (d.responder) {
54
+ parts.push(`**Responder:** ${d.responder}`);
55
+ }
56
+ parts.push("");
57
+ });
58
+ }
59
+ }
60
+ if (context.recentConversations && context.recentConversations.length > 0) {
61
+ parts.push("## Recent Conversations");
62
+ parts.push("");
63
+ context.recentConversations.forEach((conv, i) => {
64
+ parts.push(`### ${i + 1}. ${conv.title || "Untitled Conversation"}`);
65
+ if (conv.agentId) {
66
+ parts.push(`**Agent:** ${conv.agentId}`);
67
+ }
68
+ if (conv.updatedAt) {
69
+ parts.push(`**Last Updated:** ${new Date(conv.updatedAt).toLocaleString()}`);
70
+ }
71
+ parts.push("");
72
+ });
73
+ }
74
+ return parts.join("\n");
75
+ }
76
+ formatConversation(conversation, messages) {
77
+ const parts = [];
78
+ parts.push(`# Conversation: ${conversation.title || "Untitled"}`);
79
+ parts.push("");
80
+ if (conversation.taskId) {
81
+ parts.push(`**Task ID:** ${conversation.taskId}`);
82
+ }
83
+ if (conversation.agentId) {
84
+ parts.push(`**Agent:** ${conversation.agentId}`);
85
+ }
86
+ if (conversation.createdAt) {
87
+ parts.push(`**Created:** ${new Date(conversation.createdAt).toLocaleString()}`);
88
+ }
89
+ parts.push("");
90
+ parts.push("---");
91
+ parts.push("");
92
+ messages.forEach((msg) => {
93
+ const role = msg.role || "user";
94
+ const roleLabel = role === "assistant" ? "AI" : role === "system" ? "System" : "User";
95
+ const timestamp = msg.createdAt
96
+ ? ` (${new Date(msg.createdAt).toLocaleString()})`
97
+ : "";
98
+ parts.push(`## ${roleLabel}${timestamp}`);
99
+ parts.push("");
100
+ parts.push(msg.content || "");
101
+ parts.push("");
102
+ if (msg.metadata && Object.keys(msg.metadata).length > 0) {
103
+ parts.push(`*Metadata: ${JSON.stringify(msg.metadata)}*`);
104
+ parts.push("");
105
+ }
106
+ });
107
+ return parts.join("\n");
108
+ }
109
+ formatTask(task, conversations, decisions) {
110
+ const parts = [];
111
+ parts.push(`# Task: ${task.title || "Untitled"}`);
112
+ parts.push("");
113
+ parts.push(`**ID:** ${task.id}`);
114
+ parts.push(`**Status:** ${task.status || "todo"}`);
115
+ parts.push(`**Type:** ${task.type || "feature"}`);
116
+ if (task.description) {
117
+ parts.push("");
118
+ parts.push("## Description");
119
+ parts.push("");
120
+ parts.push(task.description);
121
+ parts.push("");
122
+ }
123
+ if (task.notes) {
124
+ parts.push("## Notes");
125
+ parts.push("");
126
+ parts.push(task.notes);
127
+ parts.push("");
128
+ }
129
+ if (task.createdAt) {
130
+ parts.push(`**Created:** ${new Date(task.createdAt).toLocaleString()}`);
131
+ }
132
+ if (task.updatedAt) {
133
+ parts.push(`**Updated:** ${new Date(task.updatedAt).toLocaleString()}`);
134
+ }
135
+ parts.push("");
136
+ if (decisions && decisions.length > 0) {
137
+ parts.push("## Decisions");
138
+ parts.push("");
139
+ decisions.forEach((d) => {
140
+ parts.push(`### ${d.question}`);
141
+ parts.push(`**Status:** ${d.status}`);
142
+ if (d.status === "answered") {
143
+ if (d.selectedOption) {
144
+ parts.push(`**Selected:** ${d.selectedOption}`);
145
+ }
146
+ else if (d.selectedText) {
147
+ parts.push(`**Answer:** ${d.selectedText}`);
148
+ }
149
+ if (d.rationale) {
150
+ parts.push(`**Rationale:** ${d.rationale}`);
151
+ }
152
+ if (d.responder) {
153
+ parts.push(`**Responder:** ${d.responder}`);
154
+ }
155
+ }
156
+ else {
157
+ if (d.options && d.options.length > 0) {
158
+ parts.push(`**Options:**`);
159
+ d.options.forEach((opt) => {
160
+ parts.push(`- ${opt}`);
161
+ });
162
+ }
163
+ }
164
+ parts.push("");
165
+ });
166
+ }
167
+ if (conversations && conversations.length > 0) {
168
+ parts.push("## Related Conversations");
169
+ parts.push("");
170
+ conversations.forEach((conv) => {
171
+ parts.push(`- **${conv.title || "Untitled"}** (${conv.agentId || "unknown agent"})`);
172
+ if (conv.updatedAt) {
173
+ parts.push(` *Last updated: ${new Date(conv.updatedAt).toLocaleString()}*`);
174
+ }
175
+ });
176
+ parts.push("");
177
+ }
178
+ return parts.join("\n");
179
+ }
180
+ formatProject(project, tasks, conversations) {
181
+ const parts = [];
182
+ parts.push(`# Project: ${project.name || "Untitled"}`);
183
+ parts.push("");
184
+ if (project.description) {
185
+ parts.push(project.description);
186
+ parts.push("");
187
+ }
188
+ parts.push(`**ID:** ${project.id}`);
189
+ if (project.createdAt) {
190
+ parts.push(`**Created:** ${new Date(project.createdAt).toLocaleString()}`);
191
+ }
192
+ parts.push("");
193
+ if (tasks && tasks.length > 0) {
194
+ parts.push("## Tasks");
195
+ parts.push("");
196
+ const byStatus = {};
197
+ tasks.forEach((task) => {
198
+ const status = task.status || "todo";
199
+ if (!byStatus[status])
200
+ byStatus[status] = [];
201
+ byStatus[status].push(task);
202
+ });
203
+ Object.entries(byStatus).forEach(([status, statusTasks]) => {
204
+ parts.push(`### ${status.charAt(0).toUpperCase() + status.slice(1)} (${statusTasks.length})`);
205
+ statusTasks.forEach((task) => {
206
+ parts.push(`- **${task.title}** (${task.type || "feature"})`);
207
+ if (task.description) {
208
+ parts.push(` ${task.description.substring(0, 100)}${task.description.length > 100 ? "..." : ""}`);
209
+ }
210
+ });
211
+ parts.push("");
212
+ });
213
+ }
214
+ if (conversations && conversations.length > 0) {
215
+ parts.push("## Conversations");
216
+ parts.push("");
217
+ parts.push(`Total: ${conversations.length} conversations`);
218
+ parts.push("");
219
+ }
220
+ return parts.join("\n");
221
+ }
222
+ formatDecisions(decisions) {
223
+ const parts = [];
224
+ parts.push("# Decisions");
225
+ parts.push("");
226
+ const open = decisions.filter((d) => d.status === "open");
227
+ const answered = decisions.filter((d) => d.status === "answered");
228
+ if (open.length > 0) {
229
+ parts.push("## Open Decisions");
230
+ parts.push("");
231
+ open.forEach((d, i) => {
232
+ parts.push(`### ${i + 1}. ${d.question}`);
233
+ if (d.options && d.options.length > 0) {
234
+ parts.push(`**Options:**`);
235
+ d.options.forEach((opt) => {
236
+ parts.push(`- ${opt}`);
237
+ });
238
+ }
239
+ if (d.createdAt) {
240
+ parts.push(`*Created: ${new Date(d.createdAt).toLocaleString()}*`);
241
+ }
242
+ parts.push("");
243
+ });
244
+ }
245
+ if (answered.length > 0) {
246
+ parts.push("## Answered Decisions");
247
+ parts.push("");
248
+ answered.forEach((d, i) => {
249
+ parts.push(`### ${i + 1}. ${d.question}`);
250
+ if (d.selectedOption) {
251
+ parts.push(`**Selected:** ${d.selectedOption}`);
252
+ }
253
+ else if (d.selectedText) {
254
+ parts.push(`**Answer:** ${d.selectedText}`);
255
+ }
256
+ if (d.rationale) {
257
+ parts.push(`**Rationale:** ${d.rationale}`);
258
+ }
259
+ if (d.responder) {
260
+ parts.push(`**Responder:** ${d.responder}`);
261
+ }
262
+ if (d.answeredAt) {
263
+ parts.push(`*Answered: ${new Date(d.answeredAt).toLocaleString()}*`);
264
+ }
265
+ parts.push("");
266
+ });
267
+ }
268
+ return parts.join("\n");
269
+ }
270
+ formatHeading(text, level) {
271
+ const hashes = '#'.repeat(Math.min(level, 6));
272
+ return `${hashes} ${text}\n\n`;
273
+ }
274
+ formatMetadata(metadata) {
275
+ const parts = [];
276
+ for (const [key, value] of Object.entries(metadata)) {
277
+ parts.push(`**${key}:** ${value}`);
278
+ }
279
+ return parts.join('\n') + '\n\n';
280
+ }
281
+ }
282
+ export class ChatFormatter {
283
+ // Format conversation in chat format (like ChatGPT/Claude)
284
+ formatConversation(conversation, messages) {
285
+ const parts = [];
286
+ parts.push(`Conversation: ${conversation.title || "Untitled"}`);
287
+ if (conversation.taskId) {
288
+ parts.push(`Task: ${conversation.taskId}`);
289
+ }
290
+ parts.push("=".repeat(60));
291
+ parts.push("");
292
+ messages.forEach((msg) => {
293
+ const role = msg.role || "user";
294
+ const roleLabel = role === "assistant" ? "Assistant" : role === "system" ? "System" : "User";
295
+ parts.push(`${roleLabel}:`);
296
+ parts.push(msg.content || "");
297
+ parts.push("");
298
+ });
299
+ return parts.join("\n");
300
+ }
301
+ formatTaskContext(context) {
302
+ return new MarkdownFormatter().formatTaskContext(context);
303
+ }
304
+ formatTask(task, conversations, decisions) {
305
+ return new MarkdownFormatter().formatTask(task, conversations, decisions);
306
+ }
307
+ formatProject(project, tasks, conversations) {
308
+ return new MarkdownFormatter().formatProject(project, tasks, conversations);
309
+ }
310
+ formatDecisions(decisions) {
311
+ return new MarkdownFormatter().formatDecisions(decisions);
312
+ }
313
+ formatHeading(text, level) {
314
+ return `${text}\n${'='.repeat(text.length)}\n\n`;
315
+ }
316
+ formatMetadata(metadata) {
317
+ const parts = [];
318
+ for (const [key, value] of Object.entries(metadata)) {
319
+ parts.push(`${key}: ${value}`);
320
+ }
321
+ return parts.join('\n') + '\n\n';
322
+ }
323
+ }
324
+ export class PlainTextFormatter {
325
+ // Minimal formatting, just text
326
+ formatTaskContext(context) {
327
+ const parts = [];
328
+ if (context.task) {
329
+ parts.push(`TASK: ${context.task.title || "Untitled"}`);
330
+ if (context.task.description) {
331
+ parts.push(`DESCRIPTION: ${context.task.description}`);
332
+ }
333
+ parts.push(`STATUS: ${context.task.status || "todo"}`);
334
+ if (context.task.priority) {
335
+ parts.push(`PRIORITY: ${context.task.priority}`);
336
+ }
337
+ if (context.task.due_date) {
338
+ parts.push(`DUE DATE: ${context.task.due_date}`);
339
+ }
340
+ parts.push("");
341
+ }
342
+ if (context.openDecisions && context.openDecisions.length > 0) {
343
+ parts.push("OPEN DECISIONS:");
344
+ context.openDecisions.forEach((d) => {
345
+ parts.push(`- ${d.question}`);
346
+ if (d.options && d.options.length > 0) {
347
+ parts.push(` Options: ${d.options.join(", ")}`);
348
+ }
349
+ });
350
+ parts.push("");
351
+ }
352
+ return parts.join("\n");
353
+ }
354
+ formatConversation(conversation, messages) {
355
+ const parts = [];
356
+ parts.push(`CONVERSATION: ${conversation.title || "Untitled"}`);
357
+ parts.push("");
358
+ messages.forEach((msg) => {
359
+ const role = msg.role || "user";
360
+ parts.push(`${role.toUpperCase()}: ${msg.content || ""}`);
361
+ });
362
+ return parts.join("\n");
363
+ }
364
+ formatTask(task, conversations, decisions) {
365
+ const parts = [];
366
+ parts.push(`TASK: ${task.title || "Untitled"}`);
367
+ parts.push(`STATUS: ${task.status || "todo"}`);
368
+ if (task.priority) {
369
+ parts.push(`PRIORITY: ${task.priority}`);
370
+ }
371
+ if (task.due_date) {
372
+ parts.push(`DUE DATE: ${task.due_date}`);
373
+ }
374
+ if (task.description) {
375
+ parts.push(`DESCRIPTION: ${task.description}`);
376
+ }
377
+ return parts.join("\n");
378
+ }
379
+ formatProject(project, tasks, conversations) {
380
+ const parts = [];
381
+ parts.push(`PROJECT: ${project.name || "Untitled"}`);
382
+ if (tasks && tasks.length > 0) {
383
+ parts.push(`TASKS: ${tasks.length}`);
384
+ }
385
+ return parts.join("\n");
386
+ }
387
+ formatDecisions(decisions) {
388
+ const parts = [];
389
+ decisions.forEach((d) => {
390
+ parts.push(`${d.status.toUpperCase()}: ${d.question}`);
391
+ if (d.status === "answered" && d.selectedOption) {
392
+ parts.push(`ANSWER: ${d.selectedOption}`);
393
+ }
394
+ });
395
+ return parts.join("\n");
396
+ }
397
+ formatHeading(text, level) {
398
+ return `\n${text.toUpperCase()}\n${'-'.repeat(text.length)}\n`;
399
+ }
400
+ formatMetadata(metadata) {
401
+ const parts = [];
402
+ for (const [key, value] of Object.entries(metadata)) {
403
+ parts.push(`${key.toUpperCase()}: ${value}`);
404
+ }
405
+ return parts.join('\n') + '\n';
406
+ }
407
+ }
408
+ export class HandoffReadyFormatter {
409
+ constructor() {
410
+ // Leverages MarkdownFormatter for detailed sections
411
+ this.markdownFormatter = new MarkdownFormatter();
412
+ }
413
+ formatTaskContext(context) {
414
+ const parts = [];
415
+ parts.push(`# Handoff Ready Context for Task: ${context.task?.title || "Untitled"}`);
416
+ parts.push(`Task ID: ${context.task?.id}`);
417
+ parts.push(`Current Status: ${context.task?.status || "unknown"}`);
418
+ if (context.task?.priority)
419
+ parts.push(`Priority: ${context.task.priority}`);
420
+ if (context.task?.due_date)
421
+ parts.push(`Due Date: ${context.task.due_date}`);
422
+ if (context.task?.assignee)
423
+ parts.push(`Assigned To: ${context.task.assignee}`);
424
+ parts.push("");
425
+ if (context.task?.description) {
426
+ parts.push("## Task Description");
427
+ parts.push(context.task.description);
428
+ parts.push("");
429
+ }
430
+ if (context.recentConversations && context.recentConversations.length > 0) {
431
+ parts.push("## Recent Progress / Last Known State (from conversations)");
432
+ // For a true LLM summary, this would call an LLM with recent messages
433
+ // For now, list recent conversations or a snippet from them
434
+ context.recentConversations.slice(0, 3).forEach((conv) => {
435
+ parts.push(`- **${conv.title || "Untitled"}** (Agent: ${conv.agentId || "unknown"}) - Last Updated: ${new Date(conv.updatedAt).toLocaleString()}`);
436
+ // Optionally fetch and summarize last few messages from each conversation
437
+ });
438
+ parts.push("");
439
+ }
440
+ if (context.openDecisions && context.openDecisions.length > 0) {
441
+ parts.push("## Pending Decisions / Blockers");
442
+ parts.push("The following decisions are currently open and may be blocking progress:");
443
+ context.openDecisions.forEach((d, i) => {
444
+ parts.push(`### ${i + 1}. ${d.question}`);
445
+ if (d.options && d.options.length > 0) {
446
+ parts.push(`Options: ${d.options.join(", ")}`);
447
+ }
448
+ if (d.impact) {
449
+ parts.push(`Potential Impact: ${d.impact}`);
450
+ }
451
+ if (d.evidenceLinks && d.evidenceLinks.length > 0) {
452
+ parts.push(`Evidence: ${d.evidenceLinks.join(", ")}`);
453
+ }
454
+ parts.push("");
455
+ });
456
+ parts.push("");
457
+ }
458
+ if (context.allDecisions && context.allDecisions.length > 0) {
459
+ const answeredDecisions = context.allDecisions.filter((d) => d.status === "answered");
460
+ if (answeredDecisions.length > 0) {
461
+ parts.push("## Key Decisions Made");
462
+ answeredDecisions.slice(0, 3).forEach((d) => {
463
+ parts.push(`- **Decision:** ${d.question}`);
464
+ if (d.selectedOption) {
465
+ parts.push(` **Outcome:** ${d.selectedOption}`);
466
+ }
467
+ else if (d.selectedText) {
468
+ parts.push(` **Outcome:** ${d.selectedText}`);
469
+ }
470
+ if (d.rationale) {
471
+ parts.push(` **Rationale:** ${d.rationale}`);
472
+ }
473
+ if (d.impact) {
474
+ parts.push(` **Impact:** ${d.impact}`);
475
+ }
476
+ parts.push("");
477
+ });
478
+ parts.push("");
479
+ }
480
+ }
481
+ parts.push("## Next Steps / Focus Areas for New Agent");
482
+ parts.push("Please provide a concise plan or next steps here.");
483
+ parts.push("");
484
+ parts.push("---");
485
+ parts.push("\n*This context is generated for efficient agent handoff. Refer to full records for complete history.*");
486
+ return parts.join("\n");
487
+ }
488
+ formatConversation(conversation, messages) {
489
+ return this.markdownFormatter.formatConversation(conversation, messages);
490
+ }
491
+ formatTask(task, conversations, decisions) {
492
+ // This formatter specializes in the overall handoff,
493
+ // so formatTask would likely be a more detailed view for humans
494
+ // but here we redirect to formatTaskContext for AI handoff.
495
+ // However, if the intent is to use formatTask specifically,
496
+ // we can implement a tailored version or delegate.
497
+ return this.markdownFormatter.formatTask(task, conversations, decisions);
498
+ }
499
+ formatProject(project, tasks, conversations) {
500
+ return this.markdownFormatter.formatProject(project, tasks, conversations);
501
+ }
502
+ formatDecisions(decisions) {
503
+ return this.markdownFormatter.formatDecisions(decisions);
504
+ }
505
+ formatHeading(text, level) {
506
+ return this.markdownFormatter.formatHeading(text, level);
507
+ }
508
+ formatMetadata(metadata) {
509
+ return this.markdownFormatter.formatMetadata(metadata);
510
+ }
511
+ }
512
+ // Factory function
513
+ export function createFormatter(format = "markdown") {
514
+ switch (format) {
515
+ case "chat":
516
+ return new ChatFormatter();
517
+ case "plain":
518
+ return new PlainTextFormatter();
519
+ case "handoff_ready":
520
+ return new HandoffReadyFormatter();
521
+ default:
522
+ return new MarkdownFormatter();
523
+ }
524
+ }
525
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Project Brain MCP Server (Free Tier)
4
+ *
5
+ * Local-only task management for AI coding agents.
6
+ * Works completely offline with no cloud dependencies.
7
+ *
8
+ * Features:
9
+ * - Basic task CRUD operations
10
+ * - Project organization
11
+ * - Conversation logging
12
+ * - Decision tracking
13
+ * - Export to Markdown/JSON
14
+ *
15
+ * Limitations (Free Tier):
16
+ * - 100 tasks per project maximum
17
+ * - Single developer only (no multi-user support)
18
+ * - No AI features (summarization, code review)
19
+ * - No task locking (no multi-agent coordination)
20
+ * - No dashboard/UI (CLI/MCP only)
21
+ *
22
+ * Upgrade to Team Edition for:
23
+ * - Unlimited tasks
24
+ * - Multi-agent collaboration
25
+ * - AI code review
26
+ * - Real-time dashboard
27
+ * - Git worktree integration
28
+ *
29
+ * Try free for 14 days → https://project-brain.io/upgrade
30
+ */
31
+ export {};
32
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}