@agenticmail/enterprise 0.5.86 → 0.5.88

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/dist/cli.js CHANGED
@@ -48,7 +48,7 @@ Skill Development:
48
48
  break;
49
49
  case "setup":
50
50
  default:
51
- import("./setup-3KIT2V6U.js").then((m) => m.runSetupWizard()).catch(fatal);
51
+ import("./setup-FDTYP4T2.js").then((m) => m.runSetupWizard()).catch(fatal);
52
52
  break;
53
53
  }
54
54
  function fatal(err) {
@@ -4022,6 +4022,8 @@ function MeetingCapabilitiesSection(props) {
4022
4022
  if (cfg.meetingsEnabled) checkMeetingBrowser();
4023
4023
  }, [cfg.meetingsEnabled]);
4024
4024
 
4025
+ var _stopping = useState(false); var stopping = _stopping[0]; var setStopping = _stopping[1];
4026
+
4025
4027
  function launchMeetingBrowser() {
4026
4028
  setLaunching(true);
4027
4029
  engineCall('/bridge/agents/' + agentId + '/browser-config/launch-meeting-browser', { method: 'POST' })
@@ -4033,38 +4035,61 @@ function MeetingCapabilitiesSection(props) {
4033
4035
  .catch(function(e) { toast(e.message, 'error'); setLaunching(false); });
4034
4036
  }
4035
4037
 
4038
+ function stopMeetingBrowser() {
4039
+ setStopping(true);
4040
+ engineCall('/bridge/agents/' + agentId + '/browser-config/stop-meeting-browser', { method: 'POST' })
4041
+ .then(function(d) {
4042
+ if (d.error) { toast(d.error, 'error'); }
4043
+ else { toast('Meeting browser stopped', 'success'); setBrowserStatus(null); }
4044
+ setStopping(false);
4045
+ })
4046
+ .catch(function(e) { toast(e.message, 'error'); setStopping(false); });
4047
+ }
4048
+
4036
4049
  var meetingsOn = cfg.meetingsEnabled === true;
4037
4050
 
4038
4051
  var isContainer = sysCaps && sysCaps.raw && (sysCaps.raw.deployment === 'container');
4039
4052
  var canJoinMeetings = sysCaps && sysCaps.raw && sysCaps.raw.canJoinMeetings;
4053
+ var isObserverOnly = sysCaps && sysCaps.raw && sysCaps.raw.isContainerWithFakeMedia;
4054
+ var canJoinFullMedia = sysCaps && sysCaps.raw && sysCaps.raw.canJoinMeetingsFullMedia;
4040
4055
 
4041
4056
  return h('div', { style: sectionStyle },
4042
4057
  sectionTitle('\uD83C\uDFA5', 'Meetings & Video Calls'),
4043
4058
 
4044
- // Deployment capability warning
4045
- sysCaps && !canJoinMeetings && h('div', { style: {
4046
- background: 'rgba(255,152,0,0.08)', border: '1px solid rgba(255,152,0,0.3)',
4059
+ // Deployment capability warning — show for no-meeting OR observer-only
4060
+ sysCaps && (!canJoinMeetings || isObserverOnly) && h('div', { style: {
4061
+ background: isObserverOnly ? 'rgba(33,150,243,0.08)' : 'rgba(255,152,0,0.08)',
4062
+ border: '1px solid ' + (isObserverOnly ? 'rgba(33,150,243,0.3)' : 'rgba(255,152,0,0.3)'),
4047
4063
  borderRadius: 8, padding: '12px 16px', marginBottom: 16,
4048
4064
  } },
4049
4065
  h('div', { style: { display: 'flex', alignItems: 'flex-start', gap: 10 } },
4050
- h('span', { style: { fontSize: 18 } }, '\u26A0\uFE0F'),
4066
+ h('span', { style: { fontSize: 18 } }, isObserverOnly ? '\uD83D\uDC41\uFE0F' : '\u26A0\uFE0F'),
4051
4067
  h('div', null,
4052
4068
  h('div', { style: { fontWeight: 600, fontSize: 13, marginBottom: 4 } },
4053
- 'Limited on this deployment' + (isContainer ? ' (container)' : '')
4069
+ isObserverOnly
4070
+ ? 'Observer Mode — Container Deployment'
4071
+ : 'Limited on this deployment' + (isContainer ? ' (container)' : '')
4054
4072
  ),
4055
4073
  h('div', { style: { fontSize: 12, color: 'var(--text-muted)', lineHeight: 1.5 } },
4056
- 'Video meeting joining requires a display server, audio subsystem, and browser — which are not available on container deployments (Fly.io, Railway, etc.).'
4074
+ isObserverOnly
4075
+ ? 'This container has Chromium + virtual display, but uses fake media devices. The agent can join meetings as an observer — it can see the screen, read chat, and take notes, but cannot send or receive real audio/video.'
4076
+ : 'Video meeting joining requires a display server, audio subsystem, and browser — which are not available on container deployments (Fly.io, Railway, etc.).'
4057
4077
  ),
4058
- h('div', { style: { fontSize: 12, marginTop: 8, lineHeight: 1.5 } },
4078
+ isObserverOnly && h('div', { style: { fontSize: 12, marginTop: 8, lineHeight: 1.5 } },
4079
+ h('strong', null, 'Works in observer mode: '),
4080
+ 'Join meetings, read chat, see shared screens, take screenshots, capture meeting notes.'
4081
+ ),
4082
+ isObserverOnly && h('div', { style: { fontSize: 12, marginTop: 4, lineHeight: 1.5 } },
4083
+ h('strong', null, 'Does NOT work: '),
4084
+ 'Speaking, sending audio, showing video/camera, screen sharing.'
4085
+ ),
4086
+ !isObserverOnly && h('div', { style: { fontSize: 12, marginTop: 8, lineHeight: 1.5 } },
4059
4087
  h('strong', null, 'What works here: '), 'Calendar management, meeting prep, Drive organization, notes, email scanning for invites, RSVP.'
4060
4088
  ),
4061
- h('div', { style: { fontSize: 12, marginTop: 4, lineHeight: 1.5 } },
4062
- h('strong', null, 'For meeting joining: '), 'Deploy on a VM (Hetzner, DigitalOcean, GCP) with our ',
4089
+ h('div', { style: { fontSize: 12, marginTop: 8, lineHeight: 1.5 } },
4090
+ h('strong', null, 'For full media (audio + video): '), 'Deploy on a VM (Hetzner, DigitalOcean, GCP) with our ',
4063
4091
  h('code', { style: { fontSize: 11, background: 'var(--bg-secondary)', padding: '1px 4px', borderRadius: 3 } }, 'vm-setup.sh'),
4064
- ' script, or use a Remote Browser (CDP) provider below.'
4065
- ),
4066
- sysCaps.unavailable && sysCaps.unavailable.length > 0 && h('div', { style: { fontSize: 11, color: 'var(--text-muted)', marginTop: 8 } },
4067
- 'Missing: ' + sysCaps.unavailable.join(' \u2022 ')
4092
+ ' script, or use a Remote Browser (CDP) provider.'
4068
4093
  )
4069
4094
  )
4070
4095
  )
@@ -4111,8 +4136,18 @@ function MeetingCapabilitiesSection(props) {
4111
4136
  ),
4112
4137
  browserStatus?.ok
4113
4138
  ? h('div', null,
4114
- h('div', { style: { fontSize: 12, color: 'var(--text-muted)' } }, browserStatus.browserVersion || 'Chromium ready'),
4115
- isContainer && !canJoinMeetings && h('div', { style: { fontSize: 11, color: 'var(--warning)', marginTop: 4 } },
4139
+ h('div', { style: { display: 'flex', alignItems: 'center', gap: 8, marginBottom: 6 } },
4140
+ h('span', { style: { fontSize: 12, color: 'var(--text-muted)' } }, browserStatus.browserVersion || 'Chromium ready'),
4141
+ isObserverOnly && h('span', { className: 'badge', style: { fontSize: 10, padding: '1px 6px', background: 'rgba(33,150,243,0.15)', color: 'var(--accent)' } }, 'Observer Only'),
4142
+ browserStatus.port && h('span', { style: { fontSize: 11, color: 'var(--text-muted)' } }, 'Port ' + browserStatus.port)
4143
+ ),
4144
+ h('button', {
4145
+ className: 'btn btn-sm',
4146
+ disabled: stopping,
4147
+ onClick: stopMeetingBrowser,
4148
+ style: { background: 'var(--danger)', color: '#fff', border: 'none', marginTop: 4 },
4149
+ }, stopping ? 'Stopping...' : '\u23F9\uFE0F Stop Meeting Browser'),
4150
+ isContainer && !canJoinMeetings && !isObserverOnly && h('div', { style: { fontSize: 11, color: 'var(--warning)', marginTop: 4 } },
4116
4151
  '\u26A0 Browser is headless-only on this container. It cannot join video calls (no display/audio).'
4117
4152
  )
4118
4153
  )
@@ -0,0 +1,11 @@
1
+ import {
2
+ detectCapabilities,
3
+ getCapabilitySummary,
4
+ resetCapabilitiesCache
5
+ } from "./chunk-NRF3YRF7.js";
6
+ import "./chunk-KFQGP6VL.js";
7
+ export {
8
+ detectCapabilities,
9
+ getCapabilitySummary,
10
+ resetCapabilitiesCache
11
+ };
package/dist/index.js CHANGED
@@ -35,8 +35,8 @@ import {
35
35
  executeTool,
36
36
  runAgentLoop,
37
37
  toolsToDefinitions
38
- } from "./chunk-FN73A3AQ.js";
39
- import "./chunk-TGOSFAYW.js";
38
+ } from "./chunk-PGD43XUU.js";
39
+ import "./chunk-NRF3YRF7.js";
40
40
  import "./chunk-TYW5XTOW.js";
41
41
  import "./chunk-AQH4DFYV.js";
42
42
  import {
@@ -52,11 +52,11 @@ import {
52
52
  requireRole,
53
53
  securityHeaders,
54
54
  validate
55
- } from "./chunk-QJIY4RQJ.js";
55
+ } from "./chunk-FOEQH5TZ.js";
56
56
  import {
57
57
  provision,
58
58
  runSetupWizard
59
- } from "./chunk-U72GUDSD.js";
59
+ } from "./chunk-5SKX72EH.js";
60
60
  import {
61
61
  ENGINE_TABLES,
62
62
  ENGINE_TABLES_POSTGRES,