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/dist/index.js CHANGED
@@ -11,6 +11,8 @@ const health_1 = require("./api/health");
11
11
  const dht_1 = require("./dht");
12
12
  const db_1 = require("./db");
13
13
  const sync_1 = require("./sync");
14
+ const network_publisher_1 = require("./sync/network-publisher");
15
+ const conversation_poller_1 = require("./sync/conversation-poller");
14
16
  const reffo_client_1 = require("./sync/reffo-client");
15
17
  const version_1 = require("./version");
16
18
  const skills_1 = require("./skills");
@@ -35,6 +37,10 @@ function loadEnv() {
35
37
  }
36
38
  loadEnv();
37
39
  const PORT = parseInt(process.env.PORT || '3000', 10);
40
+ const HOST = process.env.HOST || '127.0.0.1';
41
+ function isNonLocalhost(host) {
42
+ return host !== '127.0.0.1' && host !== 'localhost' && host !== '::1';
43
+ }
38
44
  function getOrCreateBeaconId() {
39
45
  if (process.env.BEACON_ID)
40
46
  return process.env.BEACON_ID;
@@ -50,17 +56,65 @@ function getOrCreateBeaconId() {
50
56
  }
51
57
  }
52
58
  const BEACON_ID = getOrCreateBeaconId();
