myceliumail-mcp 1.0.8 → 1.0.11

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 CHANGED
@@ -141,3 +141,14 @@ Remove the `myceliumail` entry from your Claude Desktop config:
141
141
 
142
142
  Then restart Claude Desktop.
143
143
 
144
+ ---
145
+
146
+ ## Support
147
+
148
+ If you find Myceliumail useful, consider supporting development:
149
+
150
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/tree.bird)
151
+
152
+ ---
153
+
154
+ **Part of the [Myceliumail](https://github.com/treebird7/myceliumail) ecosystem** 🍄
@@ -142,23 +142,48 @@ export async function getInbox(agentId, options) {
142
142
  export async function getMessage(id) {
143
143
  if (hasSupabase()) {
144
144
  try {
145
- const results = await supabaseRequest(`/agent_messages?id=eq.${id}`);
146
- if (results.length > 0) {
147
- const r = results[0];
148
- return {
149
- id: r.id,
150
- sender: r.from_agent,
151
- recipient: r.to_agent,
152
- subject: r.subject || '',
153
- body: r.message || '',
154
- encrypted: r.encrypted,
155
- ciphertext: r.ciphertext,
156
- nonce: r.nonce,
157
- senderPublicKey: r.sender_public_key,
158
- read: r.read,
159
- archived: false,
160
- createdAt: new Date(r.created_at),
161
- };
145
+ // For partial IDs, fetch recent and filter client-side
146
+ // (PostgreSQL UUID doesn't support LIKE operator)
147
+ if (id.length < 36) {
148
+ const results = await supabaseRequest(`/agent_messages?order=created_at.desc&limit=100`);
149
+ const r = results.find(row => row.id.startsWith(id));
150
+ if (r) {
151
+ return {
152
+ id: r.id,
153
+ sender: r.from_agent,
154
+ recipient: r.to_agent,
155
+ subject: r.subject || '',
156
+ body: r.message || '',
157
+ encrypted: r.encrypted,
158
+ ciphertext: r.ciphertext,
159
+ nonce: r.nonce,
160
+ senderPublicKey: r.sender_public_key,
161
+ read: r.read,
162
+ archived: false,
163
+ createdAt: new Date(r.created_at),
164
+ };
165
+ }
166
+ }
167
+ else {
168
+ // Full UUID - exact match
169
+ const results = await supabaseRequest(`/agent_messages?id=eq.${id}`);
170
+ if (results.length > 0) {
171
+ const r = results[0];
172
+ return {
173
+ id: r.id,
174
+ sender: r.from_agent,
175
+ recipient: r.to_agent,
176
+ subject: r.subject || '',
177
+ body: r.message || '',
178
+ encrypted: r.encrypted,
179
+ ciphertext: r.ciphertext,
180
+ nonce: r.nonce,
181
+ senderPublicKey: r.sender_public_key,
182
+ read: r.read,
183
+ archived: false,
184
+ createdAt: new Date(r.created_at),
185
+ };
186
+ }
162
187
  }
163
188
  }
164
189
  catch (err) {
@@ -166,14 +191,23 @@ export async function getMessage(id) {
166
191
  // Fall through
167
192
  }
168
193
  }
194
+ // Local storage - also supports partial ID
169
195
  const messages = loadLocalMessages();
170
- const found = messages.find(m => m.id === id);
196
+ const found = messages.find(m => m.id === id || m.id.startsWith(id));
171
197
  return found ? toMessage(found) : null;
172
198
  }
173
199
  export async function markAsRead(id) {
200
+ // For partial IDs, resolve full UUID first
201
+ let fullId = id;
202
+ if (id.length < 36) {
203
+ const msg = await getMessage(id);
204
+ if (!msg)
205
+ return false;
206
+ fullId = msg.id;
207
+ }
174
208
  if (hasSupabase()) {
175
209
  try {
176
- await supabaseRequest(`/agent_messages?id=eq.${id}`, {
210
+ await supabaseRequest(`/agent_messages?id=eq.${fullId}`, {
177
211
  method: 'PATCH',
178
212
  body: JSON.stringify({ read: true }),
179
213
  });
@@ -184,7 +218,7 @@ export async function markAsRead(id) {
184
218
  }
185
219
  }
186
220
  const messages = loadLocalMessages();
187
- const idx = messages.findIndex(m => m.id === id);
221
+ const idx = messages.findIndex(m => m.id === fullId);
188
222
  if (idx === -1)
189
223
  return false;
190
224
  messages[idx].read = true;
@@ -192,9 +226,17 @@ export async function markAsRead(id) {
192
226
  return true;
193
227
  }
194
228
  export async function archiveMessage(id) {
229
+ // For partial IDs, resolve full UUID first
230
+ let fullId = id;
231
+ if (id.length < 36) {
232
+ const msg = await getMessage(id);
233
+ if (!msg)
234
+ return false;
235
+ fullId = msg.id;
236
+ }
195
237
  if (hasSupabase()) {
196
238
  try {
197
- await supabaseRequest(`/agent_messages?id=eq.${id}`, {
239
+ await supabaseRequest(`/agent_messages?id=eq.${fullId}`, {
198
240
  method: 'PATCH',
199
241
  body: JSON.stringify({ archived: true }),
200
242
  });
@@ -205,7 +247,7 @@ export async function archiveMessage(id) {
205
247
  }
206
248
  }
207
249
  const messages = loadLocalMessages();
208
- const idx = messages.findIndex(m => m.id === id);
250
+ const idx = messages.findIndex(m => m.id === fullId);
209
251
  if (idx === -1)
210
252
  return false;
211
253
  messages[idx].archived = true;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/lib/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/lib/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,9 @@
1
1
  {
2
2
  "name": "myceliumail-mcp",
3
- "version": "1.0.8",
3
+ "version": "1.0.11",
4
4
  "description": "MCP server for Myceliumail - End-to-End Encrypted Messaging for AI Agents",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",
7
- "bin": {
8
- "myceliumail-mcp": "./dist/server.js"
9
- },
10
7
  "scripts": {
11
8
  "build": "tsc",
12
9
  "dev": "tsc --watch",
@@ -33,6 +30,10 @@
33
30
  "bugs": {
34
31
  "url": "https://github.com/treebird7/myceliumail/issues"
35
32
  },
33
+ "funding": {
34
+ "type": "buymeacoffee",
35
+ "url": "https://buymeacoffee.com/tree.bird"
36
+ },
36
37
  "readme": "README.md",
37
38
  "dependencies": {
38
39
  "@modelcontextprotocol/sdk": "^1.0.0",
@@ -189,29 +189,59 @@ export async function getInbox(
189
189
  export async function getMessage(id: string): Promise<Message | null> {
190
190
  if (hasSupabase()) {
191
191
  try {
192
- const results = await supabaseRequest<Array<{
193
- id: string; from_agent: string; to_agent: string;
194
- subject: string; message: string; encrypted: boolean;
195
- ciphertext: string; nonce: string; sender_public_key: string;
196
- read: boolean; created_at: string;
197
- }>>(`/agent_messages?id=eq.${id}`);
192
+ // For partial IDs, fetch recent and filter client-side
193
+ // (PostgreSQL UUID doesn't support LIKE operator)
194
+ if (id.length < 36) {
195
+ const results = await supabaseRequest<Array<{
196
+ id: string; from_agent: string; to_agent: string;
197
+ subject: string; message: string; encrypted: boolean;
198
+ ciphertext: string; nonce: string; sender_public_key: string;
199
+ read: boolean; created_at: string;
200
+ }>>(`/agent_messages?order=created_at.desc&limit=100`);
198
201
 
199
- if (results.length > 0) {
200
- const r = results[0];
201
- return {
202
- id: r.id,
203
- sender: r.from_agent,
204
- recipient: r.to_agent,
205
- subject: r.subject || '',
206
- body: r.message || '',
207
- encrypted: r.encrypted,
208
- ciphertext: r.ciphertext,
209
- nonce: r.nonce,
210
- senderPublicKey: r.sender_public_key,
211
- read: r.read,
212
- archived: false,
213
- createdAt: new Date(r.created_at),
214
- };
202
+ const r = results.find(row => row.id.startsWith(id));
203
+ if (r) {
204
+ return {
205
+ id: r.id,
206
+ sender: r.from_agent,
207
+ recipient: r.to_agent,
208
+ subject: r.subject || '',
209
+ body: r.message || '',
210
+ encrypted: r.encrypted,
211
+ ciphertext: r.ciphertext,
212
+ nonce: r.nonce,
213
+ senderPublicKey: r.sender_public_key,
214
+ read: r.read,
215
+ archived: false,
216
+ createdAt: new Date(r.created_at),
217
+ };
218
+ }
219
+ } else {
220
+ // Full UUID - exact match
221
+ const results = await supabaseRequest<Array<{
222
+ id: string; from_agent: string; to_agent: string;
223
+ subject: string; message: string; encrypted: boolean;
224
+ ciphertext: string; nonce: string; sender_public_key: string;
225
+ read: boolean; created_at: string;
226
+ }>>(`/agent_messages?id=eq.${id}`);
227
+
228
+ if (results.length > 0) {
229
+ const r = results[0];
230
+ return {
231
+ id: r.id,
232
+ sender: r.from_agent,
233
+ recipient: r.to_agent,
234
+ subject: r.subject || '',
235
+ body: r.message || '',
236
+ encrypted: r.encrypted,
237
+ ciphertext: r.ciphertext,
238
+ nonce: r.nonce,
239
+ senderPublicKey: r.sender_public_key,
240
+ read: r.read,
241
+ archived: false,
242
+ createdAt: new Date(r.created_at),
243
+ };
244
+ }
215
245
  }
216
246
  } catch (err) {
217
247
  console.error('getMessage failed, falling back to local:', err);
@@ -219,15 +249,24 @@ export async function getMessage(id: string): Promise<Message | null> {
219
249
  }
220
250
  }
221
251
 
252
+ // Local storage - also supports partial ID
222
253
  const messages = loadLocalMessages();
223
- const found = messages.find(m => m.id === id);
254
+ const found = messages.find(m => m.id === id || m.id.startsWith(id));
224
255
  return found ? toMessage(found) : null;
225
256
  }
226
257
 
227
258
  export async function markAsRead(id: string): Promise<boolean> {
259
+ // For partial IDs, resolve full UUID first
260
+ let fullId = id;
261
+ if (id.length < 36) {
262
+ const msg = await getMessage(id);
263
+ if (!msg) return false;
264
+ fullId = msg.id;
265
+ }
266
+
228
267
  if (hasSupabase()) {
229
268
  try {
230
- await supabaseRequest(`/agent_messages?id=eq.${id}`, {
269
+ await supabaseRequest(`/agent_messages?id=eq.${fullId}`, {
231
270
  method: 'PATCH',
232
271
  body: JSON.stringify({ read: true }),
233
272
  });
@@ -238,7 +277,7 @@ export async function markAsRead(id: string): Promise<boolean> {
238
277
  }
239
278
 
240
279
  const messages = loadLocalMessages();
241
- const idx = messages.findIndex(m => m.id === id);
280
+ const idx = messages.findIndex(m => m.id === fullId);
242
281
  if (idx === -1) return false;
243
282
  messages[idx].read = true;
244
283
  saveLocalMessages(messages);
@@ -246,9 +285,17 @@ export async function markAsRead(id: string): Promise<boolean> {
246
285
  }
247
286
 
248
287
  export async function archiveMessage(id: string): Promise<boolean> {
288
+ // For partial IDs, resolve full UUID first
289
+ let fullId = id;
290
+ if (id.length < 36) {
291
+ const msg = await getMessage(id);
292
+ if (!msg) return false;
293
+ fullId = msg.id;
294
+ }
295
+
249
296
  if (hasSupabase()) {
250
297
  try {
251
- await supabaseRequest(`/agent_messages?id=eq.${id}`, {
298
+ await supabaseRequest(`/agent_messages?id=eq.${fullId}`, {
252
299
  method: 'PATCH',
253
300
  body: JSON.stringify({ archived: true }),
254
301
  });
@@ -259,7 +306,7 @@ export async function archiveMessage(id: string): Promise<boolean> {
259
306
  }
260
307
 
261
308
  const messages = loadLocalMessages();
262
- const idx = messages.findIndex(m => m.id === id);
309
+ const idx = messages.findIndex(m => m.id === fullId);
263
310
  if (idx === -1) return false;
264
311
  messages[idx].archived = true;
265
312
  saveLocalMessages(messages);