pelagora 0.1.8 → 0.2.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 (71) hide show
  1. package/CHANGELOG.md +45 -4
  2. package/dist/api/conversations.d.ts +3 -0
  3. package/dist/api/conversations.d.ts.map +1 -0
  4. package/dist/api/conversations.js +294 -0
  5. package/dist/api/conversations.js.map +1 -0
  6. package/dist/api/index.d.ts +1 -1
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +70 -4
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/media.d.ts.map +1 -1
  11. package/dist/api/media.js +13 -2
  12. package/dist/api/media.js.map +1 -1
  13. package/dist/api/negotiations.d.ts.map +1 -1
  14. package/dist/api/negotiations.js +57 -6
  15. package/dist/api/negotiations.js.map +1 -1
  16. package/dist/api/refs.d.ts.map +1 -1
  17. package/dist/api/refs.js +55 -4
  18. package/dist/api/refs.js.map +1 -1
  19. package/dist/api/scans.d.ts.map +1 -1
  20. package/dist/api/scans.js +5 -1
  21. package/dist/api/scans.js.map +1 -1
  22. package/dist/api/settings.d.ts.map +1 -1
  23. package/dist/api/settings.js +115 -2
  24. package/dist/api/settings.js.map +1 -1
  25. package/dist/db/conversation-queries.d.ts +57 -0
  26. package/dist/db/conversation-queries.d.ts.map +1 -0
  27. package/dist/db/conversation-queries.js +152 -0
  28. package/dist/db/conversation-queries.js.map +1 -0
  29. package/dist/db/queries.d.ts +3 -0
  30. package/dist/db/queries.d.ts.map +1 -1
  31. package/dist/db/queries.js +42 -6
  32. package/dist/db/queries.js.map +1 -1
  33. package/dist/db/schema.d.ts.map +1 -1
  34. package/dist/db/schema.js +96 -0
  35. package/dist/db/schema.js.map +1 -1
  36. package/dist/dht/discovery.d.ts +29 -1
  37. package/dist/dht/discovery.d.ts.map +1 -1
  38. package/dist/dht/discovery.js +93 -0
  39. package/dist/dht/discovery.js.map +1 -1
  40. package/dist/index.js +93 -6
  41. package/dist/index.js.map +1 -1
  42. package/dist/skills/loader.d.ts +1 -1
  43. package/dist/skills/loader.js +6 -6
  44. package/dist/skills/loader.js.map +1 -1
  45. package/dist/sync/conversation-poller.d.ts +19 -0
  46. package/dist/sync/conversation-poller.d.ts.map +1 -0
  47. package/dist/sync/conversation-poller.js +112 -0
  48. package/dist/sync/conversation-poller.js.map +1 -0
  49. package/dist/sync/index.d.ts +29 -0
  50. package/dist/sync/index.d.ts.map +1 -1
  51. package/dist/sync/index.js +82 -7
  52. package/dist/sync/index.js.map +1 -1
  53. package/dist/sync/negotiation-poller.d.ts +17 -0
  54. package/dist/sync/negotiation-poller.d.ts.map +1 -0
  55. package/dist/sync/negotiation-poller.js +63 -0
  56. package/dist/sync/negotiation-poller.js.map +1 -0
  57. package/dist/sync/network-publisher.d.ts +76 -0
  58. package/dist/sync/network-publisher.d.ts.map +1 -0
  59. package/dist/sync/network-publisher.js +302 -0
  60. package/dist/sync/network-publisher.js.map +1 -0
  61. package/dist/sync/reffo-client.d.ts +12 -0
  62. package/dist/sync/reffo-client.d.ts.map +1 -1
  63. package/dist/sync/reffo-client.js +16 -0
  64. package/dist/sync/reffo-client.js.map +1 -1
  65. package/dist/ui.d.ts +1 -1
  66. package/dist/ui.d.ts.map +1 -1
  67. package/dist/ui.js +2111 -1224
  68. package/dist/ui.js.map +1 -1
  69. package/favicon.ico +0 -0
  70. package/footer-brand.png +0 -0
  71. package/package.json +9 -4
