@agent-workspace/mcp-server 0.2.1 → 0.5.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.
Files changed (54) hide show
  1. package/README.md +42 -5
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +30 -568
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.test.d.ts +2 -0
  7. package/dist/index.test.d.ts.map +1 -0
  8. package/dist/index.test.js +726 -0
  9. package/dist/index.test.js.map +1 -0
  10. package/dist/tools/artifact.d.ts +6 -0
  11. package/dist/tools/artifact.d.ts.map +1 -0
  12. package/dist/tools/artifact.js +428 -0
  13. package/dist/tools/artifact.js.map +1 -0
  14. package/dist/tools/config.d.ts +6 -0
  15. package/dist/tools/config.d.ts.map +1 -0
  16. package/dist/tools/config.js +91 -0
  17. package/dist/tools/config.js.map +1 -0
  18. package/dist/tools/contract.d.ts +6 -0
  19. package/dist/tools/contract.d.ts.map +1 -0
  20. package/dist/tools/contract.js +233 -0
  21. package/dist/tools/contract.js.map +1 -0
  22. package/dist/tools/identity.d.ts +6 -0
  23. package/dist/tools/identity.d.ts.map +1 -0
  24. package/dist/tools/identity.js +91 -0
  25. package/dist/tools/identity.js.map +1 -0
  26. package/dist/tools/memory.d.ts +6 -0
  27. package/dist/tools/memory.d.ts.map +1 -0
  28. package/dist/tools/memory.js +145 -0
  29. package/dist/tools/memory.js.map +1 -0
  30. package/dist/tools/project.d.ts +6 -0
  31. package/dist/tools/project.d.ts.map +1 -0
  32. package/dist/tools/project.js +184 -0
  33. package/dist/tools/project.js.map +1 -0
  34. package/dist/tools/reputation.d.ts +6 -0
  35. package/dist/tools/reputation.d.ts.map +1 -0
  36. package/dist/tools/reputation.js +206 -0
  37. package/dist/tools/reputation.js.map +1 -0
  38. package/dist/tools/status.d.ts +6 -0
  39. package/dist/tools/status.d.ts.map +1 -0
  40. package/dist/tools/status.js +223 -0
  41. package/dist/tools/status.js.map +1 -0
  42. package/dist/tools/swarm.d.ts +6 -0
  43. package/dist/tools/swarm.d.ts.map +1 -0
  44. package/dist/tools/swarm.js +483 -0
  45. package/dist/tools/swarm.js.map +1 -0
  46. package/dist/tools/task.d.ts +6 -0
  47. package/dist/tools/task.d.ts.map +1 -0
  48. package/dist/tools/task.js +347 -0
  49. package/dist/tools/task.js.map +1 -0
  50. package/dist/utils.d.ts +23 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +56 -0
  53. package/dist/utils.js.map +1 -0
  54. package/package.json +8 -2
