myceliumail 1.0.1

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 (150) hide show
  1. package/.context7 +87 -0
  2. package/.env.example +12 -0
  3. package/.eslintrc.json +29 -0
  4. package/CLAUDE.md +35 -0
  5. package/COMPLETE.md +51 -0
  6. package/LICENSE +21 -0
  7. package/MYCELIUMAIL_STARTER_KIT.md +603 -0
  8. package/NEXT_STEPS.md +96 -0
  9. package/README.md +229 -0
  10. package/desktop/README.md +102 -0
  11. package/desktop/assets/icon.icns +0 -0
  12. package/desktop/assets/icon.iconset/icon_128x128.png +0 -0
  13. package/desktop/assets/icon.iconset/icon_128x128@2x.png +0 -0
  14. package/desktop/assets/icon.iconset/icon_16x16.png +0 -0
  15. package/desktop/assets/icon.iconset/icon_16x16@2x.png +0 -0
  16. package/desktop/assets/icon.iconset/icon_256x256.png +0 -0
  17. package/desktop/assets/icon.iconset/icon_256x256@2x.png +0 -0
  18. package/desktop/assets/icon.iconset/icon_32x32.png +0 -0
  19. package/desktop/assets/icon.iconset/icon_32x32@2x.png +0 -0
  20. package/desktop/assets/icon.iconset/icon_512x512.png +0 -0
  21. package/desktop/assets/icon.iconset/icon_512x512@2x.png +0 -0
  22. package/desktop/assets/icon.png +0 -0
  23. package/desktop/assets/tray-icon.png +0 -0
  24. package/desktop/main.js +257 -0
  25. package/desktop/package-lock.json +4198 -0
  26. package/desktop/package.json +48 -0
  27. package/desktop/preload.js +11 -0
  28. package/dist/bin/myceliumail.d.ts +8 -0
  29. package/dist/bin/myceliumail.d.ts.map +1 -0
  30. package/dist/bin/myceliumail.js +44 -0
  31. package/dist/bin/myceliumail.js.map +1 -0
  32. package/dist/commands/broadcast.d.ts +9 -0
  33. package/dist/commands/broadcast.d.ts.map +1 -0
  34. package/dist/commands/broadcast.js +59 -0
  35. package/dist/commands/broadcast.js.map +1 -0
  36. package/dist/commands/dashboard.d.ts +3 -0
  37. package/dist/commands/dashboard.d.ts.map +1 -0
  38. package/dist/commands/dashboard.js +18 -0
  39. package/dist/commands/dashboard.js.map +1 -0
  40. package/dist/commands/inbox.d.ts +6 -0
  41. package/dist/commands/inbox.d.ts.map +1 -0
  42. package/dist/commands/inbox.js +65 -0
  43. package/dist/commands/inbox.js.map +1 -0
  44. package/dist/commands/key-import.d.ts +6 -0
  45. package/dist/commands/key-import.d.ts.map +1 -0
  46. package/dist/commands/key-import.js +31 -0
  47. package/dist/commands/key-import.js.map +1 -0
  48. package/dist/commands/keygen.d.ts +6 -0
  49. package/dist/commands/keygen.d.ts.map +1 -0
  50. package/dist/commands/keygen.js +33 -0
  51. package/dist/commands/keygen.js.map +1 -0
  52. package/dist/commands/keys.d.ts +6 -0
  53. package/dist/commands/keys.d.ts.map +1 -0
  54. package/dist/commands/keys.js +47 -0
  55. package/dist/commands/keys.js.map +1 -0
  56. package/dist/commands/read.d.ts +6 -0
  57. package/dist/commands/read.d.ts.map +1 -0
  58. package/dist/commands/read.js +89 -0
  59. package/dist/commands/read.js.map +1 -0
  60. package/dist/commands/send.d.ts +8 -0
  61. package/dist/commands/send.d.ts.map +1 -0
  62. package/dist/commands/send.js +73 -0
  63. package/dist/commands/send.js.map +1 -0
  64. package/dist/commands/watch.d.ts +8 -0
  65. package/dist/commands/watch.d.ts.map +1 -0
  66. package/dist/commands/watch.js +88 -0
  67. package/dist/commands/watch.js.map +1 -0
  68. package/dist/dashboard/public/app.js +523 -0
  69. package/dist/dashboard/public/index.html +75 -0
  70. package/dist/dashboard/public/styles.css +68 -0
  71. package/dist/dashboard/routes.d.ts +3 -0
  72. package/dist/dashboard/routes.d.ts.map +1 -0
  73. package/dist/dashboard/routes.js +103 -0
  74. package/dist/dashboard/routes.js.map +1 -0
  75. package/dist/dashboard/server.d.ts +3 -0
  76. package/dist/dashboard/server.d.ts.map +1 -0
  77. package/dist/dashboard/server.js +29 -0
  78. package/dist/dashboard/server.js.map +1 -0
  79. package/dist/lib/config.d.ts +28 -0
  80. package/dist/lib/config.d.ts.map +1 -0
  81. package/dist/lib/config.js +90 -0
  82. package/dist/lib/config.js.map +1 -0
  83. package/dist/lib/crypto.d.ts +72 -0
  84. package/dist/lib/crypto.d.ts.map +1 -0
  85. package/dist/lib/crypto.js +169 -0
  86. package/dist/lib/crypto.js.map +1 -0
  87. package/dist/lib/realtime.d.ts +36 -0
  88. package/dist/lib/realtime.d.ts.map +1 -0
  89. package/dist/lib/realtime.js +73 -0
  90. package/dist/lib/realtime.js.map +1 -0
  91. package/dist/storage/local.d.ts +46 -0
  92. package/dist/storage/local.d.ts.map +1 -0
  93. package/dist/storage/local.js +160 -0
  94. package/dist/storage/local.js.map +1 -0
  95. package/dist/storage/supabase.d.ts +43 -0
  96. package/dist/storage/supabase.d.ts.map +1 -0
  97. package/dist/storage/supabase.js +256 -0
  98. package/dist/storage/supabase.js.map +1 -0
  99. package/dist/types/index.d.ts +48 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +5 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/docs/20251215_Treebird-Ecosystem_Knowledge-Base_v2.md +292 -0
  104. package/docs/20251215_Treebird-Ecosystem_Project-Instructions_v2.md +176 -0
  105. package/docs/AGENT_DELEGATION_WORKFLOW.md +453 -0
  106. package/docs/AGENT_STARTER_KIT.md +145 -0
  107. package/docs/ANNOUNCEMENT_DRAFTS.md +55 -0
  108. package/docs/DASHBOARD_AGENT_HANDOFF.md +429 -0
  109. package/docs/DASHBOARD_AGENT_PROMPT.md +32 -0
  110. package/docs/DASHBOARD_BUILD_ROADMAP.md +61 -0
  111. package/docs/DEPLOYMENT.md +59 -0
  112. package/docs/MCP_PUBLISHING_ROADMAP.md +113 -0
  113. package/docs/MCP_STARTER_KIT.md +117 -0
  114. package/docs/SSAN_MESSAGES_SUMMARY.md +92 -0
  115. package/docs/STORAGE_ARCHITECTURE.md +114 -0
  116. package/mcp-server/README.md +143 -0
  117. package/mcp-server/assets/icon.png +0 -0
  118. package/mcp-server/myceliumail-mcp-1.0.0.tgz +0 -0
  119. package/mcp-server/package-lock.json +1142 -0
  120. package/mcp-server/package.json +49 -0
  121. package/mcp-server/src/lib/config.ts +21 -0
  122. package/mcp-server/src/lib/crypto.ts +150 -0
  123. package/mcp-server/src/lib/storage.ts +257 -0
  124. package/mcp-server/src/server.ts +387 -0
  125. package/mcp-server/tsconfig.json +26 -0
  126. package/package.json +54 -0
  127. package/src/bin/myceliumail.ts +52 -0
  128. package/src/commands/broadcast.ts +70 -0
  129. package/src/commands/dashboard.ts +19 -0
  130. package/src/commands/inbox.ts +75 -0
  131. package/src/commands/key-import.ts +35 -0
  132. package/src/commands/keygen.ts +44 -0
  133. package/src/commands/keys.ts +55 -0
  134. package/src/commands/read.ts +97 -0
  135. package/src/commands/send.ts +89 -0
  136. package/src/commands/watch.ts +101 -0
  137. package/src/dashboard/public/app.js +523 -0
  138. package/src/dashboard/public/index.html +75 -0
  139. package/src/dashboard/public/styles.css +68 -0
  140. package/src/dashboard/routes.ts +128 -0
  141. package/src/dashboard/server.ts +33 -0
  142. package/src/lib/config.ts +104 -0
  143. package/src/lib/crypto.ts +210 -0
  144. package/src/lib/realtime.ts +109 -0
  145. package/src/storage/local.ts +209 -0
  146. package/src/storage/supabase.ts +336 -0
  147. package/src/types/index.ts +53 -0
  148. package/supabase/migrations/000_myceliumail_setup.sql +93 -0
  149. package/supabase/migrations/001_enable_realtime.sql +10 -0
  150. package/tsconfig.json +28 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Local JSON Storage Adapter
