agent-relay-server 0.4.28 → 0.4.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-relay-server",
3
- "version": "0.4.28",
3
+ "version": "0.4.30",
4
4
  "description": "Lightweight HTTP message relay for inter-agent communication across machines",
5
5
  "module": "src/index.ts",
6
6
  "type": "module",
@@ -1217,6 +1217,7 @@
1217
1217
  agentStatusClass,
1218
1218
  severityClass,
1219
1219
  agentStatusTitle,
1220
+ agentChannels,
1220
1221
  channelPresence,
1221
1222
  integrationPresence,
1222
1223
  timeAgo,
@@ -1440,6 +1441,11 @@
1440
1441
  return { label: "configured", tone: "primary", icon: "ti-plug-connected" };
1441
1442
  }
1442
1443
 
1444
+ function agentChannels(agent) {
1445
+ if (!agent) return [];
1446
+ return (this.channels || []).filter((ch) => ch.agentId === agent.id);
1447
+ }
1448
+
1443
1449
  function channelPresence(channel) {
1444
1450
  if (!channel) return { label: "unknown", tone: "secondary", icon: "ti-plug-off" };
1445
1451
  if (channel.status === "offline") return { label: "offline", tone: "secondary", icon: "ti-plug-off" };
package/public/index.html CHANGED
@@ -447,23 +447,20 @@
447
447
  <span x-text="a.name || a.id.slice(-12)"></span>
448
448
  </template>
449
449
  </div>
450
- <div class="text-secondary small text-truncate" x-text="a.id"></div>
451
- <div class="presence-badges d-flex gap-1 mt-1 flex-wrap">
452
- <template x-for="badge in agentPresenceBadges(a)" :key="badge.label">
453
- <span class="badge" :class="badge.className" x-text="badge.label"></span>
454
- </template>
455
- </div>
456
- <template x-if="agentPair(a)">
457
- <span class="badge pair-badge mt-1" :class="pairBadgeClass(agentPair(a))" :title="pairTitle(agentPair(a), a.id)">
458
- <i class="ti ti-link me-1"></i><span x-text="pairBadgeLabel(agentPair(a), a.id)"></span>
450
+ <div class="d-flex gap-1 mt-1 flex-wrap align-items-center">
451
+ <span class="badge" :class="'bg-' + agentPresence(a).tone + '-lt'" style="font-size: 0.7rem">
452
+ <i class="ti me-1" :class="agentPresence(a).icon"></i><span x-text="agentPresence(a).label"></span>
459
453
  </span>
460
- </template>
461
- <div class="attention-badges d-flex gap-1 mt-1 flex-wrap" x-show="agentAttention(a).total > 0" :title="agentAttentionTitle(a)">
462
- <span class="badge bg-danger-lt" x-show="agentAttention(a).unread" x-text="agentAttention(a).unread + ' unread'"></span>
463
- <span class="badge bg-warning-lt" x-show="agentAttention(a).needsHumanResponse">needs response</span>
464
- <span class="badge bg-info-lt" x-show="agentAttention(a).agentQuestion">question</span>
465
- <span class="badge bg-warning-lt" x-show="agentAttention(a).pendingPairInvite">pair invite</span>
466
- <span class="badge bg-orange-lt" x-show="agentAttention(a).claimableTasks" x-text="agentAttention(a).claimableTasks + ' claimable'"></span>
454
+ <template x-if="agentAttention(a).total > 0">
455
+ <span class="badge bg-warning text-white" style="font-size: 0.7rem" :title="agentAttentionTitle(a)">
456
+ <i class="ti ti-bell me-1"></i><span x-text="agentAttention(a).total"></span>
457
+ </span>
458
+ </template>
459
+ <template x-if="agentPair(a)">
460
+ <span class="badge pair-badge" :class="pairBadgeClass(agentPair(a))" style="font-size: 0.7rem" :title="pairTitle(agentPair(a), a.id)">
461
+ <i class="ti ti-link me-1"></i><span x-text="pairBadgeLabel(agentPair(a), a.id)"></span>
462
+ </span>
463
+ </template>
467
464
  </div>
468
465
  </div>
469
466
  <span class="text-secondary small" x-text="timeAgo(a.lastSeen)"></span>
@@ -585,16 +582,10 @@
585
582
  </template>
586
583
  <span class="text-truncate" :class="a.label ? 'text-secondary small' : 'fw-bold'" x-text="a.name || a.id.slice(-12)"></span>
587
584
  </div>
588
- <div class="text-secondary small text-truncate mt-1" x-text="a.id"></div>
589
- <div class="presence-badges d-flex gap-1 mt-1 flex-wrap">
585
+ <div class="d-flex gap-1 mt-1 flex-wrap align-items-center">
590
586
  <span class="badge" :class="'bg-' + agentPresence(a).tone + '-lt'">
591
587
  <i class="ti me-1" :class="agentPresence(a).icon"></i><span x-text="agentPresence(a).label"></span>
592
588
  </span>
593
- <template x-for="badge in agentPresenceBadges(a)" :key="badge.label">
594
- <span class="badge" :class="badge.className" x-text="badge.label"></span>
595
- </template>
596
- </div>
597
- <div class="d-flex gap-1 mt-1 flex-wrap">
598
589
  <template x-if="agentAttention(a).total > 0">
599
590
  <span class="badge bg-warning text-white" :title="agentAttentionTitle(a)">
600
591
  <i class="ti ti-bell me-1"></i><span x-text="agentAttention(a).total"></span>
@@ -605,31 +596,8 @@
605
596
  <i class="ti ti-link me-1"></i><span x-text="pairBadgeLabel(agentPair(a), a.id)"></span>
606
597
  </span>
607
598
  </template>
608
- <span class="badge bg-danger-lt" x-show="agentAttention(a).unread" x-text="agentAttention(a).unread + ' unread'"></span>
609
- <span class="badge bg-warning-lt" x-show="agentAttention(a).needsHumanResponse">needs response</span>
610
- <span class="badge bg-info-lt" x-show="agentAttention(a).agentQuestion">question</span>
611
- <span class="badge bg-orange-lt" x-show="agentAttention(a).claimableTasks" x-text="agentAttention(a).claimableTasks + ' claimable'"></span>
612
- <template x-if="a.machine">
613
- <span class="badge bg-secondary-lt" x-text="a.machine"></span>
614
- </template>
615
- <template x-if="a.rig">
616
- <span class="badge bg-primary-lt" x-text="a.rig"></span>
617
- </template>
618
- <template x-for="tag in (a.tags || [])" :key="tag">
619
- <span class="badge bg-cyan-lt" x-text="tag"></span>
620
- </template>
621
- </div>
622
- <template x-if="a.capabilities && a.capabilities.length">
623
- <div class="d-flex gap-1 mt-1 flex-wrap">
624
- <template x-for="cap in a.capabilities" :key="cap">
625
- <span class="badge bg-purple-lt" x-text="'⚡' + cap"></span>
626
- </template>
627
- </div>
628
- </template>
629
- <div class="text-secondary small mt-2">
630
- <span x-text="'Last seen: ' + timeAgo(a.lastSeen)"></span>
631
- <span class="ms-2" x-text="'Created: ' + fmtTime(a.createdAt)"></span>
632
599
  </div>
600
+ <div class="text-secondary small mt-1" x-text="'Last seen: ' + timeAgo(a.lastSeen)"></div>
633
601
  </div>
634
602
  <div class="agent-actions d-flex gap-1">
635
603
  <button class="btn btn-sm btn-ghost-secondary p-1" title="Send message" @click.stop="openComposeToAgent(a)">
@@ -1604,7 +1572,6 @@
1604
1572
  </template>
1605
1573
  <span class="fw-bold text-truncate" x-text="selectedAgentDetail.name || selectedAgentDetail.id.slice(-12)"></span>
1606
1574
  </div>
1607
- <div class="text-secondary small text-truncate" x-text="selectedAgentDetail.id"></div>
1608
1575
  </div>
1609
1576
  <button class="btn btn-sm btn-ghost-secondary p-1" @click="closeAgentDetail()" title="Close">
1610
1577
  <i class="ti ti-x"></i>
@@ -1718,20 +1685,44 @@
1718
1685
  </template>
1719
1686
 
1720
1687
  <div class="p-3 border-bottom">
1721
- <h3 class="card-title mb-3">Tags</h3>
1722
- <div class="d-flex gap-1 flex-wrap">
1723
- <template x-for="tag in (selectedAgentDetail.tags || [])" :key="tag">
1724
- <span class="badge bg-cyan-lt" x-text="tag"></span>
1725
- </template>
1726
- <template x-if="!(selectedAgentDetail.tags || []).length">
1727
- <span class="text-secondary small">No tags</span>
1728
- </template>
1688
+ <div class="detail-row mb-2">
1689
+ <div class="text-secondary small">ID</div>
1690
+ <div class="small text-break user-select-all" style="font-family: var(--tblr-font-monospace); font-size: 0.75rem; opacity: 0.7" x-text="selectedAgentDetail.id"></div>
1729
1691
  </div>
1730
- <template x-if="selectedAgentDetail.capabilities && selectedAgentDetail.capabilities.length">
1731
- <div class="d-flex gap-1 flex-wrap mt-2">
1732
- <template x-for="cap in selectedAgentDetail.capabilities" :key="cap">
1733
- <span class="badge bg-purple-lt" x-text="cap"></span>
1692
+ <div class="detail-row mb-2">
1693
+ <div class="text-secondary small">Tags</div>
1694
+ <div class="d-flex gap-1 flex-wrap">
1695
+ <template x-for="tag in (selectedAgentDetail.tags || [])" :key="tag">
1696
+ <span class="badge bg-cyan-lt" x-text="tag"></span>
1734
1697
  </template>
1698
+ <template x-if="!(selectedAgentDetail.tags || []).length">
1699
+ <span class="text-secondary small">—</span>
1700
+ </template>
1701
+ </div>
1702
+ </div>
1703
+ <div class="detail-row mb-2">
1704
+ <div class="text-secondary small">Capabilities</div>
1705
+ <div class="d-flex gap-1 flex-wrap">
1706
+ <template x-if="selectedAgentDetail.capabilities && selectedAgentDetail.capabilities.length">
1707
+ <template x-for="cap in selectedAgentDetail.capabilities" :key="cap">
1708
+ <span class="badge bg-purple-lt" x-text="cap"></span>
1709
+ </template>
1710
+ </template>
1711
+ <template x-if="!(selectedAgentDetail.capabilities || []).length">
1712
+ <span class="text-secondary small">—</span>
1713
+ </template>
1714
+ </div>
1715
+ </div>
1716
+ <template x-if="agentChannels(selectedAgentDetail).length">
1717
+ <div class="detail-row mb-2">
1718
+ <div class="text-secondary small">Channels</div>
1719
+ <div class="d-flex gap-1 flex-wrap">
1720
+ <template x-for="ch in agentChannels(selectedAgentDetail)" :key="ch.id">
1721
+ <span class="badge" :class="'bg-' + channelPresence(ch).tone + '-lt'" :title="ch.type + ' · ' + ch.direction">
1722
+ <i class="ti me-1" :class="channelPresence(ch).icon"></i><span x-text="ch.name"></span>
1723
+ </span>
1724
+ </template>
1725
+ </div>
1735
1726
  </div>
1736
1727
  </template>
1737
1728
  </div>