@@ -0,0 +1,233 @@
1
+ import { readFile, writeFile, readdir, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import matter from "gray-matter";
4
+ import * as z from "zod";
5
+ import { AWP_VERSION, RDP_VERSION, CONTRACTS_DIR, REPUTATION_DIR } from "@agent-workspace/core";
6
+ import { getWorkspaceRoot, getAgentDid, updateDimension } from "@agent-workspace/utils";
7
+ /**
8
+ * Register contract-related tools: create, evaluate, list
9
+ */
10
+ export function registerContractTools(server) {
11
+ // --- Tool: awp_contract_create ---
12
+ server.registerTool("awp_contract_create", {
13
+ title: "Create Delegation Contract",
14
+ description: "Create a new delegation contract between agents with task definition and evaluation criteria.",
15
+ inputSchema: {
16
+ slug: z.string().describe("Contract slug"),
17
+ delegate: z.string().describe("Delegate agent DID"),
18
+ delegateSlug: z.string().describe("Delegate reputation profile slug"),
19
+ description: z.string().describe("Task description"),
20
+ deadline: z.string().optional().describe("Deadline (ISO 8601)"),
21
+ outputFormat: z.string().optional().describe("Expected output type"),
22
+ outputSlug: z.string().optional().describe("Expected output artifact slug"),
23
+ criteria: z
24
+ .record(z.string(), z.number())
25
+ .optional()
26
+ .describe("Evaluation criteria weights (default: completeness:0.3, accuracy:0.4, clarity:0.2, timeliness:0.1)"),
27
+ },
28
+ }, async ({ slug, delegate, delegateSlug, description, deadline, outputFormat, outputSlug, criteria, }) => {
29
+ const root = getWorkspaceRoot();
30
+ const conDir = join(root, CONTRACTS_DIR);
31
+ await mkdir(conDir, { recursive: true });
32
+ const filePath = join(conDir, `${slug}.md`);
33
+ const delegatorDid = await getAgentDid(root);
34
+ const now = new Date().toISOString();
35
+ const evalCriteria = criteria || {
36
+ completeness: 0.3,
37
+ accuracy: 0.4,
38
+ clarity: 0.2,
39
+ timeliness: 0.1,
40
+ };
41
+ const data = {
42
+ awp: AWP_VERSION,
43
+ rdp: RDP_VERSION,
44
+ type: "delegation-contract",
45
+ id: `contract:${slug}`,
46
+ status: "active",
47
+ delegator: delegatorDid,
48
+ delegate,
49
+ delegateSlug,
50
+ created: now,
51
+ task: { description },
52
+ evaluation: { criteria: evalCriteria, result: null },
53
+ };
54
+ if (deadline)
55
+ data.deadline = deadline;
56
+ const task = data.task;
57
+ if (outputFormat)
58
+ task.outputFormat = outputFormat;
59
+ if (outputSlug)
60
+ task.outputSlug = outputSlug;
61
+ const body = `\n# ${slug} — Delegation Contract\n\nDelegated to ${delegateSlug}: ${description}\n\n## Status\nActive — awaiting completion.\n`;
62
+ const output = matter.stringify(body, data);
63
+ await writeFile(filePath, output, "utf-8");
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: `Created contracts/${slug}.md (status: active)`,
69
+ },
70
+ ],
71
+ };
72
+ });
73
+ // --- Tool: awp_contract_evaluate ---
74
+ server.registerTool("awp_contract_evaluate", {
75
+ title: "Evaluate Delegation Contract",
76
+ description: "Evaluate a completed contract with scores for each criterion. Generates reputation signals for the delegate automatically.",
77
+ inputSchema: {
78
+ slug: z.string().describe("Contract slug"),
79
+ scores: z
80
+ .record(z.string(), z.number().min(0).max(1))
81
+ .describe("Map of criterion name to score (0.0-1.0)"),
82
+ },
83
+ }, async ({ slug, scores }) => {
84
+ const root = getWorkspaceRoot();
85
+ const filePath = join(root, CONTRACTS_DIR, `${slug}.md`);
86
+ let fileData;
87
+ try {
88
+ const raw = await readFile(filePath, "utf-8");
89
+ fileData = matter(raw);
90
+ }
91
+ catch {
92
+ return {
93
+ content: [{ type: "text", text: `Contract "${slug}" not found.` }],
94
+ isError: true,
95
+ };
96
+ }
97
+ if (fileData.data.status === "evaluated") {
98
+ return {
99
+ content: [{ type: "text", text: "Contract has already been evaluated." }],
100
+ isError: true,
101
+ };
102
+ }
103
+ const evaluation = fileData.data.evaluation;
104
+ const criteria = evaluation.criteria;
105
+ const scoreMap = scores;
106
+ let weightedScore = 0;
107
+ for (const [name, weight] of Object.entries(criteria)) {
108
+ if (scoreMap[name] === undefined) {
109
+ return {
110
+ content: [{ type: "text", text: `Missing score for criterion: ${name}` }],
111
+ isError: true,
112
+ };
113
+ }
114
+ weightedScore += weight * scoreMap[name];
115
+ }
116
+ weightedScore = Math.round(weightedScore * 1000) / 1000;
117
+ // Update contract
118
+ fileData.data.status = "evaluated";
119
+ evaluation.result = scores;
120
+ const contractOutput = matter.stringify(fileData.content, fileData.data);
121
+ await writeFile(filePath, contractOutput, "utf-8");
122
+ // Generate reputation signal for delegate
123
+ const evaluatorDid = await getAgentDid(root);
124
+ const delegateSlug = fileData.data.delegateSlug;
125
+ const now = new Date();
126
+ const timestamp = now.toISOString();
127
+ const task = fileData.data.task;
128
+ const signal = {
129
+ source: evaluatorDid,
130
+ dimension: "reliability",
131
+ score: weightedScore,
132
+ timestamp,
133
+ evidence: fileData.data.id,
134
+ message: `Contract evaluation: ${task.description}`,
135
+ };
136
+ // Try to update delegate's reputation profile
137
+ const repPath = join(root, REPUTATION_DIR, `${delegateSlug}.md`);
138
+ let repUpdated = false;
139
+ try {
140
+ const repRaw = await readFile(repPath, "utf-8");
141
+ const repData = matter(repRaw);
142
+ repData.data.lastUpdated = timestamp;
143
+ const signals = repData.data.signals;
144
+ signals.push(signal);
145
+ if (!repData.data.dimensions)
146
+ repData.data.dimensions = {};
147
+ const dimensions = repData.data.dimensions;
148
+ dimensions.reliability = updateDimension(dimensions.reliability, weightedScore, now);
149
+ const repOutput = matter.stringify(repData.content, repData.data);
150
+ await writeFile(repPath, repOutput, "utf-8");
151
+ repUpdated = true;
152
+ }
153
+ catch {
154
+ // No profile — that's OK
155
+ }
156
+ const resultText = [
157
+ `Evaluated contracts/${slug}.md — weighted score: ${weightedScore}`,
158
+ repUpdated
159
+ ? `Updated reputation/${delegateSlug}.md with reliability signal`
160
+ : `Note: No reputation profile for ${delegateSlug} — signal not recorded`,
161
+ ].join("\n");
162
+ return {
163
+ content: [{ type: "text", text: resultText }],
164
+ };
165
+ });
166
+ // --- Tool: awp_contract_list ---
167
+ server.registerTool("awp_contract_list", {
168
+ title: "List Delegation Contracts",
169
+ description: "List all delegation contracts with optional status filter",
170
+ inputSchema: {
171
+ status: z
172
+ .string()
173
+ .optional()
174
+ .describe("Filter by status (active, completed, evaluated, cancelled)"),
175
+ },
176
+ }, async ({ status: statusFilter }) => {
177
+ const root = getWorkspaceRoot();
178
+ const contractsDir = join(root, CONTRACTS_DIR);
179
+ let files;
180
+ try {
181
+ files = await readdir(contractsDir);
182
+ }
183
+ catch {
184
+ return {
185
+ content: [{ type: "text", text: "No contracts directory found." }],
186
+ };
187
+ }
188
+ const mdFiles = files.filter((f) => f.endsWith(".md")).sort();
189
+ const contracts = [];
190
+ for (const f of mdFiles) {
191
+ try {
192
+ const raw = await readFile(join(contractsDir, f), "utf-8");
193
+ const { data } = matter(raw);
194
+ if (data.type === "delegation-contract") {
195
+ if (!statusFilter || data.status === statusFilter) {
196
+ contracts.push({
197
+ slug: f.replace(".md", ""),
198
+ status: data.status || "unknown",
199
+ delegate: data.delegate || "unknown",
200
+ delegateSlug: data.delegateSlug || "unknown",
201
+ created: data.created || "unknown",
202
+ deadline: data.deadline,
203
+ });
204
+ }
205
+ }
206
+ }
207
+ catch {
208
+ // Skip unparseable files
209
+ }
210
+ }
211
+ if (contracts.length === 0) {
212
+ return {
213
+ content: [
214
+ {
215
+ type: "text",
216
+ text: statusFilter
217
+ ? `No contracts with status: ${statusFilter}`
218
+ : "No contracts found.",
219
+ },
220
+ ],
221
+ };
222
+ }
223
+ return {
224
+ content: [
225
+ {
226
+ type: "text",
227
+ text: JSON.stringify(contracts, null, 2),
228
+ },
229
+ ],
230
+ };
231
+ });
232
+ }
233
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/tools/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register identity-related tools: read_identity, read_soul, read_user
4
+ */
5
+ export declare function registerIdentityTools(server: McpServer): void;
6
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+F7D"}
@@ -0,0 +1,91 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import matter from "gray-matter";
4
+ import { getWorkspaceRoot } from "@agent-workspace/utils";
5
+ /**
6
+ * Register identity-related tools: read_identity, read_soul, read_user
7
+ */
8
+ export function registerIdentityTools(server) {
9
+ // --- Tool: awp_read_identity ---
10
+ server.registerTool("awp_read_identity", {
11
+ title: "Read Agent Identity",
12
+ description: "Read this agent's identity (name, creature, capabilities, DID) from the AWP workspace",
13
+ inputSchema: {},
14
+ }, async () => {
15
+ const root = getWorkspaceRoot();
16
+ const path = join(root, "IDENTITY.md");
17
+ try {
18
+ const raw = await readFile(path, "utf-8");
19
+ const { data, content } = matter(raw);
20
+ return {
21
+ content: [
22
+ {
23
+ type: "text",
24
+ text: JSON.stringify({ frontmatter: data, body: content.trim() }, null, 2),
25
+ },
26
+ ],
27
+ };
28
+ }
29
+ catch {
30
+ return {
31
+ content: [{ type: "text", text: "Error: IDENTITY.md not found" }],
32
+ isError: true,
33
+ };
34
+ }
35
+ });
36
+ // --- Tool: awp_read_soul ---
37
+ server.registerTool("awp_read_soul", {
38
+ title: "Read Agent Soul",
39
+ description: "Read this agent's values, boundaries, and governance rules from the AWP workspace",
40
+ inputSchema: {},
41
+ }, async () => {
42
+ const root = getWorkspaceRoot();
43
+ const path = join(root, "SOUL.md");
44
+ try {
45
+ const raw = await readFile(path, "utf-8");
46
+ const { data, content } = matter(raw);
47
+ return {
48
+ content: [
49
+ {
50
+ type: "text",
51
+ text: JSON.stringify({ frontmatter: data, body: content.trim() }, null, 2),
52
+ },
53
+ ],
54
+ };
55
+ }
56
+ catch {
57
+ return {
58
+ content: [{ type: "text", text: "Error: SOUL.md not found" }],
59
+ isError: true,
60
+ };
61
+ }
62
+ });
63
+ // --- Tool: awp_read_user ---
64
+ server.registerTool("awp_read_user", {
65
+ title: "Read Human Profile",
66
+ description: "Read the human user's profile from the AWP workspace",
67
+ inputSchema: {},
68
+ }, async () => {
69
+ const root = getWorkspaceRoot();
70
+ const path = join(root, "USER.md");
71
+ try {
72
+ const raw = await readFile(path, "utf-8");
73
+ const { data, content } = matter(raw);
74
+ return {
75
+ content: [
76
+ {
77
+ type: "text",
78
+ text: JSON.stringify({ frontmatter: data, body: content.trim() }, null, 2),
79
+ },
80
+ ],
81
+ };
82
+ }
83
+ catch {
84
+ return {
85
+ content: [{ type: "text", text: "Error: USER.md not found" }],
86
+ isError: true,
87
+ };
88
+ }
89
+ });
90
+ }
91
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,kCAAkC;IAClC,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,uFAAuF;QACzF,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3E;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;gBAC1E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,mFAAmF;QACrF,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3E;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;gBACtE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3E;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;gBACtE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register memory-related tools: read_memory, write_memory
4
+ */
5
+ export declare function registerMemoryTools(server: McpServer): void;
6
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuJ3D"}
@@ -0,0 +1,145 @@
1
+ import { readFile, writeFile, readdir, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import matter from "gray-matter";
4
+ import * as z from "zod";
5
+ import { AWP_VERSION, MEMORY_DIR } from "@agent-workspace/core";
6
+ import { getWorkspaceRoot } from "@agent-workspace/utils";
7
+ /**
8
+ * Register memory-related tools: read_memory, write_memory
9
+ */
10
+ export function registerMemoryTools(server) {
11
+ // --- Tool: awp_read_memory ---
12
+ server.registerTool("awp_read_memory", {
13
+ title: "Read Memory",
14
+ description: "Read memory entries. Specify a date (YYYY-MM-DD) for daily logs, or 'longterm' for MEMORY.md, or 'recent' for the last 3 days",
15
+ inputSchema: {
16
+ target: z
17
+ .string()
18
+ .describe("Which memory to read: a date like '2026-01-30', 'longterm', or 'recent'"),
19
+ },
20
+ }, async ({ target }) => {
21
+ const root = getWorkspaceRoot();
22
+ if (target === "longterm") {
23
+ const path = join(root, "MEMORY.md");
24
+ try {
25
+ const raw = await readFile(path, "utf-8");
26
+ const { data, content } = matter(raw);
27
+ return {
28
+ content: [
29
+ {
30
+ type: "text",
31
+ text: JSON.stringify({ frontmatter: data, body: content.trim() }, null, 2),
32
+ },
33
+ ],
34
+ };
35
+ }
36
+ catch {
37
+ return {
38
+ content: [{ type: "text", text: "No long-term memory file exists yet." }],
39
+ };
40
+ }
41
+ }
42
+ if (target === "recent") {
43
+ const memDir = join(root, MEMORY_DIR);
44
+ try {
45
+ const files = await readdir(memDir);
46
+ const mdFiles = files
47
+ .filter((f) => f.endsWith(".md"))
48
+ .sort()
49
+ .reverse()
50
+ .slice(0, 3);
51
+ const results = [];
52
+ for (const f of mdFiles) {
53
+ const raw = await readFile(join(memDir, f), "utf-8");
54
+ const { data, content } = matter(raw);
55
+ results.push(`--- ${f} ---\n${JSON.stringify(data, null, 2)}\n${content.trim()}`);
56
+ }
57
+ return {
58
+ content: [
59
+ {
60
+ type: "text",
61
+ text: results.length ? results.join("\n\n") : "No recent memory entries.",
62
+ },
63
+ ],
64
+ };
65
+ }
66
+ catch {
67
+ return {
68
+ content: [{ type: "text", text: "No memory directory found." }],
69
+ };
70
+ }
71
+ }
72
+ // Specific date
73
+ const path = join(root, MEMORY_DIR, `${target}.md`);
74
+ try {
75
+ const raw = await readFile(path, "utf-8");
76
+ const { data, content } = matter(raw);
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: JSON.stringify({ frontmatter: data, body: content.trim() }, null, 2),
82
+ },
83
+ ],
84
+ };
85
+ }
86
+ catch {
87
+ return {
88
+ content: [{ type: "text", text: `No memory entry for ${target}.` }],
89
+ };
90
+ }
91
+ });
92
+ // --- Tool: awp_write_memory ---
93
+ server.registerTool("awp_write_memory", {
94
+ title: "Write Memory",
95
+ description: "Append an entry to today's memory log in the AWP workspace",
96
+ inputSchema: {
97
+ content: z.string().describe("The memory entry to log"),
98
+ tags: z.array(z.string()).optional().describe("Optional categorization tags"),
99
+ },
100
+ }, async ({ content: entryContent, tags }) => {
101
+ const root = getWorkspaceRoot();
102
+ const memDir = join(root, MEMORY_DIR);
103
+ await mkdir(memDir, { recursive: true });
104
+ const date = new Date().toISOString().split("T")[0];
105
+ const time = new Date().toTimeString().slice(0, 5);
106
+ const filePath = join(memDir, `${date}.md`);
107
+ const entry = {
108
+ time,
109
+ content: entryContent,
110
+ tags: tags?.length ? tags : undefined,
111
+ };
112
+ let fileData;
113
+ try {
114
+ const raw = await readFile(filePath, "utf-8");
115
+ fileData = matter(raw);
116
+ if (!fileData.data.entries)
117
+ fileData.data.entries = [];
118
+ fileData.data.entries.push(entry);
119
+ }
120
+ catch {
121
+ fileData = {
122
+ data: {
123
+ awp: AWP_VERSION,
124
+ type: "memory-daily",
125
+ date,
126
+ entries: [entry],
127
+ },
128
+ content: `\n# ${date}\n\n`,
129
+ };
130
+ }
131
+ const tagStr = tags?.length ? ` [${tags.join(", ")}]` : "";
132
+ fileData.content += `- **${time}** — ${entryContent}${tagStr}\n`;
133
+ const output = matter.stringify(fileData.content, fileData.data);
134
+ await writeFile(filePath, output, "utf-8");
135
+ return {
136
+ content: [
137
+ {
138
+ type: "text",
139
+ text: `Logged to memory/${date}.md at ${time}`,
140
+ },
141
+ ],
142
+ };
143
+ });
144
+ }
145
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register project-related tools: create, list, status
4
+ */
5
+ export declare function registerProjectTools(server: McpServer): void;
6
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmL5D"}