@zeliper/zscode-mcp-server 1.0.2 → 1.0.3

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,127 @@
1
+ import { z } from "zod";
2
+ import { StateManager } from "../state/manager.js";
3
+ import { withErrorHandling, ProjectNotInitializedError } from "../errors/index.js";
4
+ /**
5
+ * Register summary-related tools
6
+ * Summary generates a project overview that's auto-injected with general memories
7
+ */
8
+ export function registerSummaryTools(server) {
9
+ // ============ generate_summary ============
10
+ server.tool("generate_summary", "Generate or update the project summary. Creates a memory in 'project-summary' category that is automatically included with get_full_context and zscode:start. Run again to update with current project state.", {
11
+ customContent: z.string().optional().describe("Optional custom content to use instead of auto-generated summary. If not provided, summary is auto-generated from current project state."),
12
+ }, async (args) => {
13
+ const result = await withErrorHandling(async () => {
14
+ const manager = StateManager.getInstance();
15
+ if (!manager.isInitialized()) {
16
+ throw new ProjectNotInitializedError();
17
+ }
18
+ const existingSummary = manager.getProjectSummary();
19
+ const isUpdate = existingSummary !== undefined;
20
+ const memory = await manager.saveProjectSummary(args.customContent);
21
+ return {
22
+ success: true,
23
+ action: isUpdate ? "updated" : "created",
24
+ message: isUpdate
25
+ ? `Project summary updated. Memory ID: ${memory.id}`
26
+ : `Project summary created. Memory ID: ${memory.id}`,
27
+ memory: {
28
+ id: memory.id,
29
+ category: memory.category,
30
+ title: memory.title,
31
+ priority: memory.priority,
32
+ contentPreview: memory.content.substring(0, 200) + (memory.content.length > 200 ? "..." : ""),
33
+ },
34
+ note: "This summary will be automatically included in get_full_context and zscode:start responses.",
35
+ };
36
+ }, "generate_summary");
37
+ if (result.success) {
38
+ return {
39
+ content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }],
40
+ };
41
+ }
42
+ else {
43
+ return {
44
+ content: [{ type: "text", text: JSON.stringify(result.error, null, 2) }],
45
+ isError: true,
46
+ };
47
+ }
48
+ });
49
+ // ============ get_project_summary ============
50
+ server.tool("get_project_summary", "Get the current project summary content. Returns the auto-generated summary if no custom summary exists.", {}, async () => {
51
+ const result = await withErrorHandling(async () => {
52
+ const manager = StateManager.getInstance();
53
+ if (!manager.isInitialized()) {
54
+ throw new ProjectNotInitializedError();
55
+ }
56
+ const existingSummary = manager.getProjectSummary();
57
+ const generatedContent = manager.generateProjectSummaryContent();
58
+ if (existingSummary) {
59
+ return {
60
+ success: true,
61
+ exists: true,
62
+ memory: {
63
+ id: existingSummary.id,
64
+ title: existingSummary.title,
65
+ content: existingSummary.content,
66
+ updatedAt: existingSummary.updatedAt,
67
+ },
68
+ generatedPreview: generatedContent.substring(0, 500) + (generatedContent.length > 500 ? "..." : ""),
69
+ note: "Use generate_summary to update with latest project state.",
70
+ };
71
+ }
72
+ else {
73
+ return {
74
+ success: true,
75
+ exists: false,
76
+ generatedContent,
77
+ note: "No summary exists yet. Use generate_summary to create one.",
78
+ };
79
+ }
80
+ }, "get_project_summary");
81
+ if (result.success) {
82
+ return {
83
+ content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }],
84
+ };
85
+ }
86
+ else {
87
+ return {
88
+ content: [{ type: "text", text: JSON.stringify(result.error, null, 2) }],
89
+ isError: true,
90
+ };
91
+ }
92
+ });
93
+ // ============ delete_project_summary ============
94
+ server.tool("delete_project_summary", "Delete the project summary memory. The summary will no longer be auto-injected.", {}, async () => {
95
+ const result = await withErrorHandling(async () => {
96
+ const manager = StateManager.getInstance();
97
+ if (!manager.isInitialized()) {
98
+ throw new ProjectNotInitializedError();
99
+ }
100
+ const existingSummary = manager.getProjectSummary();
101
+ if (!existingSummary) {
102
+ return {
103
+ success: false,
104
+ message: "No project summary exists to delete.",
105
+ };
106
+ }
107
+ await manager.removeMemory(existingSummary.id);
108
+ return {
109
+ success: true,
110
+ message: "Project summary deleted.",
111
+ deletedMemoryId: existingSummary.id,
112
+ };
113
+ }, "delete_project_summary");
114
+ if (result.success) {
115
+ return {
116
+ content: [{ type: "text", text: JSON.stringify(result.data, null, 2) }],
117
+ };
118
+ }
119
+ else {
120
+ return {
121
+ content: [{ type: "text", text: JSON.stringify(result.error, null, 2) }],
122
+ isError: true,
123
+ };
124
+ }
125
+ });
126
+ }
127
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/tools/summary.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeliper/zscode-mcp-server",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "ZSCode MCP Server for Claude Code - Project planning and task management",
5
5
  "publishConfig": {
6
6
  "access": "public"