@agenticmail/enterprise 0.5.373 → 0.5.375

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.
Files changed (43) hide show
  1. package/dist/agent-heartbeat-HZCGY3KS.js +510 -0
  2. package/dist/{chunk-XO6LXD7H.js → chunk-6MR5ICED.js} +13 -13
  3. package/dist/{chunk-ODK6AOKC.js → chunk-BBGCFJWI.js} +24 -23
  4. package/dist/{chunk-5BXBIL7C.js → chunk-LVKRN4IR.js} +20 -4
  5. package/dist/{chunk-CE4XOGCE.js → chunk-WTYMDT72.js} +2 -2
  6. package/dist/cli-agent-CFLWIYRJ.js +2483 -0
  7. package/dist/cli-agent-XCILLLBL.js +2483 -0
  8. package/dist/cli-serve-42HTQ45A.js +281 -0
  9. package/dist/cli-serve-COPCKGDT.js +281 -0
  10. package/dist/cli.js +3 -3
  11. package/dist/index.js +4 -4
  12. package/dist/routes-Q3YMFXX3.js +92 -0
  13. package/dist/runtime-F75SNKYK.js +45 -0
  14. package/dist/runtime-WKWJ5BGT.js +45 -0
  15. package/dist/server-I533SQLB.js +28 -0
  16. package/dist/server-NENS3OG6.js +28 -0
  17. package/dist/setup-4DKCCU6S.js +20 -0
  18. package/dist/setup-LQT3AYBX.js +20 -0
  19. package/logs/cloudflared-error.log +16 -0
  20. package/package.json +1 -1
  21. package/dist/agent-tools-22C6IARS.js +0 -14007
  22. package/dist/agent-tools-AR3FPB24.js +0 -14008
  23. package/dist/agent-tools-QHR2LY5V.js +0 -14007
  24. package/dist/chunk-2EI4AYXM.js +0 -2591
  25. package/dist/chunk-4MFGMCJO.js +0 -1727
  26. package/dist/chunk-5WDYN4UV.js +0 -3332
  27. package/dist/chunk-DPQWI26Y.js +0 -5101
  28. package/dist/chunk-F6SI2DE3.js +0 -5101
  29. package/dist/chunk-HIQY73V2.js +0 -467
  30. package/dist/chunk-HWUZLRZN.js +0 -1727
  31. package/dist/chunk-IO5EPYLA.js +0 -4945
  32. package/dist/chunk-JNNZKFBP.js +0 -5101
  33. package/dist/chunk-JXI6PCUZ.js +0 -4946
  34. package/dist/chunk-L7OG7R6F.js +0 -1727
  35. package/dist/chunk-LEACSX6C.js +0 -4945
  36. package/dist/chunk-MUH6AHIS.js +0 -4945
  37. package/dist/chunk-OZW6NYWD.js +0 -5101
  38. package/dist/chunk-QHBOQ2IG.js +0 -1727
  39. package/dist/chunk-SXDQEUHA.js +0 -1727
  40. package/dist/chunk-Z3I6GNTS.js +0 -106
  41. package/dist/chunk-ZW24HPRG.js +0 -5101
  42. package/dist/local-OXFH4V7E.js +0 -1144
  43. package/dist/local-QQ2V7CYC.js +0 -1190
