@ouro.bot/cli 0.1.0-alpha.450 → 0.1.0-alpha.451

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.
@@ -338,6 +338,7 @@ const PROCESS_TYPE_LABELS = {
338
338
  inner: "inner session",
339
339
  teams: "teams handler",
340
340
  bluebubbles: "bluebubbles handler",
341
+ mail: "mail handler",
341
342
  mcp: "mcp bridge",
342
343
  };
343
344
  function processTypeLabel(channel) {
@@ -412,18 +413,24 @@ function localSenseStatusLines() {
412
413
  return [..._senseStatusLinesCache];
413
414
  }
414
415
  const config = (0, identity_1.loadAgentConfig)();
415
- const senses = config.senses ?? {
416
- cli: { enabled: true },
417
- teams: { enabled: false },
418
- bluebubbles: { enabled: false },
416
+ const configuredSenses = config.senses ?? {};
417
+ const senses = {
418
+ ...configuredSenses,
419
+ cli: configuredSenses.cli ?? { enabled: true },
420
+ teams: configuredSenses.teams ?? { enabled: false },
421
+ bluebubbles: configuredSenses.bluebubbles ?? { enabled: false },
422
+ mail: configuredSenses.mail ?? { enabled: false },
419
423
  };
420
424
  const payload = (0, config_1.loadConfig)();
421
425
  const teams = payload.teams;
422
426
  const bluebubbles = payload.bluebubbles;
427
+ const mailroom = payload.mailroom;
428
+ const privateKeys = mailroom?.privateKeys;
423
429
  const configured = {
424
430
  cli: true,
425
431
  teams: hasTextField(teams, "clientId") && hasTextField(teams, "clientSecret") && hasTextField(teams, "tenantId"),
426
432
  bluebubbles: hasTextField(bluebubbles, "serverUrl") && hasTextField(bluebubbles, "password"),
433
+ mail: hasTextField(mailroom, "mailboxAddress") && !!privateKeys && typeof privateKeys === "object" && !Array.isArray(privateKeys),
427
434
  };
428
435
  const rows = [
429
436
  { label: "CLI", status: "interactive" },
@@ -435,6 +442,10 @@ function localSenseStatusLines() {
435
442
  label: "BlueBubbles",
436
443
  status: !senses.bluebubbles.enabled ? "disabled" : configured.bluebubbles ? "ready" : "not_attached",
437
444
  },
445
+ {
446
+ label: "Mail",
447
+ status: !senses.mail.enabled ? "disabled" : configured.mail ? "ready" : "needs_config",
448
+ },
438
449
  ];
439
450
  _senseStatusLinesCache = rows.map((row) => `- ${row.label}: ${row.status}`);
440
451
  return [..._senseStatusLinesCache];
@@ -453,6 +464,7 @@ function senseRuntimeGuidance(channel, preReadStatusLines) {
453
464
  lines.push("If asked how to enable another sense, I explain the relevant agent.json senses entry and required agent-vault runtime/config fields instead of guessing.");
454
465
  lines.push("teams setup truth: run `ouro connect teams --agent <agent>` from the connect bay; it stores Teams runtime/config fields and enables `senses.teams.enabled`.");
455
466
  lines.push("bluebubbles setup truth: run `ouro connect bluebubbles --agent <agent>` from the connect bay; it stores this machine's BlueBubbles URL/password/listener config in the agent vault machine runtime item.");
467
+ lines.push("mail setup truth: run `ouro connect mail --agent <agent>` from the connect bay; it provisions Mailroom coordinates, stores private mail keys in the agent vault runtime/config item, and enables `senses.mail.enabled`. For HEY bootstrap, ask the human for the browser-exported MBOX path and run `ouro mail import-mbox --file <path> --owner-email <email> --source hey --agent <agent>`; HEY forwarding/DNS/MX remain human-confirmed steps.");
456
468
  if (channel === "cli") {
457
469
  lines.push("cli is interactive: it is available when the user opens it, not something `ouro up` daemonizes.");
458
470
  }