59
+ // Generate or load a local auth token (prevents rogue local processes from accessing data)
60
+ function getOrCreateLocalToken() {
61
+ const tokenFile = path_1.default.join(process.cwd(), 'data', 'local-token');
62
+ try {
63
+ return fs_1.default.readFileSync(tokenFile, 'utf-8').trim();
64
+ }
65
+ catch {
66
+ const token = crypto_1.default.randomBytes(32).toString('hex');
67
+ fs_1.default.mkdirSync(path_1.default.dirname(tokenFile), { recursive: true });
68
+ fs_1.default.writeFileSync(tokenFile, token, { mode: 0o600 });
69
+ return token;
70
+ }
71
+ }
72
+ const LOCAL_TOKEN = getOrCreateLocalToken();
73
+ // Secure sensitive files — restrict to owner-only read/write (chmod 600)
74
+ function secureSensitiveFiles() {
75
+ const filesToSecure = [
76
+ path_1.default.join(process.cwd(), '.env'),
77
+ path_1.default.join(process.cwd(), 'pelagora.db'),
78
+ path_1.default.join(process.cwd(), 'pelagora.db-wal'),
79
+ path_1.default.join(process.cwd(), 'pelagora.db-shm'),
80
+ path_1.default.join(process.cwd(), 'data', 'beacon-id'),
81
+ path_1.default.join(process.cwd(), 'data', 'local-token'),
82
+ ];
83
+ for (const filePath of filesToSecure) {
84
+ try {
85
+ if (fs_1.default.existsSync(filePath)) {
86
+ fs_1.default.chmodSync(filePath, 0o600);
87
+ }
88
+ }
89
+ catch {
90
+ // Non-fatal: Windows doesn't support chmod, skip silently
91
+ }
92
+ }
93
+ }
53
94
  async function main() {
54
95
  // Ensure uploads directory exists
55
96
  fs_1.default.mkdirSync(path_1.default.join(process.cwd(), 'uploads'), { recursive: true });
97
+ // Secure sensitive files on startup
98
+ secureSensitiveFiles();
56
99
  // Initialize database
57
100
  (0, db_1.getDb)();
58
101
  console.log('[DB] SQLite initialized');
59
- // Create Express app
60
- const app = (0, api_1.createApp)();
102
+ // Create Express app with local auth token
103
+ const app = (0, api_1.createApp)(LOCAL_TOKEN);
61
104
  app.set('beaconId', BEACON_ID);
62
105
  app.set('startTime', Date.now());
63
106
  (0, health_1.setBeaconId)(BEACON_ID);
107
+ // Initialize network publisher (always — no API key needed)
108
+ const webappUrl = process.env.REFFO_WEBAPP_URL || process.env.REFFO_API_URL || 'https://reffo.ai';
109
+ const networkPublisher = new network_publisher_1.NetworkPublisher(BEACON_ID, webappUrl);
110
+ app.set('networkPublisher', networkPublisher);
111
+ networkPublisher.startReconciliation();
112
+ networkPublisher.startHeartbeat();
113
+ console.log('[Network] Publisher initialized — public items will be mirrored to', webappUrl);
114
+ // Poll for conversation messages from webapp (no API key needed)
115
+ const conversationPoller = new conversation_poller_1.ConversationPoller(BEACON_ID, webappUrl);
116
+ conversationPoller.start();
117
+ app.set('conversationPoller', conversationPoller);
64
118
  // Initialize Reffo.ai sync if API key is configured
65
119
  const reffoApiKey = process.env.REFFO_API_KEY;
66
120
  if (reffoApiKey) {
@@ -91,6 +145,23 @@ async function main() {
91
145
  const dht = new dht_1.DhtDiscovery(BEACON_ID);
92
146
  dht.httpPort = PORT;
93
147
  app.set('dht', dht);
148
+ // Wire DHT conversation sync: when a chat message is received via DHT, also push to webapp
149
+ const syncMgr = app.get('syncManager');
150
+ if (syncMgr) {
151
+ dht.setOnChatMessageReceived((data) => {
152
+ syncMgr.pushConversationMessage({
153
+ conversationId: data.conversationId,
154
+ messageId: data.messageId,
155
+ refId: data.refId,
156
+ refName: data.refName,
157
+ buyerBeaconId: data.senderBeaconId,
158
+ messageType: data.messageType,
159
+ content: data.content,
160
+ amount: data.amount,
161
+ currency: data.currency,
162
+ }).catch(() => { });
163
+ });
164
+ }
94
165
  // Load skill plugins
95
166
  const db = (0, db_1.getDb)();
96
167
  const skillLoader = new skills_1.SkillLoader(db, BEACON_ID, dht);
@@ -175,9 +246,23 @@ async function main() {
175
246
  (0, health_1.setDhtStatus)({ connected: dht.isConnected, peers: peerCount });
176
247
  });
177
248
  (0, health_1.setDhtStatus)({ connected: dht.isConnected, peers: dht.peerCount });
249
+ // Expose bound-host flag so the UI can show a warning banner
250
+ app.set('nonLocalhost', isNonLocalhost(HOST));
251
+ // Security status endpoint for UI
252
+ app.get('/api/security-status', (_req, res) => {
253
+ res.json({ nonLocalhost: isNonLocalhost(HOST) });
254
+ });
178
255
  // Start HTTP server
179
- const server = app.listen(PORT, () => {
180
- console.log(`[Pelagora] Running on http://localhost:${PORT}`);
256
+ const server = app.listen(PORT, HOST, () => {
257
+ console.log(`[Pelagora] Running on http://${HOST}:${PORT}`);
258
+ if (isNonLocalhost(HOST)) {
259
+ console.log('');
260
+ console.log('\x1b[41m\x1b[97m !! SECURITY WARNING !! \x1b[0m');
261
+ console.log('\x1b[91m This beacon is listening on %s\x1b[0m', HOST);
262
+ console.log('\x1b[91m Anyone who can reach this port can access your data.\x1b[0m');
263
+ console.log('\x1b[91m Consider running behind a firewall or VPN.\x1b[0m');
264
+ console.log('');
265
+ }
181
266
  console.log(`[Pelagora] Node ID: ${BEACON_ID.slice(0, 16)}...`);
182
267
  console.log(`[Pelagora] Endpoints:`);
183
268
  console.log(` GET / - Web UI`);
@@ -188,14 +273,16 @@ async function main() {
188
273
  console.log(` POST /refs/:id/media - Upload media`);
189
274
  console.log(` GET /offers - List offers`);
190
275
  console.log(` POST /offers - Create offer`);
191
- console.log(` GET /negotiations - List negotiations`);
192
- console.log(` POST /negotiations - Create proposal`);
276
+ console.log(` GET /conversations - List conversations`);
277
+ console.log(` POST /conversations - Start conversation`);
193
278
  console.log(` GET /search?q=... - Search peer network`);
194
279
  });
195
280
  // Graceful shutdown
196
281
  const shutdown = async () => {
197
282
  console.log('\n[Pelagora] Shutting down...');
198
283
  server.close();
284
+ networkPublisher.stop();
285
+ conversationPoller.stop();
199
286
  // Force exit after 2s if DHT hangs
200
287
  const forceExit = setTimeout(() => process.exit(0), 2000);
201
288
  try {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AACxB,+BAAkC;AAClC,yCAAyD;AACzD,+BAAqC;AACrC,6BAA6B;AAC7B,iCAAqC;AACrC,sDAAkD;AAClD,uCAAuC;AACvC,qCAA2F;AAE3F,oDAAoD;AACpD,SAAS,OAAO;IACd,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;AACH,CAAC;AACD,OAAO,EAAE,CAAC;AAEV,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtD,SAAS,mBAAmB;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACxD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,EAAE,GAAG,gBAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,YAAE,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;AAExC,KAAK,UAAU,IAAI;IACjB,kCAAkC;IAClC,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,sBAAsB;IACtB,IAAA,UAAK,GAAE,CAAC;IACR,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,qBAAqB;IACrB,MAAM,GAAG,GAAG,IAAA,eAAS,GAAE,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;IAEvB,oDAAoD;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,kBAAkB,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,kBAAW,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,oBAAoB,IAAI,EAAE,CAAC;QACvE,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEpC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,IAAA,oBAAU,GAAE,EAAE,SAAS,CAAC;aAChE,IAAI,CAAC,MAAM,CAAC,EAAE;YACb,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC9B,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC/C,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC/B,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,sBAAsB;IACtB,MAAM,GAAG,GAAG,IAAI,kBAAY,CAAC,SAAS,CAAC,CAAC;IACxC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpB,qBAAqB;IACrB,MAAM,EAAE,GAAG,IAAA,UAAK,GAAE,CAAC;IACnB,MAAM,WAAW,GAAG,IAAI,oBAAW,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE/B,6CAA6C;IAC7C,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAA,kCAAyB,EAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAA,gCAAuB,EAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAErE,qCAAqC;IACrC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QACnE,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,MAAM,KAAK,GAAG;YACZ,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7C,QAAQ,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC/C,WAAW,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACpD,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YACzE,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1D,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1D,WAAW,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,YAAY,KAAK,OAAO,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,kBAAkB,CAAC;QACjE,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC;YAC/C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5C,CAAC,CAAC,IAAA,0BAAW,EAAC;gBACV,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,IAAI,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aACtE,EAAE,QAAQ,CAAC,CAAC;QAEjB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;QAEtF,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAErG,oCAAoC;QACpC,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,KAAc;YACtB,GAAI,CAAC,CAAC,OAAkB;SACzB,CAAC,CAAC,CAAC;QAEJ,4DAA4D;QAC5D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,OAAgB;YACxB,IAAI,EAAE,CAAC;oBACL,EAAE,EAAE,CAAC,CAAC,OAAO;oBACb,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,aAAa,EAAE,CAAC,CAAC,aAAa;oBAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI;oBACtC,aAAa,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI;oBACxC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI;oBACpC,SAAS,EAAE,CAAC,CAAC,SAAS;iBACvB,CAAC;YACF,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;oBACzB,KAAK,EAAE,CAAC,CAAC,OAAO;oBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,aAAa,EAAE,CAAC,CAAC,QAAQ;oBACzB,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC,CAAC,CAAC,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,SAAS,EAAE,OAAO;oBAClB,QAAQ,EAAE,GAAG;oBACb,SAAS,EAAE,CAAC;iBACb,CAAC,CAAC;aACJ,CAAC,CAAC,CAAC,EAAE;SACP,CAAC,CAAC,CAAC;QAEJ,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,UAAU,EAAE,SAAS,CAAC,KAAK;YAC3B,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE;QAC5B,IAAA,qBAAY,EAAC,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,qBAAY,EAAC,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAEnE,oBAAoB;IACpB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,mCAAmC;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAClC,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Skill Loader — discovers and loads skill plugins on startup.
3
3
  *
4
4
  * Skills are discovered from:
5
- * 1. node_modules/@reffo/skill-* packages
5
+ * 1. node_modules/@pelagora/skill-* packages
6
6
  * 2. Local skills/ directory (for development)
7
7
  *
8
8
  * Each skill must export a default Skill object.
@@ -3,7 +3,7 @@
3
3
  * Skill Loader — discovers and loads skill plugins on startup.
4
4
  *
5
5
  * Skills are discovered from:
6
- * 1. node_modules/@reffo/skill-* packages
6
+ * 1. node_modules/@pelagora/skill-* packages
7
7
  * 2. Local skills/ directory (for development)
8
8
  *
9
9
  * Each skill must export a default Skill object.
@@ -50,14 +50,14 @@ class SkillLoader {
50
50
  discoverSkills() {
51
51
  const paths = [];
52
52
  const root = process.cwd();
53
- // 1. Check node_modules/@reffo/skill-*
54
- const reffoModules = path_1.default.join(root, 'node_modules', '@reffo');
55
- if (fs_1.default.existsSync(reffoModules)) {
53
+ // 1. Check node_modules/@pelagora/skill-*
54
+ const pelagoraModules = path_1.default.join(root, 'node_modules', '@pelagora');
55
+ if (fs_1.default.existsSync(pelagoraModules)) {
56
56
  try {
57
- const entries = fs_1.default.readdirSync(reffoModules, { withFileTypes: true });
57
+ const entries = fs_1.default.readdirSync(pelagoraModules, { withFileTypes: true });
58
58
  for (const entry of entries) {
59
59
  if (entry.isDirectory() && entry.name.startsWith('skill-')) {
60
- paths.push(path_1.default.join(reffoModules, entry.name));
60
+ paths.push(path_1.default.join(pelagoraModules, entry.name));
61
61
  }
62
62
  }
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ConversationPoller — Polls the Reffo webapp for new conversation messages
3
+ * addressed to this beacon (buyer-role conversations). No API key required —
4
+ * uses the public /api/network/conversations endpoint.
5
+ */
6
+ export declare class ConversationPoller {
7
+ private baseUrl;
8
+ private beaconId;
9
+ private conversations;
10
+ private timer;
11
+ private lastPollTime;
12
+ constructor(beaconId: string, baseUrl?: string);
13
+ start(): void;
14
+ stop(): void;
15
+ pollAll(): Promise<{
16
+ received: number;
17
+ }>;
18
+ }
19
+ //# sourceMappingURL=conversation-poller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-poller.d.ts","sourceRoot":"","sources":["../../src/sync/conversation-poller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAuB;gBAE/B,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM9C,KAAK,IAAI,IAAI;IAcb,IAAI,IAAI,IAAI;IAON,OAAO,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAsF/C"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * ConversationPoller — Polls the Reffo webapp for new conversation messages
4
+ * addressed to this beacon (buyer-role conversations). No API key required —
5
+ * uses the public /api/network/conversations endpoint.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ConversationPoller = void 0;
9
+ const conversation_queries_1 = require("../db/conversation-queries");
10
+ const queries_1 = require("../db/queries");
11
+ const DEFAULT_WEBAPP_URL = 'https://reffo.ai';
12
+ const POLL_INTERVAL = 5 * 1000; // 5 seconds for near-realtime chat
13
+ class ConversationPoller {
14
+ baseUrl;
15
+ beaconId;
16
+ conversations;
17
+ timer = null;
18
+ lastPollTime = null;
19
+ constructor(beaconId, baseUrl) {
20
+ this.beaconId = beaconId;
21
+ this.baseUrl = (baseUrl || DEFAULT_WEBAPP_URL).replace(/\/$/, '');
22
+ this.conversations = new conversation_queries_1.ConversationQueries();
23
+ }
24
+ start() {
25
+ if (this.timer)
26
+ return;
27
+ // Initial poll
28
+ this.pollAll().catch(() => { });
29
+ console.log(`[ConversationPoller] Started (${POLL_INTERVAL / 1000}s interval)`);
30
+ this.timer = setInterval(() => {
31
+ this.pollAll().catch((err) => {
32
+ console.error('[ConversationPoller] Poll error:', err instanceof Error ? err.message : err);
33
+ });
34
+ }, POLL_INTERVAL);
35
+ }
36
+ stop() {
37
+ if (this.timer) {
38
+ clearInterval(this.timer);
39
+ this.timer = null;
40
+ }
41
+ }
42
+ async pollAll() {
43
+ let received = 0;
44
+ try {
45
+ const params = new URLSearchParams({ beaconId: this.beaconId });
46
+ if (this.lastPollTime) {
47
+ params.set('since', this.lastPollTime);
48
+ }
49
+ const res = await fetch(`${this.baseUrl}/api/network/conversations?${params.toString()}`);
50
+ if (!res.ok)
51
+ return { received };
52
+ const data = await res.json();
53
+ const messages = data.messages || [];
54
+ // Track the latest message timestamp to use as the next `since` cursor
55
+ let latestTimestamp = this.lastPollTime;
56
+ for (const msg of messages) {
57
+ try {
58
+ // Track the newest message timestamp we've seen
59
+ if (!latestTimestamp || msg.createdAt > latestTimestamp) {
60
+ latestTimestamp = msg.createdAt;
61
+ }
62
+ // Skip messages we sent ourselves
63
+ if (msg.senderBeaconId === this.beaconId)
64
+ continue;
65
+ // Determine our role: check if we own the item (seller) or not (buyer).
66
+ // We can't rely on buyerBeaconId matching because the webapp stores
67
+ // the remote beacon's ID in buyer_beacon_id regardless of actual role.
68
+ const refs = new queries_1.RefQueries();
69
+ const ownedRef = refs.get(msg.refId);
70
+ const isSeller = !!ownedRef; // If we have this item in our inventory, we're the seller
71
+ const counterpartId = isSeller ? msg.buyerBeaconId : msg.sellerBeaconId;
72
+ const role = isSeller ? 'seller' : 'buyer';
73
+ // Ensure the conversation exists locally
74
+ const conversation = this.conversations.getOrCreate(msg.refId, msg.refName, counterpartId, role);
75
+ // Check if we already have this message
76
+ const existingMessages = this.conversations.getMessages(conversation.id);
77
+ const alreadyExists = existingMessages.some(m => m.id === msg.messageId);
78
+ if (alreadyExists)
79
+ continue;
80
+ // Add the message to the local conversation
81
+ this.conversations.addMessage({
82
+ id: msg.messageId,
83
+ conversationId: conversation.id,
84
+ senderBeaconId: msg.senderBeaconId,
85
+ messageType: msg.messageType,
86
+ content: msg.content || undefined,
87
+ amount: msg.amount || undefined,
88
+ currency: msg.currency || 'USD',
89
+ });
90
+ received++;
91
+ console.log(`[ConversationPoller] Added message ${msg.messageId} to conversation ${conversation.id}`);
92
+ }
93
+ catch (innerErr) {
94
+ console.error('[ConversationPoller] Message processing error:', innerErr instanceof Error ? innerErr.message : innerErr);
95
+ }
96
+ }
97
+ // Advance cursor to the latest message we've seen (not current time)
98
+ if (latestTimestamp) {
99
+ this.lastPollTime = latestTimestamp;
100
+ }
101
+ }
102
+ catch (err) {
103
+ console.error('[ConversationPoller] Poll error:', err instanceof Error ? err.message : err);
104
+ }
105
+ if (received > 0) {
106
+ console.log(`[ConversationPoller] Received ${received} new message(s)`);
107
+ }
108
+ return { received };
109
+ }
110
+ }
111
+ exports.ConversationPoller = ConversationPoller;
112
+ //# sourceMappingURL=conversation-poller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-poller.js","sourceRoot":"","sources":["../../src/sync/conversation-poller.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,13 @@
4
4
  export declare class SyncManager {
5
5
  private client;
6
6
  private beaconId;
7
+ private baseUrl;
7
8
  private heartbeatInterval;
8
9
  private refs;
9
10
  private offers;
10
11
  private media;
11
12
  private negotiations;
13
+ private conversations;
12
14
  private lastOfferPoll;
13
15
  private lastRefPull;
14
16
  registered: boolean;
@@ -47,10 +49,37 @@ export declare class SyncManager {
47
49
  received: number;
48
50
  errors: string[];
49
51
  }>;
52
+ pushIncomingProposal(proposal: {
53
+ negotiationId: string;
54
+ refId: string;
55
+ refName: string;
56
+ buyerBeaconId: string;
57
+ price: number;
58
+ priceCurrency: string;
59
+ message: string;
60
+ }): Promise<{
61
+ ok: boolean;
62
+ error?: string;
63
+ }>;
50
64
  pushOfferResponse(offerId: string, status: string, counterAmount?: number, responseMessage?: string): Promise<{
51
65
  ok: boolean;
52
66
  error?: string;
53
67
  }>;
68
+ pushConversationMessage(data: {
69
+ conversationId: string;
70
+ messageId: string;
71
+ refId: string;
72
+ refName: string;
73
+ buyerBeaconId: string;
74
+ sellerBeaconId?: string;
75
+ messageType: string;
76
+ content?: string;
77
+ amount?: number;
78
+ currency?: string;
79
+ }): Promise<{
80
+ ok: boolean;
81
+ error?: string;
82
+ }>;
54
83
  private handleHeartbeatResult;
55
84
  startHeartbeat(intervalMs?: number): void;
56
85
  stopHeartbeat(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAAuB;IACnC,UAAU,EAAE,OAAO,CAAS;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,eAAe,EAAE,OAAO,CAAS;gBAE5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IASxD,cAAc,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1D,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAKrG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAoCnF,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBrF,OAAO,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiBxD,QAAQ,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA0G1E,UAAU,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA4D7D,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB3C,OAAO,CAAC,qBAAqB;IAU7B,cAAc,CAAC,UAAU,SAAgB,GAAG,IAAI;IAuBhD,aAAa,IAAI,IAAI;CAMtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SyncManager = void 0;
7
7
  const reffo_client_1 = require("./reffo-client");
8
8
  const queries_1 = require("../db/queries");
9
+ const conversation_queries_1 = require("../db/conversation-queries");
9
10
  const version_1 = require("../version");
10
11
  const health_1 = require("../api/health");
11
12
  function semverNewer(remote, local) {
@@ -22,11 +23,13 @@ function semverNewer(remote, local) {
22
23
  class SyncManager {
23
24
  client;
24
25
  beaconId;
26
+ baseUrl;
25
27
  heartbeatInterval = null;
26
28
  refs;
27
29
  offers;
28
30
  media;
29
31
  negotiations;
32
+ conversations;
30
33
  lastOfferPoll = null;
31
34
  lastRefPull = null;
32
35
  registered = false;
@@ -36,10 +39,12 @@ class SyncManager {
36
39
  constructor(apiKey, beaconId, baseUrl) {
37
40
  this.client = new reffo_client_1.ReffoClient(apiKey, baseUrl);
38
41
  this.beaconId = beaconId;
42
+ this.baseUrl = (baseUrl || 'https://reffo.ai').replace(/\/$/, '');
39
43
  this.refs = new queries_1.RefQueries();
40
44
  this.offers = new queries_1.OfferQueries();
41
45
  this.media = new queries_1.MediaQueries();
42
46
  this.negotiations = new queries_1.NegotiationQueries();
47
+ this.conversations = new conversation_queries_1.ConversationQueries();
43
48
  }
44
49
  async testConnection() {
45
50
  return this.client.testConnection();
@@ -231,6 +236,9 @@ class SyncManager {
231
236
  // Build a map of synced refs: local ref ID -> ref (keyed by local ID which is also the ref ID on webapp)
232
237
  const syncedRefs = this.refs.listSynced();
233
238
  const syncedRefMap = new Map(syncedRefs.map(ref => [ref.id, ref]));
239
+ // Track the earliest skipped offer so we don't advance the poll
240
+ // timestamp past offers we couldn't process yet
241
+ let earliestSkippedAt = null;
234
242
  for (const offer of result.offers) {
235
243
  // Check if we already have this negotiation
236
244
  const existing = this.negotiations.get(offer.id);
@@ -240,6 +248,9 @@ class SyncManager {
240
248
  const localRef = syncedRefMap.get(offer.item_id);
241
249
  if (!localRef) {
242
250
  console.warn(`[Sync] Offer ${offer.id} references unknown ref ${offer.item_id}, skipping`);
251
+ if (!earliestSkippedAt || offer.created_at < earliestSkippedAt) {
252
+ earliestSkippedAt = offer.created_at;
253
+ }
243
254
  continue;
244
255
  }
245
256
  try {
@@ -262,8 +273,16 @@ class SyncManager {
262
273
  errors.push(`Offer ${offer.id}: ${err.message}`);
263
274
  }
264
275
  }
265
- // Update last poll timestamp
266
- this.lastOfferPoll = new Date().toISOString();
276
+ // Only advance poll timestamp if no offers were skipped; otherwise
277
+ // rewind to just before the earliest skipped offer so it's retried
278
+ if (earliestSkippedAt) {
279
+ const rewindMs = new Date(earliestSkippedAt).getTime() - 1000;
280
+ this.lastOfferPoll = new Date(rewindMs).toISOString();
281
+ console.warn(`[Sync] ${errors.length || 'Some'} offer(s) skipped — rewinding poll timestamp to retry`);
282
+ }
283
+ else {
284
+ this.lastOfferPoll = new Date().toISOString();
285
+ }
267
286
  }
268
287
  catch (err) {
269
288
  errors.push(err.message);
@@ -273,6 +292,23 @@ class SyncManager {
273
292
  }
274
293
  return { received, errors };
275
294
  }
295
+ async pushIncomingProposal(proposal) {
296
+ try {
297
+ const result = await this.client.pushProposal(proposal);
298
+ if (!result.ok) {
299
+ console.warn(`[Sync] Failed to push incoming proposal ${proposal.negotiationId}: ${result.error}`);
300
+ }
301
+ else {
302
+ console.log(`[Sync] Pushed incoming proposal ${proposal.negotiationId} to webapp`);
303
+ }
304
+ return result;
305
+ }
306
+ catch (err) {
307
+ const msg = err.message;
308
+ console.warn(`[Sync] Failed to push incoming proposal ${proposal.negotiationId}: ${msg}`);
309
+ return { ok: false, error: msg };
310
+ }
311
+ }
276
312
  async pushOfferResponse(offerId, status, counterAmount, responseMessage) {
277
313
  try {
278
314
  const result = await this.client.pushOfferResponse(offerId, status, counterAmount, responseMessage);
@@ -290,6 +326,42 @@ class SyncManager {
290
326
  return { ok: false, error: msg };
291
327
  }
292
328
  }
329
+ async pushConversationMessage(data) {
330
+ try {
331
+ const url = `${this.baseUrl}/api/network/conversations`;
332
+ const res = await fetch(url, {
333
+ method: 'POST',
334
+ headers: {
335
+ 'Content-Type': 'application/json',
336
+ },
337
+ body: JSON.stringify({
338
+ conversationId: data.conversationId,
339
+ messageId: data.messageId,
340
+ refId: data.refId,
341
+ refName: data.refName,
342
+ buyerBeaconId: data.buyerBeaconId,
343
+ sellerBeaconId: data.sellerBeaconId,
344
+ messageType: data.messageType,
345
+ content: data.content,
346
+ amount: data.amount,
347
+ currency: data.currency,
348
+ }),
349
+ });
350
+ if (!res.ok) {
351
+ const body = await res.json();
352
+ const error = body.error || `HTTP ${res.status}`;
353
+ console.warn(`[Sync] Failed to push conversation message ${data.messageId}: ${error}`);
354
+ return { ok: false, error };
355
+ }
356
+ console.log(`[Sync] Pushed conversation message ${data.messageId} to webapp`);
357
+ return { ok: true };
358
+ }
359
+ catch (err) {
360
+ const msg = err.message;
361
+ console.warn(`[Sync] Failed to push conversation message ${data.messageId}: ${msg}`);
362
+ return { ok: false, error: msg };
363
+ }
364
+ }
293
365
  handleHeartbeatResult(result) {
294
366
  if (result.ok && result.latestVersion) {
295
367
  const local = (0, version_1.getVersion)();
@@ -302,18 +374,21 @@ class SyncManager {
302
374
  startHeartbeat(intervalMs = 5 * 60 * 1000) {
303
375
  if (this.heartbeatInterval)
304
376
  return;
305
- // Initial heartbeat + offer poll + ref pull
377
+ // Initial heartbeat + ref pull then offer poll (refs must be pulled first
378
+ // so pollOffers can match item_ids to local refs)
306
379
  this.client.heartbeat(this.beaconId)
307
- .then((result) => {
380
+ .then(async (result) => {
308
381
  this.handleHeartbeatResult(result);
309
- return Promise.all([this.pollOffers(), this.pullRefs()]);
382
+ await this.pullRefs();
383
+ await this.pollOffers();
310
384
  })
311
385
  .catch(() => { });
312
386
  this.heartbeatInterval = setInterval(() => {
313
387
  this.client.heartbeat(this.beaconId)
314
- .then((result) => {
388
+ .then(async (result) => {
315
389
  this.handleHeartbeatResult(result);
316
- return Promise.all([this.pollOffers(), this.pullRefs()]);
390
+ await this.pullRefs();
391
+ await this.pollOffers();
317
392
  })
318
393
  .catch((err) => {
319
394
  console.warn('[Sync] Heartbeat failed:', err.message);