@@ -356,7 +356,7 @@ function createRuntimeHooks(deps) {
356
356
  var injectedMessages = [...messages];
357
357
  if (deps.knowledgeBaseEnabled !== false) {
358
358
  try {
359
- var { knowledgeBase } = await import("./routes-XTMY7IYO.js");
359
+ var { knowledgeBase } = await import("./routes-Q3YMFXX3.js");
360
360
  var kbs = await knowledgeBase.listForAgent(agentId);
361
361
  if (kbs.length > 0) {
362
362
  var contextParts = [];
@@ -389,7 +389,7 @@ ${contextParts.join("\n\n")}`;
389
389
  }
390
390
  if (deps.memoryEnabled !== false) {
391
391
  try {
392
- var { memoryManager } = await import("./routes-XTMY7IYO.js");
392
+ var { memoryManager } = await import("./routes-Q3YMFXX3.js");
393
393
  var memories = await memoryManager.queryMemories({
394
394
  agentId,
395
395
  limit: 10,
@@ -410,7 +410,7 @@ ${memories.map(function(m) {
410
410
  }
411
411
  if (deps.policyEnabled !== false) {
412
412
  try {
413
- var { policyEngine } = await import("./routes-XTMY7IYO.js");
413
+ var { policyEngine } = await import("./routes-Q3YMFXX3.js");
414
414
  var policies = await policyEngine.getAgentPolicies(agentId, deps.orgId);
415
415
  if (policies.length > 0) {
416
416
  var policyText = policies.map(function(p) {
@@ -435,7 +435,7 @@ ${policyText}`;
435
435
  // ─── Budget Check ──────────────────────────────
436
436
  async checkBudget(agentId, _orgId, _estimatedTokens) {
437
437
  try {
438
- var { lifecycle } = await import("./routes-XTMY7IYO.js");
438
+ var { lifecycle } = await import("./routes-Q3YMFXX3.js");
439
439
  var now = Date.now();
440
440
  var cacheKey = `budget_sync_${agentId}`;
441
441
  var lastSync = globalThis[cacheKey] || 0;
@@ -528,7 +528,7 @@ ${policyText}`;
528
528
  // ─── Record LLM Usage ──────────────────────────
529
529
  async recordLLMUsage(agentId, orgId, usage) {
530
530
  try {
531
- var { lifecycle } = await import("./routes-XTMY7IYO.js");
531
+ var { lifecycle } = await import("./routes-Q3YMFXX3.js");
532
532
  console.log(`[hooks] recordLLMUsage: agent=${agentId}, input=${usage.inputTokens}, output=${usage.outputTokens}`);
533
533
  await lifecycle.recordLLMUsage(agentId, {
534
534
  inputTokens: usage.inputTokens,
@@ -539,7 +539,7 @@ ${policyText}`;
539
539
  console.log(`[hooks] recordLLMUsage error: ${recordErr.message}`);
540
540
  }
541
541
  try {
542
- var { activity } = await import("./routes-XTMY7IYO.js");
542
+ var { activity } = await import("./routes-Q3YMFXX3.js");
543
543
  await activity.record({
544
544
  agentId,
545
545
  orgId,
@@ -587,7 +587,7 @@ ${policyText}`;
587
587
  var cacheKey = `${ctx.agentId}:${ctx.toolName}`;
588
588
  var cached = getCachedPermission(cacheKey);
589
589
  if (cached) return cached;
590
- var { permissionEngine } = await import("./routes-XTMY7IYO.js");
590
+ var { permissionEngine } = await import("./routes-Q3YMFXX3.js");
591
591
  var permResult = await permissionEngine.checkPermission(ctx.agentId, ctx.toolName);
592
592
  var result = {
593
593
  allowed: permResult.allowed,
@@ -596,7 +596,7 @@ ${policyText}`;
596
596
  };
597
597
  if (result.allowed && deps.guardrailsEnabled !== false) {
598
598
  try {
599
- var { guardrails } = await import("./routes-XTMY7IYO.js");
599
+ var { guardrails } = await import("./routes-Q3YMFXX3.js");
600
600
  var status = await guardrails.getStatus(ctx.agentId);
601
601
  if (status.paused || status.offDuty) {
602
602
  result.allowed = false;
@@ -608,7 +608,7 @@ ${policyText}`;
608
608
  }
609
609
  if (result.allowed && deps.dlpEnabled !== false && ctx.parameters) {
610
610
  try {
611
- var { dlp } = await import("./routes-XTMY7IYO.js");
611
+ var { dlp } = await import("./routes-Q3YMFXX3.js");
612
612
  var dlpResult = await dlp.scanParameters({
613
613
  orgId: ctx.orgId,
614
614
  agentId: ctx.agentId,
@@ -628,7 +628,7 @@ ${policyText}`;
628
628
  }
629
629
  if (result.requiresApproval && result.allowed) {
630
630
  try {
631
- var { approvals } = await import("./routes-XTMY7IYO.js");
631
+ var { approvals } = await import("./routes-Q3YMFXX3.js");
632
632
  var approval = await approvals.createAndWait({
633
633
  agentId: ctx.agentId,
634
634
  orgId: ctx.orgId,
@@ -658,7 +658,7 @@ ${policyText}`;
658
658
  // ─── After Tool Call ────────────────────────────
659
659
  async afterToolCall(ctx, result) {
660
660
  try {
661
- var { activity } = await import("./routes-XTMY7IYO.js");
661
+ var { activity } = await import("./routes-Q3YMFXX3.js");
662
662
  await activity.record({
663
663
  agentId: ctx.agentId,
664
664
  orgId: ctx.orgId,
@@ -675,7 +675,7 @@ ${policyText}`;
675
675
  } catch {
676
676
  }
677
677
  try {
678
- var { lifecycle } = await import("./routes-XTMY7IYO.js");
678
+ var { lifecycle } = await import("./routes-Q3YMFXX3.js");
679
679
  await lifecycle.recordToolCall(ctx.agentId, {
680
680
  toolId: ctx.toolName,
681
681
  tokensUsed: 0,
@@ -687,7 +687,7 @@ ${policyText}`;
687
687
  }
688
688
  if (result.success && EXTERNAL_TOOLS.has(ctx.toolName)) {
689
689
  try {
690
- var { journal } = await import("./routes-XTMY7IYO.js");
690
+ var { journal } = await import("./routes-Q3YMFXX3.js");
691
691
  await journal.record({
692
692
  orgId: ctx.orgId,
693
693
  agentId: ctx.agentId,
@@ -702,7 +702,7 @@ ${policyText}`;
702
702
  }
703
703
  if (result.success && COMMUNICATION_TOOLS.has(ctx.toolName)) {
704
704
  try {
705
- var { commBus } = await import("./routes-XTMY7IYO.js");
705
+ var { commBus } = await import("./routes-Q3YMFXX3.js");
706
706
  await commBus.observeMessage({
707
707
  orgId: ctx.orgId,
708
708
  agentId: ctx.agentId,
@@ -716,7 +716,7 @@ ${policyText}`;
716
716
  // ─── Session Lifecycle ──────────────────────────
717
717
  async onSessionStart(sessionId, agentId, orgId) {
718
718
  try {
719
- var { activity } = await import("./routes-XTMY7IYO.js");
719
+ var { activity } = await import("./routes-Q3YMFXX3.js");
720
720
  await activity.record({
721
721
  agentId,
722
722
  orgId,
@@ -729,7 +729,7 @@ ${policyText}`;
729
729
  },
730
730
  async onSessionEnd(sessionId, agentId, orgId) {
731
731
  try {
732
- var { activity } = await import("./routes-XTMY7IYO.js");
732
+ var { activity } = await import("./routes-Q3YMFXX3.js");
733
733
  await activity.record({
734
734
  agentId,
735
735
  orgId,
@@ -743,7 +743,7 @@ ${policyText}`;
743
743
  // ─── Context Compaction ─────────────────────────
744
744
  async onContextCompaction(sessionId, agentId, summary) {
745
745
  try {
746
- var { memoryManager } = await import("./routes-XTMY7IYO.js");
746
+ var { memoryManager } = await import("./routes-Q3YMFXX3.js");
747
747
  await memoryManager.createMemory({
748
748
  agentId,
749
749
  orgId: deps.orgId,
@@ -2518,7 +2518,7 @@ async function runAgentLoop(config, initialMessages, hooks, options) {
2518
2518
  console.log(`[agent-loop] \u2705 Tool ${toolCall.name} succeeded (${content.length} chars): ${content.slice(0, 300)}`);
2519
2519
  }
2520
2520
  try {
2521
- const { activity } = await import("./routes-XTMY7IYO.js");
2521
+ const { activity } = await import("./routes-Q3YMFXX3.js");
2522
2522
  activity.recordToolCallCompact({
2523
2523
  agentId: config.agentId,
2524
2524
  orgId: config.orgId,
@@ -2763,7 +2763,8 @@ var TIER_MAP = {
2763
2763
  msg_telegram: 2,
2764
2764
  mcp_bridge: 3,
2765
2765
  filesystem: 2,
2766
- web: 2
2766
+ web: 2,
2767
+ smtp_email: 2
2767
2768
  };
2768
2769
  var TOOL_REGISTRY = {
2769
2770
  // ── Core (8) ──
@@ -3088,9 +3089,9 @@ var CONTEXT_PROMOTIONS = {
3088
3089
  // Messaging channels: load the relevant channel's tools + common tools
3089
3090
  // The agent's OWN channel tools are essential (Tier 1-like for that session)
3090
3091
  // Other channel tools and specialist tools load on demand
3091
- whatsapp: ["msg_whatsapp", ..._COMMON_T2],
3092
- telegram: ["msg_telegram", ..._COMMON_T2],
3093
- email: ["agenticmail", "gws_gmail", ..._COMMON_T2],
3092
+ whatsapp: ["msg_whatsapp", "smtp_email", ..._COMMON_T2],
3093
+ telegram: ["msg_telegram", "smtp_email", ..._COMMON_T2],
3094
+ email: ["agenticmail", "gws_gmail", "smtp_email", ..._COMMON_T2],
3094
3095
  // Task/full: broader set for agent-to-agent work
3095
3096
  task: ["agenticmail", ..._COMMON_T2],
3096
3097
  full: _ALL_SETS
@@ -3099,7 +3100,7 @@ var SIGNAL_RULES = [
3099
3100
  // Email mentions
3100
3101
  {
3101
3102
  patterns: [/\bemail\b/i, /\bgmail\b/i, /\binbox\b/i, /\bsend.*mail\b/i],
3102
- sets: ["gws_gmail"]
3103
+ sets: ["gws_gmail", "smtp_email"]
3103
3104
  },
3104
3105
  // Calendar mentions
3105
3106
  {
@@ -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-XTMY7IYO.js");
7106
+ const { knowledgeBase: kbEngine } = await import("./routes-Q3YMFXX3.js");
7107
7107
  const allKbs = kbEngine.getAllKnowledgeBases();
7108
7108
  const clientOrgId = managedAgent?.clientOrgId || config?.clientOrgId || null;
7109
7109
  let kbAssigned = 0;
@@ -25017,20 +25017,36 @@ async function startChatPoller(engineDb) {
25017
25017
  }
25018
25018
  const tokenAgent = chatAgents[0];
25019
25019
  const emailConfig = tokenAgent.config.emailConfig;
25020
+ let chatClientId = emailConfig.oauthClientId;
25021
+ let chatClientSecret = emailConfig.oauthClientSecret;
25022
+ if (!chatClientId || !chatClientSecret) {
25023
+ try {
25024
+ const adminDb = (await import("./admin-db.js")).getAdminDb();
25025
+ if (adminDb) {
25026
+ const orgSettings = await adminDb.getSettings();
25027
+ chatClientId = chatClientId || orgSettings?.oauthClientId;
25028
+ chatClientSecret = chatClientSecret || orgSettings?.oauthClientSecret;
25029
+ }
25030
+ } catch {
25031
+ }
25032
+ }
25020
25033
  const refreshToken = async () => {
25034
+ if (!chatClientId || !chatClientSecret) {
25035
+ throw new Error("invalid_client: No OAuth client ID/secret found in agent or org config");
25036
+ }
25021
25037
  const res = await fetch("https://oauth2.googleapis.com/token", {
25022
25038
  method: "POST",
25023
25039
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
25024
25040
  body: new URLSearchParams({
25025
- client_id: emailConfig.oauthClientId,
25026
- client_secret: emailConfig.oauthClientSecret,
25041
+ client_id: chatClientId,
25042
+ client_secret: chatClientSecret,
25027
25043
  refresh_token: emailConfig.oauthRefreshToken,
25028
25044
  grant_type: "refresh_token"
25029
25045
  })
25030
25046
  });
25031
25047
  const data = await res.json();
25032
25048
  if (data.access_token) return data.access_token;
25033
- throw new Error(`Token refresh failed: ${data.error || "unknown"}`);
25049
+ throw new Error(`Token refresh failed (${res.status}): ${JSON.stringify(data)}`);
25034
25050
  };
25035
25051
  const standaloneAgentPorts = {};
25036
25052
  try {
@@ -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-4XD4C4GA.js");
1237
+ const { createServer: createServer2 } = await import("./server-NENS3OG6.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-4XD4C4GA.js");
1538
+ const { createServer } = await import("./server-NENS3OG6.js");
1539
1539
  const server = createServer({ port: 3e3, db, jwtSecret });
1540
1540
  const handle = await server.start();
1541
1541
  spinner.succeed("Server running");