@agenticmail/enterprise 0.5.354 → 0.5.356

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.
@@ -466,7 +466,7 @@ var AgentHeartbeatManager = class {
466
466
  return;
467
467
  }
468
468
  try {
469
- const { guardrails } = await import("./routes-RU4K3BXY.js");
469
+ const { guardrails } = await import("./routes-AKBXVVBO.js");
470
470
  const status = await guardrails.getStatus(ctx.agentId);
471
471
  if (status.paused || status.offDuty) {
472
472
  console.log(`[heartbeat] Skipping action dispatch \u2014 agent is ${status.offDuty ? "off duty" : "paused"}`);
@@ -13749,6 +13749,52 @@ async function createAllTools(options) {
13749
13749
  } catch (_e) {
13750
13750
  }
13751
13751
  }
13752
+ var smtpEmailTools = [];
13753
+ if (options?.emailConfig?.smtpHost && !tp) {
13754
+ try {
13755
+ var { executeSmtpEmailTool, getSmtpEmailTools: getSmtpIds } = await import("./smtp-email-WGUG4M45.js");
13756
+ var smtpToolIds = getSmtpIds();
13757
+ var smtpToolDefs = {
13758
+ email_send: { desc: "Send an email via SMTP", params: { type: "object", properties: { to: { type: "string", description: "Recipient email" }, cc: { type: "string" }, bcc: { type: "string" }, subject: { type: "string" }, body: { type: "string", description: "Email body text" }, html: { type: "string" }, replyTo: { type: "string" } }, required: ["to", "body"] } },
13759
+ email_reply: { desc: "Reply to an email by UID", params: { type: "object", properties: { uid: { type: "number", description: "Email UID to reply to" }, folder: { type: "string" }, body: { type: "string" }, all: { type: "boolean", description: "Reply all" } }, required: ["uid", "body"] } },
13760
+ email_forward: { desc: "Forward an email", params: { type: "object", properties: { uid: { type: "number" }, to: { type: "string" }, folder: { type: "string" }, comment: { type: "string" } }, required: ["uid", "to"] } },
13761
+ email_search: { desc: "Search emails", params: { type: "object", properties: { query: { type: "string" }, from: { type: "string" }, to: { type: "string" }, subject: { type: "string" }, since: { type: "string" }, before: { type: "string" }, folder: { type: "string" }, limit: { type: "number" } } } },
13762
+ email_read: { desc: "Read a specific email by UID", params: { type: "object", properties: { uid: { type: "number" }, folder: { type: "string" }, markRead: { type: "boolean" } }, required: ["uid"] } },
13763
+ email_list: { desc: "List recent emails", params: { type: "object", properties: { folder: { type: "string" }, limit: { type: "number" }, unreadOnly: { type: "boolean" } } } },
13764
+ email_folders: { desc: "List email folders", params: { type: "object", properties: {} } },
13765
+ email_move: { desc: "Move email to folder", params: { type: "object", properties: { uid: { type: "number" }, from: { type: "string" }, to: { type: "string" } }, required: ["uid", "to"] } },
13766
+ email_delete: { desc: "Delete email", params: { type: "object", properties: { uid: { type: "number" }, folder: { type: "string" }, permanent: { type: "boolean" } }, required: ["uid"] } },
13767
+ email_mark_read: { desc: "Mark email read/unread", params: { type: "object", properties: { uid: { type: "number" }, folder: { type: "string" }, unread: { type: "boolean" } }, required: ["uid"] } }
13768
+ };
13769
+ var emailCfg = options.emailConfig;
13770
+ for (var toolId of smtpToolIds) {
13771
+ var def = smtpToolDefs[toolId];
13772
+ if (!def) continue;
13773
+ smtpEmailTools.push({
13774
+ name: toolId,
13775
+ label: toolId.replace(/_/g, " ").replace(/\b\w/g, function(c) {
13776
+ return c.toUpperCase();
13777
+ }),
13778
+ description: def.desc,
13779
+ category: "communication",
13780
+ parameters: def.params,
13781
+ execute: /* @__PURE__ */ (function(tid) {
13782
+ return async function(params) {
13783
+ var ctx = { emailConfig: emailCfg };
13784
+ var result = await executeSmtpEmailTool(tid, ctx, params);
13785
+ if (result.error) return { content: [{ type: "text", text: "Error: " + result.error }] };
13786
+ return { content: [{ type: "text", text: JSON.stringify(result.result, null, 2) }] };
13787
+ };
13788
+ })(toolId)
13789
+ });
13790
+ }
13791
+ if (smtpEmailTools.length > 0) {
13792
+ console.log(`[tools] Loaded ${smtpEmailTools.length} SMTP/IMAP email tools for ${emailCfg.email || emailCfg.smtpUser}`);
13793
+ }
13794
+ } catch (e) {
13795
+ console.warn(`[tools] SMTP email tools load failed: ${e.message}`);
13796
+ }
13797
+ }
13752
13798
  var integrationTools = [];
13753
13799
  if (options?.vault) {
13754
13800
  try {
@@ -13867,7 +13913,7 @@ async function createAllTools(options) {
13867
13913
  }
13868
13914
  var enabledTools = rawTools.filter(function(t) {
13869
13915
  return t !== null;
13870
- }).concat(enterpriseTools).concat(agenticmailTools).concat(workspaceTools).concat(enterpriseBrowserTools).concat(integrationTools).concat(mcpServerTools).concat(messagingTools).concat(managementTools).concat(localSystemTools);
13916
+ }).concat(enterpriseTools).concat(agenticmailTools).concat(workspaceTools).concat(smtpEmailTools).concat(enterpriseBrowserTools).concat(integrationTools).concat(mcpServerTools).concat(messagingTools).concat(managementTools).concat(localSystemTools);
13871
13917
  if (options?.middleware) {
13872
13918
  var mw = createToolMiddleware({
13873
13919
  agentId: options.agentId,
@@ -34,7 +34,7 @@ import {
34
34
  PermissionEngine,
35
35
  SKILL_SUITES,
36
36
  init_skills as init_skills2
37
- } from "./chunk-NOAQG5CY.js";
37
+ } from "./chunk-HIQY73V2.js";
38
38
  import {
39
39
  AgentConfigGenerator,
40
40
  DeploymentEngine,
@@ -62,7 +62,7 @@ import {
62
62
  FULL_SKILL_DEFINITIONS,
63
63
  init_emoji,
64
64
  init_skills
65
- } from "./chunk-ZGYVXYQQ.js";
65
+ } from "./chunk-5WDYN4UV.js";
66
66
  import {
67
67
  VALID_CATEGORIES,
68
68
  init_skill_validator,
@@ -790,7 +790,7 @@ var init_lifecycle = __esm({
790
790
  async deploy(agentId, deployedBy) {
791
791
  const agent = this.getAgent(agentId);
792
792
  if (!agent) throw new Error(`Agent ${agentId} not found`);
793
- if (!["ready", "stopped", "error", "degraded", "draft"].includes(agent.state)) {
793
+ if (!["ready", "stopped", "error", "degraded", "draft", "provisioning", "deploying", "starting"].includes(agent.state)) {
794
794
  throw new Error(`Cannot deploy from state "${agent.state}"`);
795
795
  }
796
796
  if (!this.isConfigComplete(agent.config)) {
@@ -7075,7 +7075,7 @@ function createAgentRoutes(opts) {
7075
7075
  if (presetName || permissionsData) {
7076
7076
  let profile = { id: agentId, name: presetName || "Custom", createdAt: (/* @__PURE__ */ new Date()).toISOString(), updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
7077
7077
  if (presetName) {
7078
- const { PRESET_PROFILES: PRESET_PROFILES2 } = await import("./skills-EL4RTJKK.js");
7078
+ const { PRESET_PROFILES: PRESET_PROFILES2 } = await import("./skills-4MHEPJGC.js");
7079
7079
  const preset = PRESET_PROFILES2.find((p) => p.name === presetName);
7080
7080
  if (preset) Object.assign(profile, preset);
7081
7081
  }
@@ -7103,7 +7103,7 @@ function createAgentRoutes(opts) {
7103
7103
  }
7104
7104
  const managedAgent = await lifecycle2.createAgent(orgId, config, actor);
7105
7105
  try {
7106
- const { knowledgeBase: kbEngine } = await import("./routes-RU4K3BXY.js");
7106
+ const { knowledgeBase: kbEngine } = await import("./routes-AKBXVVBO.js");
7107
7107
  const allKbs = kbEngine.getAllKnowledgeBases();
7108
7108
  const clientOrgId = managedAgent?.clientOrgId || config?.clientOrgId || null;
7109
7109
  let kbAssigned = 0;
@@ -1302,18 +1302,53 @@ var init_gws_tasks = __esm({
1302
1302
  }
1303
1303
  });
1304
1304
 
1305
- // src/engine/skills/core-tools.ts
1306
- var core_tools_exports = {};
1307
- __export(core_tools_exports, {
1305
+ // src/engine/skills/smtp-email.ts
1306
+ var smtp_email_exports = {};
1307
+ __export(smtp_email_exports, {
1308
1308
  SKILL_DEF: () => SKILL_DEF35,
1309
1309
  TOOLS: () => TOOLS35
1310
1310
  });
1311
1311
  var SKILL_DEF35, TOOLS35;
1312
+ var init_smtp_email = __esm({
1313
+ "src/engine/skills/smtp-email.ts"() {
1314
+ "use strict";
1315
+ init_emoji();
1316
+ SKILL_DEF35 = {
1317
+ id: "smtp-email",
1318
+ name: "Email (SMTP/IMAP)",
1319
+ description: "Send, read, and manage emails via SMTP/IMAP \u2014 works with any email provider (Gmail, Outlook, Yahoo, custom).",
1320
+ category: "communication",
1321
+ risk: "high",
1322
+ icon: Emoji.email,
1323
+ source: "builtin"
1324
+ };
1325
+ TOOLS35 = [
1326
+ { id: "email_send", name: "Send Email", description: "Send an email via SMTP", category: "communicate", risk: "high", skillId: "smtp-email", sideEffects: ["sends-email"] },
1327
+ { id: "email_reply", name: "Reply to Email", description: "Reply to an email by message ID", category: "communicate", risk: "high", skillId: "smtp-email", sideEffects: ["sends-email"] },
1328
+ { id: "email_forward", name: "Forward Email", description: "Forward an email to another recipient", category: "communicate", risk: "high", skillId: "smtp-email", sideEffects: ["sends-email"] },
1329
+ { id: "email_search", name: "Search Emails", description: "Search inbox via IMAP (by sender, subject, date, text)", category: "read", risk: "low", skillId: "smtp-email", sideEffects: [] },
1330
+ { id: "email_read", name: "Read Email", description: "Read a specific email by sequence number or UID", category: "read", risk: "low", skillId: "smtp-email", sideEffects: [] },
1331
+ { id: "email_list", name: "List Emails", description: "List recent emails from inbox or folder", category: "read", risk: "low", skillId: "smtp-email", sideEffects: [] },
1332
+ { id: "email_folders", name: "List Folders", description: "List available email folders/mailboxes", category: "read", risk: "low", skillId: "smtp-email", sideEffects: [] },
1333
+ { id: "email_move", name: "Move Email", description: "Move an email to a different folder", category: "write", risk: "low", skillId: "smtp-email", sideEffects: [] },
1334
+ { id: "email_delete", name: "Delete Email", description: "Move email to trash or permanently delete", category: "destroy", risk: "medium", skillId: "smtp-email", sideEffects: ["deletes-data"] },
1335
+ { id: "email_mark_read", name: "Mark Read/Unread", description: "Mark emails as read or unread", category: "write", risk: "low", skillId: "smtp-email", sideEffects: [] }
1336
+ ];
1337
+ }
1338
+ });
1339
+
1340
+ // src/engine/skills/core-tools.ts
1341
+ var core_tools_exports = {};
1342
+ __export(core_tools_exports, {
1343
+ SKILL_DEF: () => SKILL_DEF36,
1344
+ TOOLS: () => TOOLS36
1345
+ });
1346
+ var SKILL_DEF36, TOOLS36;
1312
1347
  var init_core_tools = __esm({
1313
1348
  "src/engine/skills/core-tools.ts"() {
1314
1349
  "use strict";
1315
1350
  init_emoji();
1316
- SKILL_DEF35 = {
1351
+ SKILL_DEF36 = {
1317
1352
  id: "core-tools",
1318
1353
  name: "Core Tools",
1319
1354
  description: "File operations, shell, search, and browser automation.",
@@ -1322,7 +1357,7 @@ var init_core_tools = __esm({
1322
1357
  icon: Emoji.wrench,
1323
1358
  source: "builtin"
1324
1359
  };
1325
- TOOLS35 = [
1360
+ TOOLS36 = [
1326
1361
  { id: "read", name: "Read File", description: "Read file contents", category: "read", risk: "low", skillId: "core-tools", sideEffects: [] },
1327
1362
  { id: "write", name: "Write File", description: "Write content to a file", category: "write", risk: "medium", skillId: "core-tools", sideEffects: ["modifies-files"] },
1328
1363
  { id: "edit", name: "Edit File", description: "Edit a file with find/replace", category: "write", risk: "medium", skillId: "core-tools", sideEffects: ["modifies-files"] },
@@ -1340,15 +1375,15 @@ var init_core_tools = __esm({
1340
1375
  // src/engine/skills/meeting-lifecycle.ts
1341
1376
  var meeting_lifecycle_exports = {};
1342
1377
  __export(meeting_lifecycle_exports, {
1343
- SKILL_DEF: () => SKILL_DEF36,
1344
- TOOLS: () => TOOLS36
1378
+ SKILL_DEF: () => SKILL_DEF37,
1379
+ TOOLS: () => TOOLS37
1345
1380
  });
1346
- var SKILL_DEF36, TOOLS36;
1381
+ var SKILL_DEF37, TOOLS37;
1347
1382
  var init_meeting_lifecycle = __esm({
1348
1383
  "src/engine/skills/meeting-lifecycle.ts"() {
1349
1384
  "use strict";
1350
1385
  init_emoji();
1351
- SKILL_DEF36 = {
1386
+ SKILL_DEF37 = {
1352
1387
  id: "meeting-lifecycle",
1353
1388
  name: "Meeting Lifecycle",
1354
1389
  description: "Meeting preparation, recording, saving notes, and capability checks.",
@@ -1357,7 +1392,7 @@ var init_meeting_lifecycle = __esm({
1357
1392
  icon: Emoji.clipboard,
1358
1393
  source: "builtin"
1359
1394
  };
1360
- TOOLS36 = [
1395
+ TOOLS37 = [
1361
1396
  { id: "system_capabilities", name: "System Capabilities", description: "Check system capabilities and available features", category: "read", risk: "low", skillId: "meeting-lifecycle", sideEffects: [] },
1362
1397
  { id: "meeting_prepare", name: "Prepare Meeting", description: "Prepare briefing materials for an upcoming meeting", category: "read", risk: "low", skillId: "meeting-lifecycle", sideEffects: [] },
1363
1398
  { id: "meeting_save", name: "Save Meeting Notes", description: "Save meeting notes and summary", category: "write", risk: "low", skillId: "meeting-lifecycle", sideEffects: ["sends-email"] },
@@ -1370,15 +1405,15 @@ var init_meeting_lifecycle = __esm({
1370
1405
  // src/engine/skills/agent-memory.ts
1371
1406
  var agent_memory_exports = {};
1372
1407
  __export(agent_memory_exports, {
1373
- SKILL_DEF: () => SKILL_DEF37,
1374
- TOOLS: () => TOOLS37
1408
+ SKILL_DEF: () => SKILL_DEF38,
1409
+ TOOLS: () => TOOLS38
1375
1410
  });
1376
- var SKILL_DEF37, TOOLS37;
1411
+ var SKILL_DEF38, TOOLS38;
1377
1412
  var init_agent_memory = __esm({
1378
1413
  "src/engine/skills/agent-memory.ts"() {
1379
1414
  "use strict";
1380
1415
  init_emoji();
1381
- SKILL_DEF37 = {
1416
+ SKILL_DEF38 = {
1382
1417
  id: "agent-memory",
1383
1418
  name: "Agent Memory",
1384
1419
  description: "Persistent memory for storing and recalling information across sessions.",
@@ -1387,7 +1422,7 @@ var init_agent_memory = __esm({
1387
1422
  icon: Emoji.brain,
1388
1423
  source: "builtin"
1389
1424
  };
1390
- TOOLS37 = [
1425
+ TOOLS38 = [
1391
1426
  { id: "memory", name: "Memory", description: "Store or recall a memory", category: "write", risk: "low", skillId: "agent-memory", sideEffects: [] },
1392
1427
  { id: "memory_reflect", name: "Memory Reflect", description: "Reflect on and consolidate memories", category: "write", risk: "low", skillId: "agent-memory", sideEffects: [] },
1393
1428
  { id: "memory_context", name: "Memory Context", description: "Get relevant memory context for a topic", category: "read", risk: "low", skillId: "agent-memory", sideEffects: [] },
@@ -1399,15 +1434,15 @@ var init_agent_memory = __esm({
1399
1434
  // src/engine/skills/visual-memory.ts
1400
1435
  var visual_memory_exports = {};
1401
1436
  __export(visual_memory_exports, {
1402
- SKILL_DEF: () => SKILL_DEF38,
1403
- TOOLS: () => TOOLS38
1437
+ SKILL_DEF: () => SKILL_DEF39,
1438
+ TOOLS: () => TOOLS39
1404
1439
  });
1405
- var SKILL_DEF38, TOOLS38;
1440
+ var SKILL_DEF39, TOOLS39;
1406
1441
  var init_visual_memory = __esm({
1407
1442
  "src/engine/skills/visual-memory.ts"() {
1408
1443
  "use strict";
1409
1444
  init_emoji();
1410
- SKILL_DEF38 = {
1445
+ SKILL_DEF39 = {
1411
1446
  id: "visual-memory",
1412
1447
  name: "Visual Memory",
1413
1448
  description: "Enterprise visual memory system \u2014 persistent, DB-backed visual recall with BM25F search integration. Emulates human visual memory: selective capture, semantic consolidation, confidence decay, fast pattern recognition.",
@@ -1416,7 +1451,7 @@ var init_visual_memory = __esm({
1416
1451
  icon: Emoji.eye,
1417
1452
  source: "builtin"
1418
1453
  };
1419
- TOOLS38 = [
1454
+ TOOLS39 = [
1420
1455
  { id: "vision_capture", name: "Capture", description: "Screenshot browser page and store in visual memory with BM25F-searchable semantic link", category: "memory", risk: "low", skillId: "visual-memory", sideEffects: ["storage"] },
1421
1456
  { id: "vision_query", name: "Query", description: "Search visual memory by time, session, or description", category: "read", risk: "low", skillId: "visual-memory", sideEffects: [] },
1422
1457
  { id: "vision_compare", name: "Compare", description: "Side-by-side comparison of two observations with similarity metrics", category: "read", risk: "low", skillId: "visual-memory", sideEffects: [] },
@@ -1434,15 +1469,15 @@ var init_visual_memory = __esm({
1434
1469
  // src/engine/skills/knowledge-search.ts
1435
1470
  var knowledge_search_exports = {};
1436
1471
  __export(knowledge_search_exports, {
1437
- SKILL_DEF: () => SKILL_DEF39,
1438
- TOOLS: () => TOOLS39
1472
+ SKILL_DEF: () => SKILL_DEF40,
1473
+ TOOLS: () => TOOLS40
1439
1474
  });
1440
- var SKILL_DEF39, TOOLS39;
1475
+ var SKILL_DEF40, TOOLS40;
1441
1476
  var init_knowledge_search = __esm({
1442
1477
  "src/engine/skills/knowledge-search.ts"() {
1443
1478
  "use strict";
1444
1479
  init_emoji();
1445
- SKILL_DEF39 = {
1480
+ SKILL_DEF40 = {
1446
1481
  id: "knowledge-search",
1447
1482
  name: "Knowledge Search",
1448
1483
  description: "Search organization knowledge bases and shared knowledge hub across all agents.",
@@ -1451,7 +1486,7 @@ var init_knowledge_search = __esm({
1451
1486
  icon: Emoji.search,
1452
1487
  source: "builtin"
1453
1488
  };
1454
- TOOLS39 = [
1489
+ TOOLS40 = [
1455
1490
  { id: "knowledge_base_search", name: "Knowledge Base Search", description: "Search org knowledge bases for docs, FAQs, processes", category: "read", risk: "low", skillId: "knowledge-search", sideEffects: [] },
1456
1491
  { id: "knowledge_hub_search", name: "Knowledge Hub Search", description: "Search shared hub for learnings from all agents", category: "read", risk: "low", skillId: "knowledge-search", sideEffects: [] },
1457
1492
  { id: "knowledge_search_stats", name: "Knowledge Search Stats", description: "View search history and efficiency metrics", category: "read", risk: "low", skillId: "knowledge-search", sideEffects: [] }
@@ -1715,15 +1750,15 @@ var init_agent_management = __esm({
1715
1750
  // src/engine/skills/agenticmail.ts
1716
1751
  var agenticmail_exports = {};
1717
1752
  __export(agenticmail_exports, {
1718
- SKILL_DEF: () => SKILL_DEF40,
1719
- TOOLS: () => TOOLS40
1753
+ SKILL_DEF: () => SKILL_DEF41,
1754
+ TOOLS: () => TOOLS41
1720
1755
  });
1721
- var SKILL_DEF40, S, TOOLS40;
1756
+ var SKILL_DEF41, S, TOOLS41;
1722
1757
  var init_agenticmail = __esm({
1723
1758
  "src/engine/skills/agenticmail.ts"() {
1724
1759
  "use strict";
1725
1760
  init_emoji();
1726
- SKILL_DEF40 = {
1761
+ SKILL_DEF41 = {
1727
1762
  id: "agenticmail",
1728
1763
  name: "AgenticMail",
1729
1764
  description: "AI-native email platform \u2014 send/receive email, inter-agent messaging, storage, SMS, task management, and multi-agent coordination.",
@@ -1733,7 +1768,7 @@ var init_agenticmail = __esm({
1733
1768
  source: "builtin"
1734
1769
  };
1735
1770
  S = "agenticmail";
1736
- TOOLS40 = [
1771
+ TOOLS41 = [
1737
1772
  // ─── Email Core ────────────────────────────────────────
1738
1773
  { id: "agenticmail_send", name: "Send Email", description: "Send an email from the agent mailbox. Outbound guard scans for PII/credentials.", category: "communicate", risk: "high", skillId: S, sideEffects: ["sends-email"] },
1739
1774
  { id: "agenticmail_reply", name: "Reply to Email", description: "Reply to an email by UID. Outbound guard applies.", category: "communicate", risk: "high", skillId: S, sideEffects: ["sends-email"] },
@@ -1819,15 +1854,15 @@ var init_agenticmail = __esm({
1819
1854
  // src/engine/skills/enterprise-database.ts
1820
1855
  var enterprise_database_exports = {};
1821
1856
  __export(enterprise_database_exports, {
1822
- SKILL_DEF: () => SKILL_DEF41,
1823
- TOOLS: () => TOOLS41
1857
+ SKILL_DEF: () => SKILL_DEF42,
1858
+ TOOLS: () => TOOLS42
1824
1859
  });
1825
- var SKILL_DEF41, TOOLS41;
1860
+ var SKILL_DEF42, TOOLS42;
1826
1861
  var init_enterprise_database = __esm({
1827
1862
  "src/engine/skills/enterprise-database.ts"() {
1828
1863
  "use strict";
1829
1864
  init_emoji();
1830
- SKILL_DEF41 = {
1865
+ SKILL_DEF42 = {
1831
1866
  id: "enterprise-database",
1832
1867
  name: "Database Query",
1833
1868
  description: "Execute read-only SQL queries against approved databases. Supports PostgreSQL, MySQL, SQLite, and MSSQL. Includes schema introspection, parameterized queries, result formatting, and query plan analysis. All queries run in read-only transactions with timeout limits.",
@@ -1838,7 +1873,7 @@ var init_enterprise_database = __esm({
1838
1873
  version: "1.0.0",
1839
1874
  author: "AgenticMail"
1840
1875
  };
1841
- TOOLS41 = [
1876
+ TOOLS42 = [
1842
1877
  {
1843
1878
  id: "ent_db_query",
1844
1879
  name: "Execute SQL Query",
@@ -1952,15 +1987,15 @@ var init_enterprise_database = __esm({
1952
1987
  // src/engine/skills/database-access.ts
1953
1988
  var database_access_exports = {};
1954
1989
  __export(database_access_exports, {
1955
- SKILL_DEF: () => SKILL_DEF42,
1956
- TOOLS: () => TOOLS42
1990
+ SKILL_DEF: () => SKILL_DEF43,
1991
+ TOOLS: () => TOOLS43
1957
1992
  });
1958
- var SKILL_DEF42, TOOLS42;
1993
+ var SKILL_DEF43, TOOLS43;
1959
1994
  var init_database_access = __esm({
1960
1995
  "src/engine/skills/database-access.ts"() {
1961
1996
  "use strict";
1962
1997
  init_emoji();
1963
- SKILL_DEF42 = {
1998
+ SKILL_DEF43 = {
1964
1999
  id: "database-access",
1965
2000
  name: "External Database Access",
1966
2001
  description: "Query external databases (Postgres, MySQL, MongoDB, Redis, Supabase, etc.) that have been granted to this agent by an admin. Supports read/write operations based on granted permissions.",
@@ -1971,7 +2006,7 @@ var init_database_access = __esm({
1971
2006
  version: "1.0.0",
1972
2007
  author: "AgenticMail"
1973
2008
  };
1974
- TOOLS42 = [
2009
+ TOOLS43 = [
1975
2010
  {
1976
2011
  id: "db_list_connections",
1977
2012
  name: "List Database Connections",
@@ -2040,15 +2075,15 @@ var init_database_access = __esm({
2040
2075
  // src/engine/skills/enterprise-spreadsheet.ts
2041
2076
  var enterprise_spreadsheet_exports = {};
2042
2077
  __export(enterprise_spreadsheet_exports, {
2043
- SKILL_DEF: () => SKILL_DEF43,
2044
- TOOLS: () => TOOLS43
2078
+ SKILL_DEF: () => SKILL_DEF44,
2079
+ TOOLS: () => TOOLS44
2045
2080
  });
2046
- var SKILL_DEF43, TOOLS43;
2081
+ var SKILL_DEF44, TOOLS44;
2047
2082
  var init_enterprise_spreadsheet = __esm({
2048
2083
  "src/engine/skills/enterprise-spreadsheet.ts"() {
2049
2084
  "use strict";
2050
2085
  init_emoji();
2051
- SKILL_DEF43 = {
2086
+ SKILL_DEF44 = {
2052
2087
  id: "enterprise-spreadsheet",
2053
2088
  name: "Spreadsheet Processor",
2054
2089
  description: "Read, write, transform, and analyze Excel and CSV files. Supports filtering, sorting, aggregations, pivot operations, formula computation, merging datasets, and format conversion. Handles large files with streaming.",
@@ -2059,7 +2094,7 @@ var init_enterprise_spreadsheet = __esm({
2059
2094
  version: "1.0.0",
2060
2095
  author: "AgenticMail"
2061
2096
  };
2062
- TOOLS43 = [
2097
+ TOOLS44 = [
2063
2098
  {
2064
2099
  id: "ent_sheet_read",
2065
2100
  name: "Read Spreadsheet",
@@ -2221,15 +2256,15 @@ var init_enterprise_spreadsheet = __esm({
2221
2256
  // src/engine/skills/enterprise-documents.ts
2222
2257
  var enterprise_documents_exports = {};
2223
2258
  __export(enterprise_documents_exports, {
2224
- SKILL_DEF: () => SKILL_DEF44,
2225
- TOOLS: () => TOOLS44
2259
+ SKILL_DEF: () => SKILL_DEF45,
2260
+ TOOLS: () => TOOLS45
2226
2261
  });
2227
- var SKILL_DEF44, TOOLS44;
2262
+ var SKILL_DEF45, TOOLS45;
2228
2263
  var init_enterprise_documents = __esm({
2229
2264
  "src/engine/skills/enterprise-documents.ts"() {
2230
2265
  "use strict";
2231
2266
  init_emoji();
2232
- SKILL_DEF44 = {
2267
+ SKILL_DEF45 = {
2233
2268
  id: "enterprise-documents",
2234
2269
  name: "Document Processing",
2235
2270
  description: "Generate, parse, and convert documents. Create PDFs and Word docs from templates, extract text via OCR from images and scanned PDFs, parse invoices and receipts, and convert between formats (PDF, DOCX, HTML, Markdown).",
@@ -2240,7 +2275,7 @@ var init_enterprise_documents = __esm({
2240
2275
  version: "1.0.0",
2241
2276
  author: "AgenticMail"
2242
2277
  };
2243
- TOOLS44 = [
2278
+ TOOLS45 = [
2244
2279
  {
2245
2280
  id: "ent_doc_generate_pdf",
2246
2281
  name: "Generate PDF",
@@ -2393,15 +2428,15 @@ var init_enterprise_documents = __esm({
2393
2428
  // src/engine/skills/enterprise-http.ts
2394
2429
  var enterprise_http_exports = {};
2395
2430
  __export(enterprise_http_exports, {
2396
- SKILL_DEF: () => SKILL_DEF45,
2397
- TOOLS: () => TOOLS45
2431
+ SKILL_DEF: () => SKILL_DEF46,
2432
+ TOOLS: () => TOOLS46
2398
2433
  });
2399
- var SKILL_DEF45, TOOLS45;
2434
+ var SKILL_DEF46, TOOLS46;
2400
2435
  var init_enterprise_http = __esm({
2401
2436
  "src/engine/skills/enterprise-http.ts"() {
2402
2437
  "use strict";
2403
2438
  init_emoji();
2404
- SKILL_DEF45 = {
2439
+ SKILL_DEF46 = {
2405
2440
  id: "enterprise-http",
2406
2441
  name: "HTTP API Client",
2407
2442
  description: "Make authenticated HTTP requests to any internal or external API. Supports Bearer tokens, API keys, OAuth, mutual TLS, and custom authentication. Includes request/response logging, retry logic, and rate limiting.",
@@ -2412,7 +2447,7 @@ var init_enterprise_http = __esm({
2412
2447
  version: "1.0.0",
2413
2448
  author: "AgenticMail"
2414
2449
  };
2415
- TOOLS45 = [
2450
+ TOOLS46 = [
2416
2451
  {
2417
2452
  id: "ent_http_request",
2418
2453
  name: "HTTP Request",
@@ -2502,15 +2537,15 @@ var init_enterprise_http = __esm({
2502
2537
  // src/engine/skills/enterprise-security-scan.ts
2503
2538
  var enterprise_security_scan_exports = {};
2504
2539
  __export(enterprise_security_scan_exports, {
2505
- SKILL_DEF: () => SKILL_DEF46,
2506
- TOOLS: () => TOOLS46
2540
+ SKILL_DEF: () => SKILL_DEF47,
2541
+ TOOLS: () => TOOLS47
2507
2542
  });
2508
- var SKILL_DEF46, TOOLS46;
2543
+ var SKILL_DEF47, TOOLS47;
2509
2544
  var init_enterprise_security_scan = __esm({
2510
2545
  "src/engine/skills/enterprise-security-scan.ts"() {
2511
2546
  "use strict";
2512
2547
  init_emoji();
2513
- SKILL_DEF46 = {
2548
+ SKILL_DEF47 = {
2514
2549
  id: "enterprise-security-scan",
2515
2550
  name: "Security Scanning",
2516
2551
  description: "Scan text, code, and documents for security issues: exposed credentials, PII (personally identifiable information), malicious patterns, and dependency vulnerabilities. Supports GDPR, CCPA, HIPAA, and PCI-DSS compliance checks.",
@@ -2521,7 +2556,7 @@ var init_enterprise_security_scan = __esm({
2521
2556
  version: "1.0.0",
2522
2557
  author: "AgenticMail"
2523
2558
  };
2524
- TOOLS46 = [
2559
+ TOOLS47 = [
2525
2560
  {
2526
2561
  id: "ent_sec_scan_secrets",
2527
2562
  name: "Scan for Exposed Secrets",
@@ -2637,15 +2672,15 @@ var init_enterprise_security_scan = __esm({
2637
2672
  // src/engine/skills/enterprise-code-sandbox.ts
2638
2673
  var enterprise_code_sandbox_exports = {};
2639
2674
  __export(enterprise_code_sandbox_exports, {
2640
- SKILL_DEF: () => SKILL_DEF47,
2641
- TOOLS: () => TOOLS47
2675
+ SKILL_DEF: () => SKILL_DEF48,
2676
+ TOOLS: () => TOOLS48
2642
2677
  });
2643
- var SKILL_DEF47, TOOLS47;
2678
+ var SKILL_DEF48, TOOLS48;
2644
2679
  var init_enterprise_code_sandbox = __esm({
2645
2680
  "src/engine/skills/enterprise-code-sandbox.ts"() {
2646
2681
  "use strict";
2647
2682
  init_emoji();
2648
- SKILL_DEF47 = {
2683
+ SKILL_DEF48 = {
2649
2684
  id: "enterprise-code-sandbox",
2650
2685
  name: "Code Sandbox",
2651
2686
  description: "Execute code snippets in isolated sandboxes for data transformation, calculations, and automation scripts. Supports JavaScript/TypeScript, Python, and shell commands with memory and time limits.",
@@ -2656,7 +2691,7 @@ var init_enterprise_code_sandbox = __esm({
2656
2691
  version: "1.0.0",
2657
2692
  author: "AgenticMail"
2658
2693
  };
2659
- TOOLS47 = [
2694
+ TOOLS48 = [
2660
2695
  {
2661
2696
  id: "ent_code_run_js",
2662
2697
  name: "Run JavaScript",
@@ -2760,15 +2795,15 @@ var init_enterprise_code_sandbox = __esm({
2760
2795
  // src/engine/skills/enterprise-diff.ts
2761
2796
  var enterprise_diff_exports = {};
2762
2797
  __export(enterprise_diff_exports, {
2763
- SKILL_DEF: () => SKILL_DEF48,
2764
- TOOLS: () => TOOLS48
2798
+ SKILL_DEF: () => SKILL_DEF49,
2799
+ TOOLS: () => TOOLS49
2765
2800
  });
2766
- var SKILL_DEF48, TOOLS48;
2801
+ var SKILL_DEF49, TOOLS49;
2767
2802
  var init_enterprise_diff = __esm({
2768
2803
  "src/engine/skills/enterprise-diff.ts"() {
2769
2804
  "use strict";
2770
2805
  init_emoji();
2771
- SKILL_DEF48 = {
2806
+ SKILL_DEF49 = {
2772
2807
  id: "enterprise-diff",
2773
2808
  name: "Comparison & Diff",
2774
2809
  description: "Compare documents, datasets, configurations, and code to find differences. Supports text diff, JSON/YAML structural diff, spreadsheet comparison, and config audit. Generates human-readable change reports.",
@@ -2779,7 +2814,7 @@ var init_enterprise_diff = __esm({
2779
2814
  version: "1.0.0",
2780
2815
  author: "AgenticMail"
2781
2816
  };
2782
- TOOLS48 = [
2817
+ TOOLS49 = [
2783
2818
  {
2784
2819
  id: "ent_diff_text",
2785
2820
  name: "Diff Text",
@@ -2901,6 +2936,7 @@ var init_skills = __esm({
2901
2936
  init_gws_maps();
2902
2937
  init_gws_contacts();
2903
2938
  init_gws_tasks();
2939
+ init_smtp_email();
2904
2940
  init_core_tools();
2905
2941
  init_meeting_lifecycle();
2906
2942
  init_agent_memory();
@@ -2979,7 +3015,7 @@ var init_skills = __esm({
2979
3015
  SYSTEM_MODULES = [core_tools_exports, meeting_lifecycle_exports, agent_memory_exports, visual_memory_exports, knowledge_search_exports];
2980
3016
  SYSTEM_SKILL_DEFS = SYSTEM_MODULES.map((m) => m.SKILL_DEF);
2981
3017
  SYSTEM_TOOLS = SYSTEM_MODULES.flatMap((m) => m.TOOLS);
2982
- ALL_MODULES = [...AGENTICMAIL_MODULES, ...M365_MODULES, ...GWS_MODULES, ...ENTERPRISE_MODULES, ...SYSTEM_MODULES];
3018
+ ALL_MODULES = [...AGENTICMAIL_MODULES, ...M365_MODULES, ...GWS_MODULES, ...ENTERPRISE_MODULES, ...SYSTEM_MODULES, smtp_email_exports];
2983
3019
  FULL_SKILL_DEFINITIONS = [
2984
3020
  ...ALL_MODULES.map((m) => ({
2985
3021
  ...m.SKILL_DEF,
@@ -9,7 +9,7 @@ import {
9
9
  init_skills,
10
10
  init_tool_catalog,
11
11
  tool_catalog_exports
12
- } from "./chunk-ZGYVXYQQ.js";
12
+ } from "./chunk-5WDYN4UV.js";
13
13
  import {
14
14
  __esm,
15
15
  __toCommonJS
@@ -1234,7 +1234,7 @@ async function deploy(config, db, jwtSecret, vaultKey, spinner, chalk) {
1234
1234
  const { deployTarget, company, database, domain, tunnel, cloud } = config;
1235
1235
  if (deployTarget === "cloudflare-tunnel" && tunnel) {
1236
1236
  spinner.start(`Starting local server on port ${tunnel.port}...`);
1237
- const { createServer: createServer2 } = await import("./server-OVZSPJLB.js");
1237
+ const { createServer: createServer2 } = await import("./server-ZCR4UDK3.js");
1238
1238
  const server2 = createServer2({ port: tunnel.port, db, jwtSecret });
1239
1239
  const handle2 = await server2.start();
1240
1240
  spinner.succeed("Server running");
@@ -1535,7 +1535,7 @@ async function deploy(config, db, jwtSecret, vaultKey, spinner, chalk) {
1535
1535
  return {};
1536
1536
  }
1537
1537
  spinner.start("Starting local server...");
1538
- const { createServer } = await import("./server-OVZSPJLB.js");
1538
+ const { createServer } = await import("./server-ZCR4UDK3.js");
1539
1539
  const server = createServer({ port: 3e3, db, jwtSecret });
1540
1540
  const handle = await server.start();
1541
1541
  spinner.succeed("Server running");