handleReplyCommand method

Future<void> handleReplyCommand(
  1. String rest
)

/reply <id|address> <text> - direct-send to a panel's reply mailbox (absolute addresses go cross-instance) or to a live sibling id.

Implementation

Future<void> handleReplyCommand(String rest) async {
  final trimmed = rest.trim();
  final parts = trimmed.split(_commandWhitespace);
  if (parts.length < 2 || parts.first.isEmpty) {
    io.writeln('usage: /reply <panel-id|agent-id|mailbox-address> <text>');
    return;
  }
  final target = parts.first;
  final text = trimmed.substring(target.length).trim();
  var address = target;
  if (!target.contains('/')) {
    // A panel id resolves to its reply address; a bare sibling id to its
    // mailbox; otherwise it is treated as an absolute address as-is.
    final resolved =
        _hubPanels[target]?.replyAddress ??
        (_subagentManager[target] != null
            ? _subagentManager.mailboxOf(target)
            : target);
    address = resolved;
  }
  final fabric = _subagentManager.messaging;
  if (fabric == null) {
    io.writeln('no messaging fabric - cannot deliver the reply');
    return;
  }
  await fabric.send(
    AgentMessage(
      id: newMessageId(),
      fromId: _subagentManager.selfId,
      toId: address,
      text: text,
      sentAt: DateTime.now().toUtc().toIso8601String(),
    ),
  );
  io.writeln('reply queued to $address');
}