open-agents-ai 0.184.24 → 0.184.26

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 (2) hide show
  1. package/dist/index.js +52 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -5602,7 +5602,22 @@ async function handleCmd(cmd) {
5602
5602
  timestamp: Date.now(),
5603
5603
  };
5604
5604
  _natsConn.publish('nexus.sponsors.announce', _natsCodec.encode(JSON.stringify(sponsorData)));
5605
+ // Store for periodic re-announcement (every capacity tick, ~60s)
5606
+ globalThis._activeSponsorData = sponsorData;
5605
5607
  dlog('sponsor_announce: published to nexus.sponsors.announce');
5608
+
5609
+ // Persist to KV-backed sponsor directory (openagents.nexus worker)
5610
+ try {
5611
+ var kvResp = await fetch('https://openagents.nexus/api/v1/sponsors', {
5612
+ method: 'POST',
5613
+ headers: { 'Content-Type': 'application/json' },
5614
+ body: JSON.stringify(sponsorData),
5615
+ });
5616
+ var kvResult = await kvResp.json();
5617
+ dlog('sponsor_announce: KV persist ' + (kvResult.persisted ? 'OK' : 'skipped: ' + kvResult.reason));
5618
+ } catch (kvErr) {
5619
+ dlog('sponsor_announce: KV persist failed: ' + (kvErr.message || kvErr));
5620
+ }
5606
5621
  // Also join the sponsors room and send as room message for persistence
5607
5622
  if (!rooms.has('sponsors')) {
5608
5623
  try {
@@ -5622,14 +5637,32 @@ async function handleCmd(cmd) {
5622
5637
  break;
5623
5638
  }
5624
5639
  case 'sponsor_discover': {
5625
- // Subscribe to nexus.sponsors.announce for a short window and collect announcements
5626
- if (!_natsConn || !_natsCodec) {
5627
- writeResp(id, { ok: false, output: 'NATS not connected', sponsors: [] });
5628
- return;
5629
- }
5630
5640
  var foundSponsors = [];
5631
5641
  var discoverTimeout = parseInt(args.timeout_ms || '5000', 10);
5632
5642
 
5643
+ // \u2500\u2500 Source 1: KV-backed persistent directory (MOST RELIABLE) \u2500\u2500
5644
+ // Query the openagents.nexus worker for persisted sponsor listings
5645
+ try {
5646
+ var kvResp = await fetch('https://openagents.nexus/api/v1/sponsors', { signal: AbortSignal.timeout(5000) });
5647
+ if (kvResp.ok) {
5648
+ var kvData = await kvResp.json();
5649
+ var kvSponsors = kvData.sponsors || [];
5650
+ for (var ki = 0; ki < kvSponsors.length; ki++) {
5651
+ var kvSp = kvSponsors[ki];
5652
+ if (kvSp.status === 'active') {
5653
+ kvSp.type = 'sponsor.announce'; // normalize
5654
+ foundSponsors.push(kvSp);
5655
+ }
5656
+ }
5657
+ dlog('sponsor_discover: KV directory returned ' + kvSponsors.length + ' sponsor(s)');
5658
+ }
5659
+ } catch (kvErr) {
5660
+ dlog('sponsor_discover: KV fetch failed: ' + (kvErr.message || kvErr));
5661
+ }
5662
+
5663
+ // \u2500\u2500 Source 2: NATS live announcements (if connected) \u2500\u2500
5664
+ if (_natsConn && _natsCodec) {
5665
+
5633
5666
  // Also check sponsors room inbox for cached messages
5634
5667
  var sponsorInbox = join(inboxDir, 'sponsors');
5635
5668
  try {
@@ -5679,6 +5712,8 @@ async function handleCmd(cmd) {
5679
5712
  dlog('sponsor_discover: NATS sub error: ' + (subErr.message || subErr));
5680
5713
  }
5681
5714
 
5715
+ } // end if (_natsConn && _natsCodec)
5716
+
5682
5717
  // Deduplicate by peerId
5683
5718
  var seen = {};
5684
5719
  var unique = [];
@@ -7892,6 +7927,18 @@ process.on('unhandledRejection', (reason) => {
7892
7927
  };
7893
7928
  _natsConn.publish('nexus.agents.capacity', _natsCodec.encode(JSON.stringify(announcement)));
7894
7929
 
7930
+ // Re-announce sponsorship periodically so consumers can discover us
7931
+ // (NATS pub/sub is ephemeral \u2014 consumers only see messages while subscribed)
7932
+ if (globalThis._activeSponsorData && _natsConn) {
7933
+ var _spData = globalThis._activeSponsorData;
7934
+ _spData.timestamp = Date.now(); // refresh timestamp
7935
+ _natsConn.publish('nexus.sponsors.announce', _natsCodec.encode(JSON.stringify(_spData)));
7936
+ // Also re-send to sponsors room
7937
+ if (rooms.has('sponsors')) {
7938
+ try { rooms.get('sponsors').send(JSON.stringify(_spData), { format: 'application/json' }); } catch {}
7939
+ }
7940
+ }
7941
+
7895
7942
  // Also publish enriched discovery announcement so the dashboard sees
7896
7943
  // IPFS/memory/identity/emotional state in sidebar cards (WO-VIS1 fields)
7897
7944
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.184.24",
3
+ "version": "0.184.26",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) \u2014 interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",