package/CHANGELOG.md CHANGED
@@ -6,14 +6,55 @@ This project follows [Keep a Changelog](https://keepachangelog.com/) and [Semant
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ > **Note:** Versions 0.1.1–0.1.8 were published to npm but not documented here. Entries below cover all changes since 0.1.0.
10
+
11
+ ### Added
12
+ - Network publishing: auto-mirror public items to reffo.ai
13
+ - Email-style Inbox unifying Negotiations + Messages with reply mechanism
14
+ - Currency formatting and offer delivery via heartbeat
15
+ - Bidirectional sync: pull refs from Reffo.ai during heartbeat
16
+ - Sync modal with "Make me sell" for willing_to_sell listings
17
+ - AI suggested image card in create and detail views
18
+ - Resolved and Archived tabs for negotiations with bell links
19
+ - Scan-to-list, collections, and barcode features (webapp parity)
20
+ - AI product lookup for all listing statuses
21
+ - Home landing page tab with hero, search, and listings grid
22
+ - AI Quick Start feature for beacon dashboard and sidebar
23
+ - Bulk status updates, multi-select, and dashboard admin view
24
+ - Smart Listing Autofill (multi-provider AI product lookup)
25
+ - Skills plugin system with reverse auction skill
26
+ - Reffo.ai search alongside DHT peers with source filter
27
+ - Favorites feature and auto-update notification system
28
+ - Input sanitization on all API and DHT boundaries
29
+ - Support page with contact form via Resend
30
+ - Card/row layout toggle and Airbnb-style image lightbox gallery
31
+ - Profile picture upload to beacon settings
32
+ - "Link to Reffo.ai" button in header when no API key
33
+ - Legal pages and expanded dropdown menu
34
+
9
35
  ### Changed
10
- - Restyle Settings page to match webapp Account page (scoped `.settings-card` CSS)
36
+ - Rebrand: reffo-beacon pelagora throughout (DB path, DHT topic, launchers, package name, imports, CI)
37
+ - Rebrand node UI to match official Pelagora brand system
38
+ - Restyle Settings page to match webapp Account page
11
39
  - Show promo card in settings when no API key, hide controls when connected
12
- - Add "Link to Reffo.ai" button in header when no API key configured
13
- - Add profile picture upload to beacon settings
40
+ - Switch sidebar to position:fixed with independent scroll
41
+ - Set heartbeat interval to 1 minute for production
42
+ - Overhaul category taxonomy: 15 categories, 97 subcategories, 32 schemas
43
+ - Update footer: Pelagora logo, sidebar overlap fix, white card background
44
+ - Show recent listings as single non-wrapping card row
45
+ - Remove version from release bundle filename for stable download URLs
46
+ - Pre-launch polish: tiered media limits, hide video, AI improvements
14
47
 
15
48
  ### Fixed
16
- - Nothing yet
49
+ - Reorder sidebar: actions and search network to top, AI quickstart above settings
50
+ - Link dashboard stat cards to their respective pages
51
+ - SyntaxError in onclick handlers (escapeJs instead of escapeHtml)
52
+ - Fix escapeJs regex escaping for template literal context
53
+ - Show "Free" for zero-price listings, confirm before publishing with no price
54
+ - Send price: 0 instead of undefined for items with no active offer
55
+ - Hide sidebar scrollbar while keeping scroll functionality
56
+ - Archive UI refresh and auto-download AI product images
57
+ - Remove font-family from JS string-concatenated inline styles
17
58
 
18
59
  ## [0.1.0] - 2026-02-18
19
60
 
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=conversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/api/conversations.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuTxB,eAAe,MAAM,CAAC"}
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const express_1 = require("express");
4
+ const conversation_queries_1 = require("../db/conversation-queries");
5
+ const pim_protocol_1 = require("@pelagora/pim-protocol");
6
+ const router = (0, express_1.Router)();
7
+ // GET /conversations?role=buyer|seller|closed
8
+ router.get('/', (req, res) => {
9
+ const conversations = new conversation_queries_1.ConversationQueries();
10
+ const role = String(req.query.role || '');
11
+ const validRoles = ['buyer', 'seller', 'closed'];
12
+ const list = conversations.list(validRoles.includes(role) ? role : undefined);
13
+ res.json(list);
14
+ });
15
+ // GET /conversations/:id — get with all messages
16
+ router.get('/:id', (req, res) => {
17
+ const conversations = new conversation_queries_1.ConversationQueries();
18
+ const conv = conversations.get(String(req.params.id));
19
+ if (!conv)
20
+ return res.status(404).json({ error: 'Conversation not found' });
21
+ const messages = conversations.getMessages(conv.id);
22
+ res.json({ ...conv, messages });
23
+ });
24
+ // GET /conversations/:id/messages — get messages for a conversation
25
+ router.get('/:id/messages', (req, res) => {
26
+ const conversations = new conversation_queries_1.ConversationQueries();
27
+ const conv = conversations.get(String(req.params.id));
28
+ if (!conv)
29
+ return res.status(404).json({ error: 'Conversation not found' });
30
+ const messages = conversations.getMessages(conv.id);
31
+ res.json(messages);
32
+ });
33
+ // POST /conversations — buyer creates conversation + first message
34
+ router.post('/', async (req, res) => {
35
+ const conversations = new conversation_queries_1.ConversationQueries();
36
+ const beaconId = req.app.get('beaconId');
37
+ const dht = req.app.get('dht');
38
+ const syncManager = req.app.get('syncManager');
39
+ const { refId, refName, sellerBeaconId, messageType, content, amount, currency } = (0, pim_protocol_1.sanitizeObject)(req.body);
40
+ if (!refId || typeof refId !== 'string') {
41
+ return res.status(400).json({ error: 'refId is required' });
42
+ }
43
+ if (!sellerBeaconId || typeof sellerBeaconId !== 'string') {
44
+ return res.status(400).json({ error: 'sellerBeaconId is required' });
45
+ }
46
+ if (!messageType || typeof messageType !== 'string') {
47
+ return res.status(400).json({ error: 'messageType is required' });
48
+ }
49
+ if (beaconId === sellerBeaconId) {
50
+ return res.status(400).json({ error: 'Cannot message yourself' });
51
+ }
52
+ // Create or get existing conversation
53
+ const conversation = conversations.getOrCreate(refId, refName || '', sellerBeaconId, 'buyer');
54
+ // Add first message
55
+ const message = conversations.addMessage({
56
+ conversationId: conversation.id,
57
+ senderBeaconId: beaconId,
58
+ messageType: messageType,
59
+ content: content || undefined,
60
+ amount: typeof amount === 'number' ? amount : undefined,
61
+ currency: currency || undefined,
62
+ });
63
+ let deliveredVia = 'none';
64
+ // Try to send via DHT first
65
+ if (dht) {
66
+ const sent = dht.sendToPeer(sellerBeaconId, {
67
+ type: 'chat_message',
68
+ beaconId,
69
+ payload: {
70
+ conversationId: conversation.id,
71
+ messageId: message.id,
72
+ refId,
73
+ refName: refName || '',
74
+ messageType,
75
+ content: content || '',
76
+ amount: typeof amount === 'number' ? amount : undefined,
77
+ currency: currency || undefined,
78
+ },
79
+ });
80
+ if (sent) {
81
+ deliveredVia = 'dht';
82
+ }
83
+ }
84
+ // If DHT delivery failed, try SyncManager fallback
85
+ if (deliveredVia === 'none' && syncManager) {
86
+ try {
87
+ const result = await syncManager.pushConversationMessage({
88
+ conversationId: conversation.id,
89
+ messageId: message.id,
90
+ refId,
91
+ refName: refName || '',
92
+ buyerBeaconId: beaconId,
93
+ messageType,
94
+ content: content || '',
95
+ amount: typeof amount === 'number' ? amount : undefined,
96
+ currency: currency || undefined,
97
+ });
98
+ if (result.ok) {
99
+ deliveredVia = 'webapp';
100
+ }
101
+ }
102
+ catch {
103
+ // SyncManager fallback failed
104
+ }
105
+ }
106
+ // If SyncManager fallback didn't work, try direct HTTP to webapp
107
+ if (deliveredVia === 'none') {
108
+ const reffoUrl = (process.env.REFFO_API_URL || process.env.REFFO_WEBAPP_URL || 'https://reffo.ai').replace(/\/$/, '');
109
+ try {
110
+ const resp = await fetch(`${reffoUrl}/api/network/conversations`, {
111
+ method: 'POST',
112
+ headers: { 'Content-Type': 'application/json' },
113
+ body: JSON.stringify({
114
+ conversationId: conversation.id,
115
+ messageId: message.id,
116
+ refId,
117
+ refName: refName || '',
118
+ buyerBeaconId: beaconId,
119
+ sellerBeaconId,
120
+ messageType,
121
+ content: content || '',
122
+ amount: typeof amount === 'number' ? amount : undefined,
123
+ currency: currency || undefined,
124
+ }),
125
+ });
126
+ if (resp.ok) {
127
+ deliveredVia = 'webapp';
128
+ }
129
+ }
130
+ catch {
131
+ // Direct HTTP failed too
132
+ }
133
+ }
134
+ res.status(201).json({ conversation, message, deliveredVia });
135
+ });
136
+ // POST /conversations/:id/messages — send message in existing conversation
137
+ router.post('/:id/messages', async (req, res) => {
138
+ const conversations = new conversation_queries_1.ConversationQueries();
139
+ const beaconId = req.app.get('beaconId');
140
+ const dht = req.app.get('dht');
141
+ const syncManager = req.app.get('syncManager');
142
+ const convId = String(req.params.id);
143
+ const conv = conversations.get(convId);
144
+ if (!conv)
145
+ return res.status(404).json({ error: 'Conversation not found' });
146
+ if (conv.status !== 'open')
147
+ return res.status(400).json({ error: 'Conversation is closed' });
148
+ const { messageType, content, amount, currency } = (0, pim_protocol_1.sanitizeObject)(req.body);
149
+ if (!messageType || typeof messageType !== 'string') {
150
+ return res.status(400).json({ error: 'messageType is required' });
151
+ }
152
+ // When seller accepts an offer, include next-steps guidance in the accept message
153
+ const nextStepsContent = messageType === 'accept'
154
+ ? (content || 'Offer accepted! Next steps: 1) Use this chat to exchange contact details or arrange a meet-up. 2) Agree on your preferred payment method. 3) Complete the exchange in person or ship the item. 4) Mark the item as "Sold" in your inventory.')
155
+ : (content || undefined);
156
+ const message = conversations.addMessage({
157
+ conversationId: convId,
158
+ senderBeaconId: beaconId,
159
+ messageType: messageType,
160
+ content: nextStepsContent,
161
+ amount: typeof amount === 'number' ? amount : undefined,
162
+ currency: currency || undefined,
163
+ });
164
+ // Send via DHT to counterpart
165
+ let deliveredVia = 'none';
166
+ if (dht) {
167
+ const sent = dht.sendToPeer(conv.counterpartBeaconId, {
168
+ type: 'chat_message',
169
+ beaconId,
170
+ payload: {
171
+ conversationId: convId,
172
+ messageId: message.id,
173
+ refId: conv.refId,
174
+ refName: conv.refName,
175
+ messageType,
176
+ content: content || '',
177
+ amount: typeof amount === 'number' ? amount : undefined,
178
+ currency: currency || undefined,
179
+ },
180
+ });
181
+ if (sent)
182
+ deliveredVia = 'dht';
183
+ }
184
+ // If DHT failed, try pushing to webapp
185
+ if (deliveredVia === 'none') {
186
+ const reffoUrl = (process.env.REFFO_WEBAPP_URL || process.env.REFFO_API_URL || 'https://reffo.ai').replace(/\/$/, '');
187
+ try {
188
+ const resp = await fetch(`${reffoUrl}/api/network/conversations`, {
189
+ method: 'POST',
190
+ headers: { 'Content-Type': 'application/json' },
191
+ body: JSON.stringify({
192
+ conversationId: convId,
193
+ messageId: message.id,
194
+ refId: conv.refId,
195
+ refName: conv.refName,
196
+ // If we're the seller, counterpart is the buyer; if we're the buyer, we are the buyer
197
+ buyerBeaconId: conv.role === 'seller' ? conv.counterpartBeaconId : beaconId,
198
+ sellerBeaconId: conv.role === 'seller' ? beaconId : conv.counterpartBeaconId,
199
+ senderBeaconId: beaconId,
200
+ messageType,
201
+ content: content || '',
202
+ amount: typeof amount === 'number' ? amount : undefined,
203
+ currency: currency || undefined,
204
+ }),
205
+ });
206
+ if (resp.ok)
207
+ deliveredVia = 'webapp';
208
+ }
209
+ catch {
210
+ // Direct HTTP failed
211
+ }
212
+ }
213
+ // Auto-reject pattern: if this is an 'accept' message, close other open conversations for the same ref
214
+ if (messageType === 'accept') {
215
+ const siblings = conversations.listForRef(conv.refId);
216
+ for (const sib of siblings) {
217
+ if (sib.id !== convId && sib.status === 'open') {
218
+ conversations.close(sib.id, beaconId);
219
+ // Add reject message to sibling conversation
220
+ conversations.addMessage({
221
+ conversationId: sib.id,
222
+ senderBeaconId: beaconId,
223
+ messageType: 'reject',
224
+ content: 'Another offer was accepted',
225
+ });
226
+ // Notify counterpart via DHT
227
+ if (dht) {
228
+ dht.sendToPeer(sib.counterpartBeaconId, {
229
+ type: 'chat_message',
230
+ beaconId,
231
+ payload: {
232
+ conversationId: sib.id,
233
+ refId: sib.refId,
234
+ refName: sib.refName,
235
+ messageType: 'reject',
236
+ content: 'Another offer was accepted',
237
+ },
238
+ });
239
+ }
240
+ // Push to webapp (fire-and-forget)
241
+ if (syncManager) {
242
+ syncManager.pushConversationMessage({
243
+ conversationId: sib.id,
244
+ messageId: '',
245
+ refId: sib.refId,
246
+ refName: sib.refName,
247
+ buyerBeaconId: sib.counterpartBeaconId,
248
+ messageType: 'reject',
249
+ content: 'Another offer was accepted',
250
+ }).catch(() => { });
251
+ }
252
+ }
253
+ }
254
+ }
255
+ res.status(201).json({ message, deliveredVia });
256
+ });
257
+ // PATCH /conversations/:id/close — close conversation
258
+ router.patch('/:id/close', (req, res) => {
259
+ const conversations = new conversation_queries_1.ConversationQueries();
260
+ const beaconId = req.app.get('beaconId');
261
+ const convId = String(req.params.id);
262
+ const conv = conversations.get(convId);
263
+ if (!conv)
264
+ return res.status(404).json({ error: 'Conversation not found' });
265
+ if (conv.status === 'closed')
266
+ return res.status(400).json({ error: 'Conversation is already closed' });
267
+ const closedReason = req.body?.closed_reason ? String(req.body.closed_reason).slice(0, 500) : undefined;
268
+ const updated = conversations.close(convId, beaconId, closedReason);
269
+ res.json(updated);
270
+ });
271
+ // PATCH /conversations/:id/reopen — reopen conversation
272
+ router.patch('/:id/reopen', (req, res) => {
273
+ const conversations = new conversation_queries_1.ConversationQueries();
274
+ const convId = String(req.params.id);
275
+ const conv = conversations.get(convId);
276
+ if (!conv)
277
+ return res.status(404).json({ error: 'Conversation not found' });
278
+ if (conv.status !== 'closed')
279
+ return res.status(400).json({ error: 'Conversation is not closed' });
280
+ const updated = conversations.reopen(convId);
281
+ res.json(updated);
282
+ });
283
+ // DELETE /conversations/:id — permanently delete
284
+ router.delete('/:id', (req, res) => {
285
+ const conversations = new conversation_queries_1.ConversationQueries();
286
+ const convId = String(req.params.id);
287
+ const conv = conversations.get(convId);
288
+ if (!conv)
289
+ return res.status(404).json({ error: 'Conversation not found' });
290
+ conversations.delete(convId);
291
+ res.json({ ok: true });
292
+ });
293
+ exports.default = router;
294
+ //# sourceMappingURL=conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/api/conversations.ts"],"names":[],"mappings":";;AAAA,qCAAoD;AACpD,qEAAiE;AAGjE,yDAAwD;AAKxD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,8CAA8C;AAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC9C,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACjD,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,oEAAoE;AACpE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC1D,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,mEAAmE;AACnE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACrD,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC;IACnD,MAAM,GAAG,GAA6B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAExE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5G,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAE9F,oBAAoB;IACpB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC;QACvC,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,WAA8B;QAC3C,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;KAChC,CAAC,CAAC;IAEH,IAAI,YAAY,GAAoB,MAAM,CAAC;IAE3C,4BAA4B;IAC5B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE;YAC1C,IAAI,EAAE,cAAc;YACpB,QAAQ;YACR,OAAO,EAAE;gBACP,cAAc,EAAE,YAAY,CAAC,EAAE;gBAC/B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,KAAK;gBACL,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,WAAW;gBACX,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;aAChC;SACF,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,YAAY,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC;gBACvD,cAAc,EAAE,YAAY,CAAC,EAAE;gBAC/B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,KAAK;gBACL,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,aAAa,EAAE,QAAQ;gBACvB,WAAW;gBACX,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;aAChC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,YAAY,GAAG,QAAQ,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,4BAA4B,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,cAAc,EAAE,YAAY,CAAC,EAAE;oBAC/B,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,KAAK;oBACL,OAAO,EAAE,OAAO,IAAI,EAAE;oBACtB,aAAa,EAAE,QAAQ;oBACvB,cAAc;oBACd,WAAW;oBACX,OAAO,EAAE,OAAO,IAAI,EAAE;oBACtB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oBACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;iBAChC,CAAC;aACH,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,YAAY,GAAG,QAAQ,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACjE,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC;IACnD,MAAM,GAAG,GAA6B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAE7F,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5E,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,WAAW,KAAK,QAAQ;QAC/C,CAAC,CAAC,CAAC,OAAO,IAAI,8OAA8O,CAAC;QAC7P,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC;QACvC,cAAc,EAAE,MAAM;QACtB,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,WAA8B;QAC3C,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;KAChC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,IAAI,YAAY,GAAoB,MAAM,CAAC;IAC3C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACpD,IAAI,EAAE,cAAc;YACpB,QAAQ;YACR,OAAO,EAAE;gBACP,cAAc,EAAE,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW;gBACX,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;aAChC;SACF,CAAC,CAAC;QACH,IAAI,IAAI;YAAE,YAAY,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,uCAAuC;IACvC,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,4BAA4B,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,cAAc,EAAE,MAAM;oBACtB,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,sFAAsF;oBACtF,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ;oBAC3E,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB;oBAC5E,cAAc,EAAE,QAAQ;oBACxB,WAAW;oBACX,OAAO,EAAE,OAAO,IAAI,EAAE;oBACtB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oBACvD,QAAQ,EAAE,QAAQ,IAAI,SAAS;iBAChC,CAAC;aACH,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,EAAE;gBAAE,YAAY,GAAG,QAAQ,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,uGAAuG;IACvG,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC/C,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACtC,6CAA6C;gBAC7C,aAAa,CAAC,UAAU,CAAC;oBACvB,cAAc,EAAE,GAAG,CAAC,EAAE;oBACtB,cAAc,EAAE,QAAQ;oBACxB,WAAW,EAAE,QAAQ;oBACrB,OAAO,EAAE,4BAA4B;iBACtC,CAAC,CAAC;gBACH,6BAA6B;gBAC7B,IAAI,GAAG,EAAE,CAAC;oBACR,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE;wBACtC,IAAI,EAAE,cAAc;wBACpB,QAAQ;wBACR,OAAO,EAAE;4BACP,cAAc,EAAE,GAAG,CAAC,EAAE;4BACtB,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,WAAW,EAAE,QAAQ;4BACrB,OAAO,EAAE,4BAA4B;yBACtC;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,mCAAmC;gBACnC,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,CAAC,uBAAuB,CAAC;wBAClC,cAAc,EAAE,GAAG,CAAC,EAAE;wBACtB,SAAS,EAAE,EAAE;wBACb,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,aAAa,EAAE,GAAG,CAAC,mBAAmB;wBACtC,WAAW,EAAE,QAAQ;wBACrB,OAAO,EAAE,4BAA4B;qBACtC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACzD,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;IAEvG,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACpE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,wDAAwD;AACxD,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC1D,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAEnG,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACpD,MAAM,aAAa,GAAG,IAAI,0CAAmB,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAE5E,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import express from 'express';
2
- export declare function createApp(): express.Express;
2
+ export declare function createApp(localToken?: string): express.Express;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,wBAAgB,SAAS,IAAI,OAAO,CAAC,OAAO,CAyC3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAe9B,wBAAgB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAyG9D"}
package/dist/api/index.js CHANGED
@@ -15,21 +15,82 @@ const settings_1 = __importDefault(require("./settings"));
15
15
  const favorites_1 = __importDefault(require("./favorites"));
16
16
  const collections_1 = __importDefault(require("./collections"));
17
17
  const scans_1 = __importDefault(require("./scans"));
18
+ const conversations_1 = __importDefault(require("./conversations"));
18
19
  const ui_1 = require("../ui");
19
20
  const taxonomy_1 = require("../taxonomy");
20
- function createApp() {
21
+ function createApp(localToken) {
21
22
  const app = (0, express_1.default)();
22
23
  app.use(express_1.default.json());
23
- // Allow cross-origin requests (so browsers can fetch media from peer beacons)
24
- app.use((_req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); next(); });
24
+ // --- Security: Host header validation (DNS rebinding protection) ---
25
+ app.use((req, res, next) => {
26
+ const host = (req.headers.host || '').replace(/:\d+$/, '');
27
+ if (host === 'localhost' || host === '127.0.0.1' || host === '[::1]' || host === '::1') {
28
+ return next();
29
+ }
30
+ // Allow non-localhost only if beacon is explicitly bound to a non-localhost address
31
+ if (app.get('nonLocalhost'))
32
+ return next();
33
+ res.status(403).json({ error: 'Forbidden: invalid Host header' });
34
+ });
35
+ // --- Security: CORS — only allow same-origin and cross-beacon media requests ---
36
+ app.use((req, res, next) => {
37
+ const origin = req.headers.origin;
38
+ // Same-origin requests (no Origin header) always pass
39
+ if (!origin)
40
+ return next();
41
+ // Allow requests from the beacon's own origin
42
+ if (origin.match(/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/)) {
43
+ res.header('Access-Control-Allow-Origin', origin);
44
+ res.header('Access-Control-Allow-Methods', 'GET, POST, PATCH, DELETE, OPTIONS');
45
+ res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
46
+ if (req.method === 'OPTIONS')
47
+ return res.sendStatus(204);
48
+ return next();
49
+ }
50
+ // Allow Reffo.ai webapp
51
+ if (origin === 'https://reffo.ai' || origin === 'https://www.reffo.ai') {
52
+ res.header('Access-Control-Allow-Origin', origin);
53
+ res.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
54
+ res.header('Access-Control-Allow-Headers', 'Content-Type');
55
+ if (req.method === 'OPTIONS')
56
+ return res.sendStatus(204);
57
+ return next();
58
+ }
59
+ // Cross-origin requests from unknown origins: block
60
+ res.status(403).json({ error: 'Forbidden: cross-origin request blocked' });
61
+ });
25
62
  // Serve uploaded media files
26
63
  app.use('/uploads', express_1.default.static(path_1.default.join(process.cwd(), 'uploads')));
27
64
  // Serve brand assets
28
65
  app.get('/favicon.ico', (_req, res) => { res.type('image/x-icon').sendFile(path_1.default.join(__dirname, '../../favicon.ico')); });
29
66
  app.get('/footer-brand.png', (_req, res) => { res.sendFile(path_1.default.join(__dirname, '../../footer-brand.png')); });
67
+ app.get('/header-logo.png', (_req, res) => { res.sendFile(path_1.default.join(__dirname, '../../header-logo.png')); });
30
68
  app.get('/', (_req, res) => {
31
- res.type('html').send((0, ui_1.renderUI)());
69
+ res.type('html').send((0, ui_1.renderUI)(localToken));
32
70
  });
71
+ // --- Security: Local token auth for API endpoints ---
72
+ // Everything below this middleware requires the local auth token.
73
+ // The UI page (served above) and static assets (served above) are exempt.
74
+ if (localToken) {
75
+ app.use((req, res, next) => {
76
+ // Allow health check without auth (needed for monitoring)
77
+ if (req.path === '/health' && req.method === 'GET')
78
+ return next();
79
+ // Allow taxonomy without auth (public reference data)
80
+ if (req.path === '/taxonomy' && req.method === 'GET')
81
+ return next();
82
+ // Allow security-status without auth (UI needs it before token is loaded)
83
+ if (req.path === '/api/security-status' && req.method === 'GET')
84
+ return next();
85
+ const authHeader = req.headers.authorization;
86
+ const queryToken = req.query._token;
87
+ if ((authHeader && authHeader === `Bearer ${localToken}`) ||
88
+ queryToken === localToken) {
89
+ return next();
90
+ }
91
+ res.status(401).json({ error: 'Unauthorized: local auth token required' });
92
+ });
93
+ }
33
94
  app.get('/taxonomy', (_req, res) => {
34
95
  res.json(taxonomy_1.TAXONOMY);
35
96
  });
@@ -42,9 +103,14 @@ function createApp() {
42
103
  app.use('/favorites', favorites_1.default);
43
104
  app.use('/collections', collections_1.default);
44
105
  app.use('/scans', scans_1.default);
106
+ app.use('/conversations', conversations_1.default);
45
107
  // Global error handler — catches multer errors, etc., and returns JSON instead of HTML
46
108
  app.use((err, _req, res, _next) => {
47
109
  console.error('[API] Error:', err.message);
110
+ // Multer file filter errors and video-disabled errors should be 400
111
+ if (err.message && (err.message.includes('Video uploads are temporarily disabled') || err.message.includes('Unsupported file type'))) {
112
+ return res.status(400).json({ error: err.message });
113
+ }
48
114
  const status = err.status || err.statusCode || 500;
49
115
  res.status(status).json({ error: err.message });
50
116
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;AAcA,8BAyCC;AAvDD,sDAA8B;AAC9B,gDAAwB;AACxB,sDAAoC;AACpC,kDAAgC;AAChC,sDAAoC;AACpC,oDAAkC;AAClC,kEAAgD;AAChD,0DAAwC;AACxC,4DAA0C;AAC1C,gEAA8C;AAC9C,oDAAkC;AAClC,8BAAiC;AACjC,0CAAuC;AAEvC,SAAgB,SAAS;IACvB,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,8EAA8E;IAC9E,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1F,6BAA6B;IAC7B,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEzE,qBAAqB;IACrB,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1H,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/G,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAA,aAAQ,GAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,GAAG,CAAC,IAAI,CAAC,mBAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAY,CAAC,CAAC;IACjC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,cAAU,CAAC,CAAC;IAC7B,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,eAAW,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAY,CAAC,CAAC;IACjC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,sBAAkB,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAc,CAAC,CAAC;IACrC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,mBAAe,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAiB,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAW,CAAC,CAAC;IAE/B,uFAAuF;IACvF,GAAG,CAAC,GAAG,CAAC,CAAC,GAAU,EAAE,IAAqB,EAAE,GAAqB,EAAE,KAA2B,EAAE,EAAE;QAChG,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAI,GAAW,CAAC,MAAM,IAAK,GAAW,CAAC,UAAU,IAAI,GAAG,CAAC;QACrE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/api/media.ts"],"names":[],"mappings":"AAgDA,QAAA,MAAM,MAAM,4CAAgC,CAAC;AA4M7C,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/api/media.ts"],"names":[],"mappings":"AAgDA,QAAA,MAAM,MAAM,4CAAgC,CAAC;AAyN7C,eAAe,MAAM,CAAC"}
package/dist/api/media.js CHANGED
@@ -33,7 +33,7 @@ const upload = (0, multer_1.default)({
33
33
  storage,
34
34
  fileFilter: (_req, file, cb) => {
35
35
  if (VIDEO_MIMES.includes(file.mimetype)) {
36
- cb(new Error('Video uploads are temporarily disabled'));
36
+ cb(new Error('Video uploads are temporarily disabled. Photo uploads (JPEG, PNG, WebP) are supported.'));
37
37
  }
38
38
  else if (PHOTO_MIMES.includes(file.mimetype)) {
39
39
  cb(null, true);
@@ -43,7 +43,7 @@ const upload = (0, multer_1.default)({
43
43
  }
44
44
  },
45
45
  limits: {
46
- fileSize: MAX_VIDEO_SIZE,
46
+ fileSize: MAX_PHOTO_SIZE,
47
47
  },
48
48
  });
49
49
  const router = (0, express_1.Router)({ mergeParams: true });
@@ -134,6 +134,15 @@ router.post('/', upload.array('files', MAX_FILES), (req, res) => {
134
134
  });
135
135
  }
136
136
  }
137
+ // If ref is network-published, push media to webapp
138
+ if (ref.networkPublished && results.length > 0) {
139
+ const networkPublisher = req.app.get('networkPublisher');
140
+ if (networkPublisher) {
141
+ networkPublisher.syncMedia(refId).catch((err) => {
142
+ console.warn('[Network] Media sync failed for ref', refId, err.message);
143
+ });
144
+ }
145
+ }
137
146
  res.status(201).json({ uploaded: results, errors });
138
147
  });
139
148
  // POST /refs/:refId/media/from-url — download an image from a URL and save as media
@@ -235,6 +244,8 @@ router.delete('/:mediaId', (req, res) => {
235
244
  });
236
245
  }
237
246
  }
247
+ // Note: network media deletion not handled here — the webapp retains images
248
+ // and they'll be cleaned up when the ref is unpublished
238
249
  res.status(204).send();
239
250
  });
240
251
  exports.default = router;
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/api/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/api/media.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"negotiations.d.ts","sourceRoot":"","sources":["../../src/api/negotiations.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiRxB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"negotiations.d.ts","sourceRoot":"","sources":["../../src/api/negotiations.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAyUxB,eAAe,MAAM,CAAC"}