@agenticmail/enterprise 0.5.299 → 0.5.300
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.
|
@@ -56,6 +56,7 @@ export const I = {
|
|
|
56
56
|
chevronLeft: () => h('svg', S, h('polyline', { points: '15 18 9 12 15 6' })),
|
|
57
57
|
chevronRight: () => h('svg', S, h('polyline', { points: '9 18 15 12 9 6' })),
|
|
58
58
|
chevronDown: () => h('svg', S, h('polyline', { points: '6 9 12 15 18 9' })),
|
|
59
|
+
mail: () => h('svg', S, h('path', { d: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z' }), h('polyline', { points: '22,6 12,13 2,6' })),
|
|
59
60
|
building: () => h('svg', S, h('path', { d: 'M3 21h18M3 10h18M3 7l9-4 9 4M4 10v11M20 10v11M8 14v.01M12 14v.01M16 14v.01M8 18v.01M12 18v.01M16 18v.01' })),
|
|
60
61
|
edit: () => h('svg', S, h('path', { d: 'M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7' }), h('path', { d: 'M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z' })),
|
|
61
62
|
};
|
|
@@ -158,8 +158,9 @@ export function OrganizationsPage() {
|
|
|
158
158
|
.finally(function() { setActing(''); });
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
// Show agents not already in THIS org (includes unassigned AND agents from other orgs)
|
|
162
|
+
var assignableAgents = allAgents.filter(function(a) {
|
|
163
|
+
return detailAgents.every(function(da) { return da.id !== a.id; });
|
|
163
164
|
});
|
|
164
165
|
|
|
165
166
|
if (loading) return h('div', { style: { padding: 40, textAlign: 'center', color: 'var(--text-muted)' } }, 'Loading organizations...');
|
|
@@ -185,7 +186,11 @@ export function OrganizationsPage() {
|
|
|
185
186
|
// Org cards
|
|
186
187
|
orgs.length === 0
|
|
187
188
|
? h('div', { className: 'card', style: { textAlign: 'center', padding: 40 } },
|
|
188
|
-
h('div', { style: {
|
|
189
|
+
h('div', { style: { width: 48, height: 48, margin: '0 auto 12px', borderRadius: '50%', background: 'var(--bg-tertiary)', display: 'flex', alignItems: 'center', justifyContent: 'center' } },
|
|
190
|
+
h('svg', { width: 28, height: 28, viewBox: '0 0 24 24', fill: 'none', stroke: 'var(--text-muted)', strokeWidth: 1.5, strokeLinecap: 'round', strokeLinejoin: 'round' },
|
|
191
|
+
h('path', { d: 'M3 21h18M3 10h18M3 7l9-4 9 4M4 10v11M20 10v11M8 14v.01M12 14v.01M16 14v.01M8 18v.01M12 18v.01M16 18v.01' })
|
|
192
|
+
)
|
|
193
|
+
),
|
|
189
194
|
h('div', { style: { fontSize: 15, fontWeight: 600, marginBottom: 4 } }, 'No organizations yet'),
|
|
190
195
|
h('div', { style: { color: 'var(--text-muted)', fontSize: 13, marginBottom: 16 } }, 'Create your first client organization to start managing multi-tenant agent deployments.'),
|
|
191
196
|
h('button', { className: 'btn btn-primary', onClick: openCreate }, I.plus(), ' Create Organization')
|
|
@@ -204,7 +209,7 @@ export function OrganizationsPage() {
|
|
|
204
209
|
org.description && h('div', { style: { fontSize: 13, color: 'var(--text-secondary)', marginBottom: 12, lineHeight: 1.5 } }, org.description),
|
|
205
210
|
h('div', { style: { display: 'flex', gap: 16, fontSize: 12, color: 'var(--text-muted)' } },
|
|
206
211
|
h('span', null, I.agents(), ' ', (org.agent_count || 0), ' agent', (org.agent_count || 0) !== 1 ? 's' : ''),
|
|
207
|
-
org.contact_email && h('span', null, '
|
|
212
|
+
org.contact_email && h('span', null, I.mail(), ' ', org.contact_email),
|
|
208
213
|
org.created_at && h('span', null, new Date(org.created_at).toLocaleDateString())
|
|
209
214
|
),
|
|
210
215
|
h('div', { style: { display: 'flex', gap: 6, marginTop: 12, borderTop: '1px solid var(--border)', paddingTop: 10 }, onClick: function(e) { e.stopPropagation(); } },
|
|
@@ -322,9 +327,14 @@ export function OrganizationsPage() {
|
|
|
322
327
|
h('div', { style: { fontSize: 14, fontWeight: 700, marginBottom: 8 } }, 'Assign Agent'),
|
|
323
328
|
h('div', { style: { display: 'flex', gap: 8 } },
|
|
324
329
|
h('select', { className: 'input', value: assignAgentId, onChange: function(e) { setAssignAgentId(e.target.value); }, style: { flex: 1 } },
|
|
325
|
-
h('option', { value: '' }, '— Select an
|
|
326
|
-
|
|
327
|
-
|
|
330
|
+
h('option', { value: '' }, '— Select an agent to assign —'),
|
|
331
|
+
assignableAgents.map(function(a) {
|
|
332
|
+
var label = a.name + (a.role ? ' (' + a.role + ')' : '');
|
|
333
|
+
if (a.client_org_id) {
|
|
334
|
+
var fromOrg = orgs.find(function(o) { return o.id === a.client_org_id; });
|
|
335
|
+
label += fromOrg ? ' [from ' + fromOrg.name + ']' : ' [assigned elsewhere]';
|
|
336
|
+
}
|
|
337
|
+
return h('option', { key: a.id, value: a.id }, label);
|
|
328
338
|
})
|
|
329
339
|
),
|
|
330
340
|
h('button', { className: 'btn btn-primary btn-sm', disabled: !assignAgentId || acting === 'assign', onClick: doAssignAgent }, acting === 'assign' ? 'Assigning...' : 'Assign')
|
package/package.json
CHANGED
|
@@ -56,6 +56,7 @@ export const I = {
|
|
|
56
56
|
chevronLeft: () => h('svg', S, h('polyline', { points: '15 18 9 12 15 6' })),
|
|
57
57
|
chevronRight: () => h('svg', S, h('polyline', { points: '9 18 15 12 9 6' })),
|
|
58
58
|
chevronDown: () => h('svg', S, h('polyline', { points: '6 9 12 15 18 9' })),
|
|
59
|
+
mail: () => h('svg', S, h('path', { d: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z' }), h('polyline', { points: '22,6 12,13 2,6' })),
|
|
59
60
|
building: () => h('svg', S, h('path', { d: 'M3 21h18M3 10h18M3 7l9-4 9 4M4 10v11M20 10v11M8 14v.01M12 14v.01M16 14v.01M8 18v.01M12 18v.01M16 18v.01' })),
|
|
60
61
|
edit: () => h('svg', S, h('path', { d: 'M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7' }), h('path', { d: 'M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z' })),
|
|
61
62
|
};
|
|
@@ -158,8 +158,9 @@ export function OrganizationsPage() {
|
|
|
158
158
|
.finally(function() { setActing(''); });
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
// Show agents not already in THIS org (includes unassigned AND agents from other orgs)
|
|
162
|
+
var assignableAgents = allAgents.filter(function(a) {
|
|
163
|
+
return detailAgents.every(function(da) { return da.id !== a.id; });
|
|
163
164
|
});
|
|
164
165
|
|
|
165
166
|
if (loading) return h('div', { style: { padding: 40, textAlign: 'center', color: 'var(--text-muted)' } }, 'Loading organizations...');
|
|
@@ -185,7 +186,11 @@ export function OrganizationsPage() {
|
|
|
185
186
|
// Org cards
|
|
186
187
|
orgs.length === 0
|
|
187
188
|
? h('div', { className: 'card', style: { textAlign: 'center', padding: 40 } },
|
|
188
|
-
h('div', { style: {
|
|
189
|
+
h('div', { style: { width: 48, height: 48, margin: '0 auto 12px', borderRadius: '50%', background: 'var(--bg-tertiary)', display: 'flex', alignItems: 'center', justifyContent: 'center' } },
|
|
190
|
+
h('svg', { width: 28, height: 28, viewBox: '0 0 24 24', fill: 'none', stroke: 'var(--text-muted)', strokeWidth: 1.5, strokeLinecap: 'round', strokeLinejoin: 'round' },
|
|
191
|
+
h('path', { d: 'M3 21h18M3 10h18M3 7l9-4 9 4M4 10v11M20 10v11M8 14v.01M12 14v.01M16 14v.01M8 18v.01M12 18v.01M16 18v.01' })
|
|
192
|
+
)
|
|
193
|
+
),
|
|
189
194
|
h('div', { style: { fontSize: 15, fontWeight: 600, marginBottom: 4 } }, 'No organizations yet'),
|
|
190
195
|
h('div', { style: { color: 'var(--text-muted)', fontSize: 13, marginBottom: 16 } }, 'Create your first client organization to start managing multi-tenant agent deployments.'),
|
|
191
196
|
h('button', { className: 'btn btn-primary', onClick: openCreate }, I.plus(), ' Create Organization')
|
|
@@ -204,7 +209,7 @@ export function OrganizationsPage() {
|
|
|
204
209
|
org.description && h('div', { style: { fontSize: 13, color: 'var(--text-secondary)', marginBottom: 12, lineHeight: 1.5 } }, org.description),
|
|
205
210
|
h('div', { style: { display: 'flex', gap: 16, fontSize: 12, color: 'var(--text-muted)' } },
|
|
206
211
|
h('span', null, I.agents(), ' ', (org.agent_count || 0), ' agent', (org.agent_count || 0) !== 1 ? 's' : ''),
|
|
207
|
-
org.contact_email && h('span', null, '
|
|
212
|
+
org.contact_email && h('span', null, I.mail(), ' ', org.contact_email),
|
|
208
213
|
org.created_at && h('span', null, new Date(org.created_at).toLocaleDateString())
|
|
209
214
|
),
|
|
210
215
|
h('div', { style: { display: 'flex', gap: 6, marginTop: 12, borderTop: '1px solid var(--border)', paddingTop: 10 }, onClick: function(e) { e.stopPropagation(); } },
|
|
@@ -322,9 +327,14 @@ export function OrganizationsPage() {
|
|
|
322
327
|
h('div', { style: { fontSize: 14, fontWeight: 700, marginBottom: 8 } }, 'Assign Agent'),
|
|
323
328
|
h('div', { style: { display: 'flex', gap: 8 } },
|
|
324
329
|
h('select', { className: 'input', value: assignAgentId, onChange: function(e) { setAssignAgentId(e.target.value); }, style: { flex: 1 } },
|
|
325
|
-
h('option', { value: '' }, '— Select an
|
|
326
|
-
|
|
327
|
-
|
|
330
|
+
h('option', { value: '' }, '— Select an agent to assign —'),
|
|
331
|
+
assignableAgents.map(function(a) {
|
|
332
|
+
var label = a.name + (a.role ? ' (' + a.role + ')' : '');
|
|
333
|
+
if (a.client_org_id) {
|
|
334
|
+
var fromOrg = orgs.find(function(o) { return o.id === a.client_org_id; });
|
|
335
|
+
label += fromOrg ? ' [from ' + fromOrg.name + ']' : ' [assigned elsewhere]';
|
|
336
|
+
}
|
|
337
|
+
return h('option', { key: a.id, value: a.id }, label);
|
|
328
338
|
})
|
|
329
339
|
),
|
|
330
340
|
h('button', { className: 'btn btn-primary btn-sm', disabled: !assignAgentId || acting === 'assign', onClick: doAssignAgent }, acting === 'assign' ? 'Assigning...' : 'Assign')
|