@mnemopay/sdk 0.1.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,129 @@
1
+ "use strict";
2
+ /**
3
+ * LangGraph Tools — drop-in tools for createReactAgent.
4
+ *
5
+ * import { mnemoTools, agentPayTools } from "@mnemopay/sdk/langgraph";
6
+ * const graph = createReactAgent({ llm, tools: [...mnemoTools(agent), ...agentPayTools(agent)] });
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.mnemoTools = mnemoTools;
10
+ exports.agentPayTools = agentPayTools;
11
+ const zod_1 = require("zod");
12
+ const tools_1 = require("@langchain/core/tools");
13
+ /**
14
+ * Memory tools: recall, store, reinforce
15
+ */
16
+ function mnemoTools(agent) {
17
+ const recallMemories = (0, tools_1.tool)(async ({ limit }) => {
18
+ const memories = await agent.recall(limit);
19
+ if (memories.length === 0)
20
+ return "No memories found.";
21
+ return memories
22
+ .map((m, i) => `${i + 1}. [score:${m.score.toFixed(2)}] ${m.content}`)
23
+ .join("\n");
24
+ }, {
25
+ name: "recall_memories",
26
+ description: "Recall the agent's most relevant memories, ranked by importance × recency × frequency. " +
27
+ "Always call this before making decisions or answering questions about past interactions.",
28
+ schema: zod_1.z.object({
29
+ limit: zod_1.z
30
+ .number()
31
+ .min(1)
32
+ .max(20)
33
+ .default(5)
34
+ .describe("Number of memories to recall (1-20)"),
35
+ }),
36
+ });
37
+ const storeMemory = (0, tools_1.tool)(async ({ content, importance }) => {
38
+ const id = await agent.remember(content, importance !== undefined ? { importance } : undefined);
39
+ return `Memory stored (id: ${id})`;
40
+ }, {
41
+ name: "store_memory",
42
+ description: "Store a new memory. Use this for important facts, user preferences, decisions, " +
43
+ "and anything worth remembering across sessions. Importance is auto-scored if omitted.",
44
+ schema: zod_1.z.object({
45
+ content: zod_1.z.string().describe("The fact, preference, or observation to remember"),
46
+ importance: zod_1.z
47
+ .number()
48
+ .min(0)
49
+ .max(1)
50
+ .optional()
51
+ .describe("Manual importance (0-1). Omit for auto-scoring."),
52
+ }),
53
+ });
54
+ const reinforceMemory = (0, tools_1.tool)(async ({ id, boost }) => {
55
+ await agent.reinforce(id, boost);
56
+ return `Memory ${id} reinforced by +${boost}`;
57
+ }, {
58
+ name: "reinforce_memory",
59
+ description: "Boost a memory's importance when external signals confirm it was valuable. " +
60
+ "Use after a memory leads to a successful action or correct decision.",
61
+ schema: zod_1.z.object({
62
+ id: zod_1.z.string().describe("Memory ID to reinforce"),
63
+ boost: zod_1.z
64
+ .number()
65
+ .min(0.01)
66
+ .max(0.5)
67
+ .default(0.1)
68
+ .describe("Importance boost amount (0.01-0.5)"),
69
+ }),
70
+ });
71
+ return [recallMemories, storeMemory, reinforceMemory];
72
+ }
73
+ /**
74
+ * Payment tools: charge, settle, check balance
75
+ */
76
+ function agentPayTools(agent) {
77
+ const chargeUser = (0, tools_1.tool)(async ({ amount, reason }) => {
78
+ try {
79
+ const tx = await agent.charge(amount, reason);
80
+ return `Escrow created: $${amount.toFixed(2)} for "${reason}" (tx: ${tx.id}, status: pending). Call settle_payment to finalize.`;
81
+ }
82
+ catch (err) {
83
+ return `Charge failed: ${err.message}`;
84
+ }
85
+ }, {
86
+ name: "charge_user",
87
+ description: "Create an escrow charge for work delivered. The charge is held pending until " +
88
+ "settled. Maximum charge is $500 × agent reputation. Only charge AFTER delivering value.",
89
+ schema: zod_1.z.object({
90
+ amount: zod_1.z
91
+ .number()
92
+ .positive()
93
+ .max(500)
94
+ .describe("Amount in USD to charge (max $500)"),
95
+ reason: zod_1.z
96
+ .string()
97
+ .min(5)
98
+ .describe("Clear description of the value delivered"),
99
+ }),
100
+ });
101
+ const settlePayment = (0, tools_1.tool)(async ({ txId }) => {
102
+ try {
103
+ const tx = await agent.settle(txId);
104
+ return `Payment settled: $${tx.amount.toFixed(2)}. Reputation boosted. Recent memories reinforced.`;
105
+ }
106
+ catch (err) {
107
+ return `Settlement failed: ${err.message}`;
108
+ }
109
+ }, {
110
+ name: "settle_payment",
111
+ description: "Finalize a pending escrow transaction. This moves funds to the wallet, " +
112
+ "boosts reputation by +0.01, and reinforces recently-accessed memories by +0.05.",
113
+ schema: zod_1.z.object({
114
+ txId: zod_1.z.string().describe("Transaction ID from charge_user"),
115
+ }),
116
+ });
117
+ const checkBalance = (0, tools_1.tool)(async () => {
118
+ const bal = await agent.balance();
119
+ const profile = await agent.profile();
120
+ return (`Wallet: $${bal.wallet.toFixed(2)} | Reputation: ${bal.reputation.toFixed(2)} | ` +
121
+ `Memories: ${profile.memoriesCount} | Transactions: ${profile.transactionsCount}`);
122
+ }, {
123
+ name: "check_balance",
124
+ description: "Check wallet balance, reputation score, and agent statistics.",
125
+ schema: zod_1.z.object({}),
126
+ });
127
+ return [chargeUser, settlePayment, checkBalance];
128
+ }
129
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/langgraph/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * MnemoPay Unified MCP Server
3
+ *
4
+ * Exposes all MnemoPay SDK methods as MCP tools. Any MCP-compatible
5
+ * client (Claude Desktop, Cursor, Windsurf, OpenClaw, Hermes) gets
6
+ * agent memory + wallet capabilities instantly.
7
+ *
8
+ * Usage:
9
+ * npx @mnemopay/mcp-server # stdio mode (default)
10
+ * npx @mnemopay/mcp-server --http --port 3200 # HTTP/SSE mode
11
+ *
12
+ * Environment:
13
+ * MNEMOPAY_AGENT_ID — Agent identifier (default: "mcp-agent")
14
+ * MNEMOPAY_MODE — "quick" or "production" (default: "quick")
15
+ * MNEMO_URL — Mnemosyne API URL (production mode)
16
+ * AGENTPAY_URL — AgentPay API URL (production mode)
17
+ * MNEMO_API_KEY — Mnemosyne API key (production mode)
18
+ * AGENTPAY_API_KEY — AgentPay API key (production mode)
19
+ */
20
+ export declare function startServer(): Promise<void>;
21
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAmSH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAuKjD"}
@@ -0,0 +1,431 @@
1
+ "use strict";
2
+ /**
3
+ * MnemoPay Unified MCP Server
4
+ *
5
+ * Exposes all MnemoPay SDK methods as MCP tools. Any MCP-compatible
6
+ * client (Claude Desktop, Cursor, Windsurf, OpenClaw, Hermes) gets
7
+ * agent memory + wallet capabilities instantly.
8
+ *
9
+ * Usage:
10
+ * npx @mnemopay/mcp-server # stdio mode (default)
11
+ * npx @mnemopay/mcp-server --http --port 3200 # HTTP/SSE mode
12
+ *
13
+ * Environment:
14
+ * MNEMOPAY_AGENT_ID — Agent identifier (default: "mcp-agent")
15
+ * MNEMOPAY_MODE — "quick" or "production" (default: "quick")
16
+ * MNEMO_URL — Mnemosyne API URL (production mode)
17
+ * AGENTPAY_URL — AgentPay API URL (production mode)
18
+ * MNEMO_API_KEY — Mnemosyne API key (production mode)
19
+ * AGENTPAY_API_KEY — AgentPay API key (production mode)
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.startServer = startServer;
23
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
24
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
25
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
26
+ const index_js_2 = require("../index.js");
27
+ // ─── Agent initialization ───────────────────────────────────────────────────
28
+ function createAgent() {
29
+ const agentId = process.env.MNEMOPAY_AGENT_ID || "mcp-agent";
30
+ const mode = process.env.MNEMOPAY_MODE || "quick";
31
+ if (mode === "production") {
32
+ return index_js_2.MnemoPay.create({
33
+ agentId,
34
+ mnemoUrl: process.env.MNEMO_URL || "http://localhost:8100",
35
+ agentpayUrl: process.env.AGENTPAY_URL || "http://localhost:3100",
36
+ mnemoApiKey: process.env.MNEMO_API_KEY,
37
+ agentpayApiKey: process.env.AGENTPAY_API_KEY,
38
+ debug: process.env.DEBUG === "true",
39
+ });
40
+ }
41
+ const recall = process.env.MNEMOPAY_RECALL || undefined;
42
+ return index_js_2.MnemoPay.quick(agentId, {
43
+ debug: process.env.DEBUG === "true",
44
+ recall,
45
+ openaiApiKey: process.env.OPENAI_API_KEY,
46
+ });
47
+ }
48
+ // ─── Tool definitions ───────────────────────────────────────────────────────
49
+ const TOOLS = [
50
+ {
51
+ name: "remember",
52
+ description: "Store a memory. The agent will remember this across sessions. " +
53
+ "Importance is auto-scored from content if not provided. " +
54
+ "Use for facts, preferences, decisions, and observations.",
55
+ inputSchema: {
56
+ type: "object",
57
+ properties: {
58
+ content: { type: "string", description: "What to remember" },
59
+ importance: {
60
+ type: "number",
61
+ minimum: 0,
62
+ maximum: 1,
63
+ description: "Importance score (0-1). Auto-scored if omitted.",
64
+ },
65
+ tags: {
66
+ type: "array",
67
+ items: { type: "string" },
68
+ description: "Optional tags for categorization",
69
+ },
70
+ },
71
+ required: ["content"],
72
+ },
73
+ },
74
+ {
75
+ name: "recall",
76
+ description: "Recall the most relevant memories. Supports semantic search when a query is provided. " +
77
+ "Call this before making decisions or answering questions about past interactions.",
78
+ inputSchema: {
79
+ type: "object",
80
+ properties: {
81
+ query: {
82
+ type: "string",
83
+ description: "Semantic search query (optional). When provided, returns memories most similar to this query.",
84
+ },
85
+ limit: {
86
+ type: "number",
87
+ minimum: 1,
88
+ maximum: 50,
89
+ default: 5,
90
+ description: "Number of memories to recall (default: 5)",
91
+ },
92
+ },
93
+ },
94
+ },
95
+ {
96
+ name: "forget",
97
+ description: "Permanently delete a memory by ID.",
98
+ inputSchema: {
99
+ type: "object",
100
+ properties: {
101
+ id: { type: "string", description: "Memory ID to delete" },
102
+ },
103
+ required: ["id"],
104
+ },
105
+ },
106
+ {
107
+ name: "reinforce",
108
+ description: "Boost a memory's importance when external signals confirm it was valuable. " +
109
+ "Use after a memory leads to a successful outcome.",
110
+ inputSchema: {
111
+ type: "object",
112
+ properties: {
113
+ id: { type: "string", description: "Memory ID to reinforce" },
114
+ boost: {
115
+ type: "number",
116
+ minimum: 0.01,
117
+ maximum: 0.5,
118
+ default: 0.1,
119
+ description: "Importance boost (default: 0.1)",
120
+ },
121
+ },
122
+ required: ["id"],
123
+ },
124
+ },
125
+ {
126
+ name: "consolidate",
127
+ description: "Prune stale memories whose composite score has decayed below threshold. " +
128
+ "Run periodically to keep memory store clean.",
129
+ inputSchema: { type: "object", properties: {} },
130
+ },
131
+ {
132
+ name: "charge",
133
+ description: "Create an escrow charge for work delivered. Held pending until settled. " +
134
+ "Maximum charge = $500 x agent reputation. Only charge AFTER delivering value.",
135
+ inputSchema: {
136
+ type: "object",
137
+ properties: {
138
+ amount: {
139
+ type: "number",
140
+ minimum: 0.01,
141
+ maximum: 500,
142
+ description: "Amount in USD",
143
+ },
144
+ reason: {
145
+ type: "string",
146
+ minLength: 5,
147
+ description: "Clear description of value delivered",
148
+ },
149
+ },
150
+ required: ["amount", "reason"],
151
+ },
152
+ },
153
+ {
154
+ name: "settle",
155
+ description: "Finalize a pending escrow. Moves funds to wallet, boosts reputation +0.01, " +
156
+ "and reinforces recently-accessed memories by +0.05 (the feedback loop).",
157
+ inputSchema: {
158
+ type: "object",
159
+ properties: {
160
+ txId: { type: "string", description: "Transaction ID from charge" },
161
+ },
162
+ required: ["txId"],
163
+ },
164
+ },
165
+ {
166
+ name: "refund",
167
+ description: "Refund a transaction. If already settled, withdraws funds and docks " +
168
+ "reputation by -0.05. Takes 5 successful settlements to recover.",
169
+ inputSchema: {
170
+ type: "object",
171
+ properties: {
172
+ txId: { type: "string", description: "Transaction ID to refund" },
173
+ },
174
+ required: ["txId"],
175
+ },
176
+ },
177
+ {
178
+ name: "balance",
179
+ description: "Check wallet balance and reputation score.",
180
+ inputSchema: { type: "object", properties: {} },
181
+ },
182
+ {
183
+ name: "profile",
184
+ description: "Full agent stats: reputation, wallet, memory count, transaction count.",
185
+ inputSchema: { type: "object", properties: {} },
186
+ },
187
+ {
188
+ name: "logs",
189
+ description: "Immutable audit trail of all memory and payment actions.",
190
+ inputSchema: {
191
+ type: "object",
192
+ properties: {
193
+ limit: { type: "number", default: 20, description: "Number of entries" },
194
+ },
195
+ },
196
+ },
197
+ {
198
+ name: "history",
199
+ description: "Transaction history, most recent first.",
200
+ inputSchema: {
201
+ type: "object",
202
+ properties: {
203
+ limit: { type: "number", default: 10, description: "Number of transactions" },
204
+ },
205
+ },
206
+ },
207
+ ];
208
+ // ─── Tool execution ─────────────────────────────────────────────────────────
209
+ async function executeTool(agent, name, args) {
210
+ switch (name) {
211
+ case "remember": {
212
+ const opts = {};
213
+ if (args.importance !== undefined)
214
+ opts.importance = args.importance;
215
+ if (args.tags)
216
+ opts.tags = args.tags;
217
+ const id = await agent.remember(args.content, Object.keys(opts).length ? opts : undefined);
218
+ return JSON.stringify({ id, status: "stored" });
219
+ }
220
+ case "recall": {
221
+ const limit = args.limit ?? 5;
222
+ const memories = args.query
223
+ ? await agent.recall(args.query, limit)
224
+ : await agent.recall(limit);
225
+ if (memories.length === 0)
226
+ return "No memories found.";
227
+ return memories
228
+ .map((m, i) => `${i + 1}. [score:${m.score.toFixed(2)}, importance:${m.importance.toFixed(2)}] ${m.content}`)
229
+ .join("\n");
230
+ }
231
+ case "forget": {
232
+ const deleted = await agent.forget(args.id);
233
+ return deleted ? `Memory ${args.id} deleted.` : `Memory ${args.id} not found.`;
234
+ }
235
+ case "reinforce": {
236
+ await agent.reinforce(args.id, args.boost ?? 0.1);
237
+ return `Memory ${args.id} reinforced by +${args.boost ?? 0.1}`;
238
+ }
239
+ case "consolidate": {
240
+ const pruned = await agent.consolidate();
241
+ return `Consolidated: pruned ${pruned} stale memories.`;
242
+ }
243
+ case "charge": {
244
+ const tx = await agent.charge(args.amount, args.reason);
245
+ return JSON.stringify({ txId: tx.id, amount: tx.amount, status: tx.status, reason: tx.reason });
246
+ }
247
+ case "settle": {
248
+ const tx = await agent.settle(args.txId);
249
+ return JSON.stringify({ txId: tx.id, amount: tx.amount, status: tx.status });
250
+ }
251
+ case "refund": {
252
+ const tx = await agent.refund(args.txId);
253
+ return JSON.stringify({ txId: tx.id, status: tx.status });
254
+ }
255
+ case "balance": {
256
+ const bal = await agent.balance();
257
+ return `Wallet: $${bal.wallet.toFixed(2)} | Reputation: ${bal.reputation.toFixed(2)}`;
258
+ }
259
+ case "profile": {
260
+ const p = await agent.profile();
261
+ return JSON.stringify(p, null, 2);
262
+ }
263
+ case "logs": {
264
+ const entries = await agent.logs(args.limit ?? 20);
265
+ return entries.map((e) => `[${e.createdAt.toISOString()}] ${e.action}: ${JSON.stringify(e.details)}`).join("\n");
266
+ }
267
+ case "history": {
268
+ const txns = await agent.history(args.limit ?? 10);
269
+ if (txns.length === 0)
270
+ return "No transactions yet.";
271
+ return txns.map((t) => `$${t.amount.toFixed(2)} — ${t.status} — ${t.reason}`).join("\n");
272
+ }
273
+ default:
274
+ throw new Error(`Unknown tool: ${name}`);
275
+ }
276
+ }
277
+ // ─── Server setup ───────────────────────────────────────────────────────────
278
+ async function startServer() {
279
+ const agent = createAgent();
280
+ const server = new index_js_1.Server({ name: "mnemopay", version: "0.1.0" }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
281
+ // ── Tools ───────────────────────────────────────────────────────────────
282
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
283
+ tools: TOOLS,
284
+ }));
285
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
286
+ const { name, arguments: args } = request.params;
287
+ try {
288
+ const result = await executeTool(agent, name, args ?? {});
289
+ return { content: [{ type: "text", text: result }] };
290
+ }
291
+ catch (err) {
292
+ return {
293
+ content: [{ type: "text", text: `Error: ${err.message}` }],
294
+ isError: true,
295
+ };
296
+ }
297
+ });
298
+ // ── Resources ───────────────────────────────────────────────────────────
299
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => ({
300
+ resources: [
301
+ {
302
+ uri: "mnemopay://health",
303
+ name: "Agent Health",
304
+ description: "Current agent profile, wallet, reputation, and memory stats",
305
+ mimeType: "application/json",
306
+ },
307
+ {
308
+ uri: "mnemopay://memories",
309
+ name: "All Memories",
310
+ description: "Top 20 memories ranked by composite score",
311
+ mimeType: "text/plain",
312
+ },
313
+ ],
314
+ }));
315
+ server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
316
+ const { uri } = request.params;
317
+ if (uri === "mnemopay://health") {
318
+ const profile = await agent.profile();
319
+ return {
320
+ contents: [{ uri, mimeType: "application/json", text: JSON.stringify(profile, null, 2) }],
321
+ };
322
+ }
323
+ if (uri === "mnemopay://memories") {
324
+ const memories = await agent.recall(20);
325
+ const text = memories.length === 0
326
+ ? "No memories stored."
327
+ : memories
328
+ .map((m, i) => `${i + 1}. [${m.importance.toFixed(2)}] ${m.content}`)
329
+ .join("\n");
330
+ return { contents: [{ uri, mimeType: "text/plain", text }] };
331
+ }
332
+ throw new Error(`Unknown resource: ${uri}`);
333
+ });
334
+ // ── Prompts ─────────────────────────────────────────────────────────────
335
+ server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => ({
336
+ prompts: [
337
+ {
338
+ name: "recall-and-decide",
339
+ description: "Recall all relevant memories, analyze them, and make a decision. " +
340
+ "Includes the agent's current reputation and wallet status.",
341
+ arguments: [
342
+ { name: "question", description: "The decision or question to address", required: true },
343
+ ],
344
+ },
345
+ {
346
+ name: "agent-status-report",
347
+ description: "Generate a full status report of the agent's memory health and financial state.",
348
+ },
349
+ ],
350
+ }));
351
+ server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
352
+ const { name, arguments: args } = request.params;
353
+ if (name === "recall-and-decide") {
354
+ const memories = await agent.recall(10);
355
+ const profile = await agent.profile();
356
+ const memoryBlock = memories.length === 0
357
+ ? "No memories available."
358
+ : memories.map((m, i) => `${i + 1}. [${m.score.toFixed(2)}] ${m.content}`).join("\n");
359
+ return {
360
+ messages: [
361
+ {
362
+ role: "user",
363
+ content: {
364
+ type: "text",
365
+ text: [
366
+ `Question: ${args?.question || "What should I do next?"}`,
367
+ "",
368
+ "## Agent Status",
369
+ `Reputation: ${profile.reputation} | Wallet: $${profile.wallet} | Memories: ${profile.memoriesCount}`,
370
+ "",
371
+ "## Relevant Memories",
372
+ memoryBlock,
373
+ "",
374
+ "Based on these memories and the agent's current state, provide your analysis and recommendation.",
375
+ "If you take an action that delivers value, use the charge tool to invoice for it.",
376
+ ].join("\n"),
377
+ },
378
+ },
379
+ ],
380
+ };
381
+ }
382
+ if (name === "agent-status-report") {
383
+ const profile = await agent.profile();
384
+ const memories = await agent.recall(10);
385
+ const recent = await agent.history(5);
386
+ return {
387
+ messages: [
388
+ {
389
+ role: "user",
390
+ content: {
391
+ type: "text",
392
+ text: [
393
+ "## Agent Status Report",
394
+ "",
395
+ `Agent: ${profile.id}`,
396
+ `Reputation: ${profile.reputation.toFixed(2)}`,
397
+ `Wallet: $${profile.wallet.toFixed(2)}`,
398
+ `Memories: ${profile.memoriesCount}`,
399
+ `Transactions: ${profile.transactionsCount}`,
400
+ "",
401
+ "## Top Memories",
402
+ ...memories.map((m, i) => `${i + 1}. [${m.importance.toFixed(2)}] ${m.content}`),
403
+ "",
404
+ "## Recent Transactions",
405
+ ...(recent.length === 0
406
+ ? ["No transactions yet."]
407
+ : recent.map((t) => `$${t.amount.toFixed(2)} — ${t.status} — ${t.reason}`)),
408
+ "",
409
+ "Analyze this agent's health: memory quality, financial performance, reputation trajectory.",
410
+ ].join("\n"),
411
+ },
412
+ },
413
+ ],
414
+ };
415
+ }
416
+ throw new Error(`Unknown prompt: ${name}`);
417
+ });
418
+ // ── Start ───────────────────────────────────────────────────────────────
419
+ const transport = new stdio_js_1.StdioServerTransport();
420
+ await server.connect(transport);
421
+ console.error("[mnemopay-mcp] Server started (stdio mode)");
422
+ }
423
+ // Auto-start when run directly
424
+ const isDirectRun = process.argv[1]?.includes("mcp") || process.argv.includes("--start");
425
+ if (isDirectRun) {
426
+ startServer().catch((err) => {
427
+ console.error("Failed to start MCP server:", err);
428
+ process.exit(1);
429
+ });
430
+ }
431
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Anthropic Middleware — wraps any Anthropic client so memory becomes invisible.
3
+ *
4
+ * Every messages.create call automatically:
5
+ * 1. Recalls the top 5 memories and injects them into the system parameter
6
+ * 2. Calls Anthropic with the enriched request
7
+ * 3. Stores the conversation exchange as a new memory
8
+ * 4. Returns the response exactly as Anthropic would
9
+ */
10
+ import type { MnemoPayLite, MnemoPay } from "../index.js";
11
+ type Agent = MnemoPayLite | MnemoPay;
12
+ export declare class AnthropicMiddleware {
13
+ /**
14
+ * Wrap an Anthropic client instance. Returns a proxy with an identical API,
15
+ * but messages.create auto-injects and stores memories.
16
+ */
17
+ static wrap<T extends {
18
+ messages: {
19
+ create: (...args: any[]) => Promise<any>;
20
+ };
21
+ }>(client: T, agent: Agent, opts?: {
22
+ recallLimit?: number;
23
+ }): T & {
24
+ memories: Agent;
25
+ };
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/middleware/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAU,MAAM,aAAa,CAAC;AAElE,KAAK,KAAK,GAAG,YAAY,GAAG,QAAQ,CAAC;AAoCrC,qBAAa,mBAAmB;IAC9B;;;OAGG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE;YAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;SAAE,CAAA;KAAE,EAC9E,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,CAAC,GAAG;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE;CA6D3B"}