3
+ *
4
+ * Stores messages in a local JSON file for offline/testing use.
5
+ */
6
+ import type { Message, InboxOptions } from '../types/index.js';
7
+ /**
8
+ * Send a message (store locally)
9
+ */
10
+ export declare function sendMessage(sender: string, recipient: string | string[], subject: string, body: string, options?: {
11
+ encrypted?: boolean;
12
+ ciphertext?: string;
13
+ nonce?: string;
14
+ senderPublicKey?: string;
15
+ attachments?: {
16
+ name: string;
17
+ type: string;
18
+ data: string;
19
+ size: number;
20
+ }[];
21
+ }): Promise<Message>;
22
+ /**
23
+ * Get inbox messages for an agent (use 'all' for all messages)
24
+ */
25
+ export declare function getInbox(agentId: string, options?: InboxOptions): Promise<Message[]>;
26
+ /**
27
+ * Get a specific message by ID
28
+ */
29
+ export declare function getMessage(id: string): Promise<Message | null>;
30
+ /**
31
+ * Mark message as read by an agent
32
+ */
33
+ export declare function markAsRead(id: string, agentId?: string): Promise<boolean>;
34
+ /**
35
+ * Delete a message
36
+ */
37
+ export declare function deleteMessage(id: string): Promise<boolean>;
38
+ /**
39
+ * Archive a message
40
+ */
41
+ export declare function archiveMessage(id: string): Promise<boolean>;
42
+ /**
43
+ * Get sent messages
44
+ */
45
+ export declare function getSent(agentId: string, limit?: number): Promise<Message[]>;
46
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgD/D;;GAEG;AACH,wBAAsB,WAAW,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACN,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9E,GACF,OAAO,CAAC,OAAO,CAAC,CA4BlB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAuB1F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAIpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB/E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQjE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAcjF"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Local JSON Storage Adapter
3
+ *
4
+ * Stores messages in a local JSON file for offline/testing use.
5
+ */
6
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { homedir } from 'os';
9
+ import { randomUUID } from 'crypto';
10
+ const DATA_DIR = join(homedir(), '.myceliumail', 'data');
11
+ const MESSAGES_FILE = join(DATA_DIR, 'messages.json');
12
+ /**
13
+ * Ensure data directory exists
14
+ */
15
+ function ensureDataDir() {
16
+ if (!existsSync(DATA_DIR)) {
17
+ mkdirSync(DATA_DIR, { recursive: true });
18
+ }
19
+ }
20
+ /**
21
+ * Load all messages from storage
22
+ */
23
+ function loadMessages() {
24
+ if (!existsSync(MESSAGES_FILE))
25
+ return [];
26
+ try {
27
+ return JSON.parse(readFileSync(MESSAGES_FILE, 'utf-8'));
28
+ }
29
+ catch {
30
+ return [];
31
+ }
32
+ }
33
+ /**
34
+ * Save messages to storage
35
+ */
36
+ function saveMessages(messages) {
37
+ ensureDataDir();
38
+ writeFileSync(MESSAGES_FILE, JSON.stringify(messages, null, 2));
39
+ }
40
+ /**
41
+ * Convert stored message to Message type
42
+ */
43
+ function toMessage(stored) {
44
+ return {
45
+ ...stored,
46
+ createdAt: new Date(stored.createdAt),
47
+ };
48
+ }
49
+ /**
50
+ * Send a message (store locally)
51
+ */
52
+ export async function sendMessage(sender, recipient, subject, body, options) {
53
+ const messages = loadMessages();
54
+ // Handle multi-recipient
55
+ const recipientList = Array.isArray(recipient) ? recipient : [recipient];
56
+ const primaryRecipient = recipientList[0];
57
+ const newMessage = {
58
+ id: randomUUID(),
59
+ sender,
60
+ recipient: primaryRecipient,
61
+ recipients: recipientList.length > 1 ? recipientList : undefined,
62
+ subject: options?.encrypted ? '' : subject,
63
+ body: options?.encrypted ? '' : body,
64
+ encrypted: options?.encrypted || false,
65
+ ciphertext: options?.ciphertext,
66
+ nonce: options?.nonce,
67
+ senderPublicKey: options?.senderPublicKey,
68
+ attachments: options?.attachments,
69
+ read: false,
70
+ archived: false,
71
+ createdAt: new Date().toISOString(),
72
+ };
73
+ messages.push(newMessage);
74
+ saveMessages(messages);
75
+ return toMessage(newMessage);
76
+ }
77
+ /**
78
+ * Get inbox messages for an agent (use 'all' for all messages)
79
+ */
80
+ export async function getInbox(agentId, options) {
81
+ const messages = loadMessages();
82
+ let filtered = agentId === 'all'
83
+ ? messages.filter(m => !m.archived)
84
+ : messages.filter(m => (m.recipient === agentId || m.recipients?.includes(agentId)) && !m.archived);
85
+ if (options?.unreadOnly) {
86
+ filtered = filtered.filter(m => !m.read);
87
+ }
88
+ // Sort by date descending (newest first)
89
+ filtered.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
90
+ if (options?.limit) {
91
+ filtered = filtered.slice(0, options.limit);
92
+ }
93
+ return filtered.map(toMessage);
94
+ }
95
+ /**
96
+ * Get a specific message by ID
97
+ */
98
+ export async function getMessage(id) {
99
+ const messages = loadMessages();
100
+ const found = messages.find(m => m.id === id);
101
+ return found ? toMessage(found) : null;
102
+ }
103
+ /**
104
+ * Mark message as read by an agent
105
+ */
106
+ export async function markAsRead(id, agentId) {
107
+ const messages = loadMessages();
108
+ const index = messages.findIndex(m => m.id === id);
109
+ if (index === -1)
110
+ return false;
111
+ // Initialize readBy if not present
112
+ if (!messages[index].readBy) {
113
+ messages[index].readBy = [];
114
+ }
115
+ // Add agent to readBy if provided and not already there
116
+ if (agentId && !messages[index].readBy.includes(agentId)) {
117
+ messages[index].readBy.push(agentId);
118
+ }
119
+ // Legacy compat
120
+ messages[index].read = true;
121
+ saveMessages(messages);
122
+ return true;
123
+ }
124
+ /**
125
+ * Delete a message
126
+ */
127
+ export async function deleteMessage(id) {
128
+ const messages = loadMessages();
129
+ const index = messages.findIndex(m => m.id === id);
130
+ if (index === -1)
131
+ return false;
132
+ messages.splice(index, 1);
133
+ saveMessages(messages);
134
+ return true;
135
+ }
136
+ /**
137
+ * Archive a message
138
+ */
139
+ export async function archiveMessage(id) {
140
+ const messages = loadMessages();
141
+ const index = messages.findIndex(m => m.id === id);
142
+ if (index === -1)
143
+ return false;
144
+ messages[index].archived = true;
145
+ saveMessages(messages);
146
+ return true;
147
+ }
148
+ /**
149
+ * Get sent messages
150
+ */
151
+ export async function getSent(agentId, limit) {
152
+ const messages = loadMessages();
153
+ let filtered = messages.filter(m => m.sender === agentId);
154
+ filtered.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
155
+ if (limit) {
156
+ filtered = filtered.slice(0, limit);
157
+ }
158
+ return filtered.map(toMessage);
159
+ }
160
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Supabase Storage Adapter
3
+ *
4
+ * Stores messages in Supabase PostgreSQL for cloud sync.
5
+ * Falls back to local storage if Supabase is not configured.
6
+ */
7
+ import type { Message, InboxOptions } from '../types/index.js';
8
+ /**
9
+ * Send a message via Supabase
10
+ */
11
+ export declare function sendMessage(sender: string, recipient: string | string[], subject: string, body: string, options?: {
12
+ encrypted?: boolean;
13
+ ciphertext?: string;
14
+ nonce?: string;
15
+ senderPublicKey?: string;
16
+ attachments?: {
17
+ name: string;
18
+ type: string;
19
+ data: string;
20
+ size: number;
21
+ }[];
22
+ }): Promise<Message>;
23
+ /**
24
+ * Get inbox messages from Supabase
25
+ */
26
+ export declare function getInbox(agentId: string, options?: InboxOptions): Promise<Message[]>;
27
+ /**
28
+ * Get a specific message
29
+ */
30
+ export declare function getMessage(id: string): Promise<Message | null>;
31
+ /**
32
+ * Mark message as read
33
+ */
34
+ export declare function markAsRead(id: string, agentId?: string): Promise<boolean>;
35
+ /**
36
+ * Archive a message
37
+ */
38
+ export declare function archiveMessage(id: string): Promise<boolean>;
39
+ /**
40
+ * Delete a message
41
+ */
42
+ export declare function deleteMessage(id: string): Promise<boolean>;
43
+ //# sourceMappingURL=supabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/storage/supabase.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA2E/D;;GAEG;AACH,wBAAsB,WAAW,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACN,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9E,GACF,OAAO,CAAC,OAAO,CAAC,CA8DlB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAuD1F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAgDpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB/E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBjE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAehE"}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Supabase Storage Adapter
3
+ *
4
+ * Stores messages in Supabase PostgreSQL for cloud sync.
5
+ * Falls back to local storage if Supabase is not configured.
6
+ */
7
+ import { loadConfig, hasSupabaseConfig } from '../lib/config.js';
8
+ import * as local from './local.js';
9
+ function createClient() {
10
+ const config = loadConfig();
11
+ // Force local storage if mode is 'local'
12
+ if (config.storageMode === 'local') {
13
+ return null;
14
+ }
15
+ // Check if Supabase is configured
16
+ if (!hasSupabaseConfig(config)) {
17
+ // Error if mode is 'supabase' but not configured
18
+ if (config.storageMode === 'supabase') {
19
+ console.error('❌ MYCELIUMAIL_STORAGE=supabase but Supabase not configured!');
20
+ console.error(' Set SUPABASE_URL and SUPABASE_ANON_KEY environment variables.');
21
+ }
22
+ return null;
23
+ }
24
+ return {
25
+ url: config.supabaseUrl,
26
+ key: config.supabaseKey,
27
+ };
28
+ }
29
+ async function supabaseRequest(client, path, options = {}) {
30
+ const url = `${client.url}/rest/v1${path}`;
31
+ // Create abort controller for timeout
32
+ const controller = new AbortController();
33
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
34
+ try {
35
+ const response = await fetch(url, {
36
+ ...options,
37
+ signal: controller.signal,
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ 'apikey': client.key,
41
+ 'Authorization': `Bearer ${client.key}`,
42
+ 'Prefer': options.method === 'POST' ? 'return=representation' : 'return=minimal',
43
+ ...options.headers,
44
+ },
45
+ });
46
+ clearTimeout(timeoutId);
47
+ if (!response.ok) {
48
+ const error = await response.text();
49
+ throw new Error(`Supabase error: ${error}`);
50
+ }
51
+ if (response.status === 204)
52
+ return {};
53
+ return response.json();
54
+ }
55
+ catch (error) {
56
+ clearTimeout(timeoutId);
57
+ if (error instanceof Error && error.name === 'AbortError') {
58
+ throw new Error('Supabase request timed out after 10 seconds');
59
+ }
60
+ throw error;
61
+ }
62
+ }
63
+ /**
64
+ * Send a message via Supabase
65
+ */
66
+ export async function sendMessage(sender, recipient, subject, body, options) {
67
+ const client = createClient();
68
+ // Fall back to local if no Supabase
69
+ if (!client) {
70
+ return local.sendMessage(sender, recipient, subject, body, options);
71
+ }
72
+ const payload = {
73
+ from_agent: sender,
74
+ to_agent: recipient,
75
+ subject: options?.encrypted ? '🔒 [Encrypted Message]' : subject,
76
+ message: options?.encrypted ? JSON.stringify({
77
+ ciphertext: options?.ciphertext,
78
+ nonce: options?.nonce,
79
+ sender_public_key: options?.senderPublicKey,
80
+ }) : body,
81
+ encrypted: options?.encrypted || false,
82
+ };
83
+ const [result] = await supabaseRequest(client, '/agent_messages', {
84
+ method: 'POST',
85
+ body: JSON.stringify(payload),
86
+ });
87
+ // Parse encrypted message if needed
88
+ let parsedMessage = result.message;
89
+ let ciphertext, nonce, senderPublicKey;
90
+ if (result.encrypted && result.message) {
91
+ try {
92
+ const encrypted = JSON.parse(result.message);
93
+ ciphertext = encrypted.ciphertext;
94
+ nonce = encrypted.nonce;
95
+ senderPublicKey = encrypted.sender_public_key;
96
+ }
97
+ catch {
98
+ // Not JSON, treat as plaintext
99
+ }
100
+ }
101
+ return {
102
+ id: result.id,
103
+ sender: result.from_agent,
104
+ recipient: result.to_agent,
105
+ subject: result.subject || '',
106
+ body: result.encrypted ? '' : result.message,
107
+ encrypted: result.encrypted,
108
+ ciphertext,
109
+ nonce,
110
+ senderPublicKey,
111
+ read: result.read,
112
+ archived: false, // Not in response
113
+ createdAt: new Date(result.created_at),
114
+ };
115
+ }
116
+ /**
117
+ * Get inbox messages from Supabase
118
+ */
119
+ export async function getInbox(agentId, options) {
120
+ const client = createClient();
121
+ if (!client) {
122
+ return local.getInbox(agentId, options);
123
+ }
124
+ let query = `/agent_messages?to_agent=eq.${agentId}&order=created_at.desc`;
125
+ if (options?.unreadOnly) {
126
+ query += '&read=eq.false';
127
+ }
128
+ if (options?.limit) {
129
+ query += `&limit=${options.limit}`;
130
+ }
131
+ const results = await supabaseRequest(client, query);
132
+ return results.map(r => {
133
+ // Parse encrypted message
134
+ let ciphertext, nonce, senderPublicKey, body = r.message;
135
+ if (r.encrypted && r.message) {
136
+ try {
137
+ const enc = JSON.parse(r.message);
138
+ ciphertext = enc.ciphertext;
139
+ nonce = enc.nonce;
140
+ senderPublicKey = enc.sender_public_key;
141
+ body = '';
142
+ }
143
+ catch { }
144
+ }
145
+ return {
146
+ id: r.id,
147
+ sender: r.from_agent,
148
+ recipient: r.to_agent,
149
+ subject: r.subject || '',
150
+ body,
151
+ encrypted: r.encrypted,
152
+ ciphertext,
153
+ nonce,
154
+ senderPublicKey,
155
+ read: r.read,
156
+ archived: false,
157
+ createdAt: new Date(r.created_at),
158
+ };
159
+ });
160
+ }
161
+ /**
162
+ * Get a specific message
163
+ */
164
+ export async function getMessage(id) {
165
+ const client = createClient();
166
+ if (!client) {
167
+ return local.getMessage(id);
168
+ }
169
+ const results = await supabaseRequest(client, `/agent_messages?id=eq.${id}`);
170
+ if (results.length === 0)
171
+ return null;
172
+ const r = results[0];
173
+ // Parse encrypted message
174
+ let ciphertext, nonce, senderPublicKey, body = r.message;
175
+ if (r.encrypted && r.message) {
176
+ try {
177
+ const enc = JSON.parse(r.message);
178
+ ciphertext = enc.ciphertext;
179
+ nonce = enc.nonce;
180
+ senderPublicKey = enc.sender_public_key;
181
+ body = '';
182
+ }
183
+ catch { }
184
+ }
185
+ return {
186
+ id: r.id,
187
+ sender: r.from_agent,
188
+ recipient: r.to_agent,
189
+ subject: r.subject || '',
190
+ body,
191
+ encrypted: r.encrypted,
192
+ ciphertext,
193
+ nonce,
194
+ senderPublicKey,
195
+ read: r.read,
196
+ archived: false,
197
+ createdAt: new Date(r.created_at),
198
+ };
199
+ }
200
+ /**
201
+ * Mark message as read
202
+ */
203
+ export async function markAsRead(id, agentId) {
204
+ const client = createClient();
205
+ if (!client) {
206
+ return local.markAsRead(id, agentId);
207
+ }
208
+ try {
209
+ await supabaseRequest(client, `/agent_messages?id=eq.${id}`, {
210
+ method: 'PATCH',
211
+ body: JSON.stringify({ read: true }),
212
+ });
213
+ return true;
214
+ }
215
+ catch {
216
+ return false;
217
+ }
218
+ }
219
+ /**
220
+ * Archive a message
221
+ */
222
+ export async function archiveMessage(id) {
223
+ const client = createClient();
224
+ if (!client) {
225
+ return local.archiveMessage(id);
226
+ }
227
+ try {
228
+ await supabaseRequest(client, `/agent_messages?id=eq.${id}`, {
229
+ method: 'PATCH',
230
+ body: JSON.stringify({ archived: true }),
231
+ });
232
+ return true;
233
+ }
234
+ catch {
235
+ return false;
236
+ }
237
+ }
238
+ /**
239
+ * Delete a message
240
+ */
241
+ export async function deleteMessage(id) {
242
+ const client = createClient();
243
+ if (!client) {
244
+ return local.deleteMessage(id);
245
+ }
246
+ try {
247
+ await supabaseRequest(client, `/agent_messages?id=eq.${id}`, {
248
+ method: 'DELETE',
249
+ });
250
+ return true;
251
+ }
252
+ catch {
253
+ return false;
254
+ }
255
+ }
256
+ //# sourceMappingURL=supabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../src/storage/supabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Myceliumail Type Definitions
3
+ */
4
+ export interface Attachment {
5
+ name: string;
6
+ type: string;
7
+ data: string;
8
+ size: number;
9
+ }
10
+ export interface Message {
11
+ id: string;
12
+ sender: string;
13
+ recipient: string;
14
+ recipients?: string[];
15
+ subject: string;
16
+ body: string;
17
+ encrypted: boolean;
18
+ ciphertext?: string;
19
+ nonce?: string;
20
+ senderPublicKey?: string;
21
+ read?: boolean;
22
+ readBy?: string[];
23
+ archived: boolean;
24
+ attachments?: Attachment[];
25
+ createdAt: Date;
26
+ }
27
+ export interface Channel {
28
+ name: string;
29
+ description?: string;
30
+ isPublic: boolean;
31
+ createdBy: string;
32
+ createdAt: Date;
33
+ }
34
+ export interface Agent {
35
+ id: string;
36
+ publicKey?: string;
37
+ status?: string;
38
+ lastSeen?: Date;
39
+ }
40
+ export interface SendOptions {
41
+ encrypt?: boolean;
42
+ priority?: 'low' | 'normal' | 'high' | 'urgent';
43
+ }
44
+ export interface InboxOptions {
45
+ unreadOnly?: boolean;
46
+ limit?: number;
47
+ }
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Myceliumail Type Definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}