@agenticmail/enterprise 0.5.104 → 0.5.105

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.
@@ -0,0 +1,170 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/cli-agent.ts
4
+ import { Hono } from "hono";
5
+ import { serve } from "@hono/node-server";
6
+ async function runAgent(_args) {
7
+ const DATABASE_URL = process.env.DATABASE_URL;
8
+ const JWT_SECRET = process.env.JWT_SECRET;
9
+ const AGENT_ID = process.env.AGENTICMAIL_AGENT_ID;
10
+ const PORT = parseInt(process.env.PORT || "3000", 10);
11
+ if (!DATABASE_URL) {
12
+ console.error("ERROR: DATABASE_URL is required");
13
+ process.exit(1);
14
+ }
15
+ if (!JWT_SECRET) {
16
+ console.error("ERROR: JWT_SECRET is required");
17
+ process.exit(1);
18
+ }
19
+ if (!AGENT_ID) {
20
+ console.error("ERROR: AGENTICMAIL_AGENT_ID is required");
21
+ process.exit(1);
22
+ }
23
+ console.log("\u{1F916} AgenticMail Agent Runtime");
24
+ console.log(` Agent ID: ${AGENT_ID}`);
25
+ console.log(" Connecting to database...");
26
+ const { createAdapter } = await import("./factory-GT6SUZSQ.js");
27
+ const db = await createAdapter({
28
+ type: DATABASE_URL.startsWith("postgres") ? "postgres" : "sqlite",
29
+ connectionString: DATABASE_URL
30
+ });
31
+ await db.migrate();
32
+ const { EngineDatabase } = await import("./db-adapter-65QMSGCB.js");
33
+ const engineDbInterface = db.getEngineDB();
34
+ if (!engineDbInterface) {
35
+ console.error("ERROR: Database does not support engine queries");
36
+ process.exit(1);
37
+ }
38
+ const adapterDialect = db.getDialect();
39
+ const dialectMap = {
40
+ sqlite: "sqlite",
41
+ postgres: "postgres",
42
+ supabase: "postgres",
43
+ neon: "postgres",
44
+ cockroachdb: "postgres"
45
+ };
46
+ const engineDialect = dialectMap[adapterDialect] || adapterDialect;
47
+ const engineDb = new EngineDatabase(engineDbInterface, engineDialect);
48
+ await engineDb.migrate();
49
+ const agentRow = await engineDb.query(
50
+ `SELECT id, name, display_name, config, state FROM managed_agents WHERE id = $1`,
51
+ [AGENT_ID]
52
+ );
53
+ if (!agentRow || agentRow.length === 0) {
54
+ console.error(`ERROR: Agent ${AGENT_ID} not found in database`);
55
+ process.exit(1);
56
+ }
57
+ const agent = agentRow[0];
58
+ console.log(` Agent: ${agent.display_name || agent.name}`);
59
+ console.log(` State: ${agent.state}`);
60
+ const { AgentLifecycle } = await import("./lifecycle-3WYS4FKO.js");
61
+ const lifecycle = new AgentLifecycle(engineDb);
62
+ await lifecycle.loadFromDb();
63
+ const managed = lifecycle.getAgent(AGENT_ID);
64
+ if (!managed) {
65
+ console.error(`ERROR: Could not load agent ${AGENT_ID} from lifecycle`);
66
+ process.exit(1);
67
+ }
68
+ const config = managed.config;
69
+ console.log(` Model: ${config.model?.provider}/${config.model?.modelId}`);
70
+ let memoryManager;
71
+ try {
72
+ const { AgentMemoryManager } = await import("./agent-memory-G7YFTMDO.js");
73
+ memoryManager = new AgentMemoryManager(engineDb);
74
+ console.log(" Memory: DB-backed");
75
+ } catch {
76
+ console.log(" Memory: file-based fallback");
77
+ }
78
+ try {
79
+ const settings = await db.getSettings();
80
+ const keys = settings?.modelPricingConfig?.providerApiKeys;
81
+ if (keys && typeof keys === "object") {
82
+ const { PROVIDER_REGISTRY } = await import("./providers-DZDNNJTY.js");
83
+ for (const [providerId, apiKey] of Object.entries(keys)) {
84
+ const envVar = PROVIDER_REGISTRY[providerId]?.envKey;
85
+ if (envVar && apiKey && !process.env[envVar]) {
86
+ process.env[envVar] = apiKey;
87
+ console.log(` \u{1F511} Loaded API key for ${providerId}`);
88
+ }
89
+ }
90
+ }
91
+ } catch {
92
+ }
93
+ const { createAgentRuntime } = await import("./runtime-IPMNXLXU.js");
94
+ const getEmailConfig = (agentId) => {
95
+ const m = lifecycle.getAgent(agentId);
96
+ return m?.config?.emailConfig || null;
97
+ };
98
+ const onTokenRefresh = (agentId, tokens) => {
99
+ const m = lifecycle.getAgent(agentId);
100
+ if (m?.config?.emailConfig) {
101
+ if (tokens.accessToken) m.config.emailConfig.oauthAccessToken = tokens.accessToken;
102
+ if (tokens.refreshToken) m.config.emailConfig.oauthRefreshToken = tokens.refreshToken;
103
+ if (tokens.expiresAt) m.config.emailConfig.oauthTokenExpiry = tokens.expiresAt;
104
+ lifecycle.saveAgent(agentId).catch(() => {
105
+ });
106
+ }
107
+ };
108
+ let defaultModel;
109
+ const modelStr = process.env.AGENTICMAIL_MODEL || `${config.model?.provider}/${config.model?.modelId}`;
110
+ if (modelStr && modelStr.includes("/")) {
111
+ const [provider, ...rest] = modelStr.split("/");
112
+ defaultModel = {
113
+ provider,
114
+ modelId: rest.join("/"),
115
+ thinkingLevel: process.env.AGENTICMAIL_THINKING || config.model?.thinkingLevel
116
+ };
117
+ }
118
+ const runtime = createAgentRuntime({
119
+ engineDb,
120
+ adminDb: db,
121
+ defaultModel,
122
+ apiKeys: {},
123
+ gatewayEnabled: true,
124
+ getEmailConfig,
125
+ onTokenRefresh,
126
+ agentMemoryManager: memoryManager,
127
+ resumeOnStartup: true
128
+ });
129
+ await runtime.start();
130
+ const runtimeApp = runtime.getApp();
131
+ const app = new Hono();
132
+ app.get("/health", (c) => c.json({
133
+ status: "ok",
134
+ agentId: AGENT_ID,
135
+ agentName: agent.display_name || agent.name,
136
+ uptime: process.uptime()
137
+ }));
138
+ app.get("/ready", (c) => c.json({ ready: true, agentId: AGENT_ID }));
139
+ if (runtimeApp) {
140
+ app.route("/api/runtime", runtimeApp);
141
+ }
142
+ serve({ fetch: app.fetch, port: PORT }, (info) => {
143
+ console.log(`
144
+ \u2705 Agent runtime started`);
145
+ console.log(` Health: http://localhost:${info.port}/health`);
146
+ console.log(` Runtime: http://localhost:${info.port}/api/runtime`);
147
+ console.log("");
148
+ });
149
+ const shutdown = () => {
150
+ console.log("\n\u23F3 Shutting down agent...");
151
+ runtime.stop().then(() => db.disconnect()).then(() => {
152
+ console.log("\u2705 Agent shutdown complete");
153
+ process.exit(0);
154
+ });
155
+ setTimeout(() => process.exit(1), 1e4).unref();
156
+ };
157
+ process.on("SIGINT", shutdown);
158
+ process.on("SIGTERM", shutdown);
159
+ try {
160
+ await engineDb.query(
161
+ `UPDATE managed_agents SET state = 'running', updated_at = $1 WHERE id = $2`,
162
+ [(/* @__PURE__ */ new Date()).toISOString(), AGENT_ID]
163
+ );
164
+ console.log(" State: running");
165
+ } catch {
166
+ }
167
+ }
168
+ export {
169
+ runAgent
170
+ };
@@ -0,0 +1,34 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/cli-serve.ts
4
+ async function runServe(_args) {
5
+ const DATABASE_URL = process.env.DATABASE_URL;
6
+ const JWT_SECRET = process.env.JWT_SECRET;
7
+ const PORT = parseInt(process.env.PORT || "8080", 10);
8
+ if (!DATABASE_URL) {
9
+ console.error("ERROR: DATABASE_URL environment variable is required");
10
+ process.exit(1);
11
+ }
12
+ if (!JWT_SECRET) {
13
+ console.error("ERROR: JWT_SECRET environment variable is required");
14
+ process.exit(1);
15
+ }
16
+ const { createAdapter } = await import("./factory-GT6SUZSQ.js");
17
+ const { createServer } = await import("./server-JO3SS5N7.js");
18
+ const db = await createAdapter({
19
+ type: DATABASE_URL.startsWith("postgres") ? "postgres" : "sqlite",
20
+ connectionString: DATABASE_URL
21
+ });
22
+ await db.migrate();
23
+ const server = createServer({
24
+ port: PORT,
25
+ db,
26
+ jwtSecret: JWT_SECRET,
27
+ corsOrigins: ["*"]
28
+ });
29
+ await server.start();
30
+ console.log(`AgenticMail Enterprise server running on :${PORT}`);
31
+ }
32
+ export {
33
+ runServe
34
+ };
package/dist/cli.js CHANGED
@@ -46,9 +46,15 @@ Skill Development:
46
46
  npx @agenticmail/enterprise submit-skill ./community-skills/my-skill/
47
47
  `);
48
48
  break;
49
+ case "serve":
50
+ import("./cli-serve-NCIB5EC7.js").then((m) => m.runServe(args.slice(1))).catch(fatal);
51
+ break;
52
+ case "agent":
53
+ import("./cli-agent-5J45WMVA.js").then((m) => m.runAgent(args.slice(1))).catch(fatal);
54
+ break;
49
55
  case "setup":
50
56
  default:
51
- import("./setup-EY7EH7IU.js").then((m) => m.runSetupWizard()).catch(fatal);
57
+ import("./setup-WDWEO76A.js").then((m) => m.runSetupWizard()).catch(fatal);
52
58
  break;
53
59
  }
54
60
  function fatal(err) {
package/dist/index.js CHANGED
@@ -1,15 +1,21 @@
1
+ import {
2
+ deployToCloud,
3
+ generateDockerCompose,
4
+ generateEnvFile,
5
+ generateFlyToml
6
+ } from "./chunk-7XMV4YKZ.js";
7
+ import {
8
+ provision,
9
+ runSetupWizard
10
+ } from "./chunk-I7MWMKQX.js";
1
11
  import {
2
12
  ActionJournal,
3
13
  ActivityTracker,
4
14
  AgentCommunicationBus,
5
- AgentConfigGenerator,
6
- AgentLifecycleManager,
7
- AgentMemoryManager,
8
15
  ApprovalEngine,
9
16
  CommunitySkillRegistry,
10
17
  ComplianceReporter,
11
18
  DLPEngine,
12
- DeploymentEngine,
13
19
  GuardrailEngine,
14
20
  KnowledgeBaseEngine,
15
21
  OnboardingManager,
@@ -20,7 +26,20 @@ import {
20
26
  TenantManager,
21
27
  WorkforceManager,
22
28
  init_guardrails
23
- } from "./chunk-5PM4RNML.js";
29
+ } from "./chunk-BRKXLWUD.js";
30
+ import {
31
+ AgentMemoryManager
32
+ } from "./chunk-QMXWIJQU.js";
33
+ import {
34
+ ENGINE_TABLES,
35
+ ENGINE_TABLES_POSTGRES,
36
+ EngineDatabase,
37
+ MIGRATIONS,
38
+ MIGRATIONS_TABLE,
39
+ MIGRATIONS_TABLE_POSTGRES,
40
+ sqliteToMySQL,
41
+ sqliteToPostgres
42
+ } from "./chunk-QC2XKXAY.js";
24
43
  import {
25
44
  AgentRuntime,
26
45
  EmailChannel,
@@ -35,8 +54,7 @@ import {
35
54
  executeTool,
36
55
  runAgentLoop,
37
56
  toolsToDefinitions
38
- } from "./chunk-EVLC3NXM.js";
39
- import "./chunk-NRF3YRF7.js";
57
+ } from "./chunk-SFLOH6XF.js";
40
58
  import "./chunk-TYW5XTOW.js";
41
59
  import "./chunk-AQH4DFYV.js";
42
60
  import {
@@ -52,28 +70,21 @@ import {
52
70
  requireRole,
53
71
  securityHeaders,
54
72
  validate
55
- } from "./chunk-SNZUZYHO.js";
56
- import {
57
- provision,
58
- runSetupWizard
59
- } from "./chunk-ZFO44EVP.js";
73
+ } from "./chunk-7V7ZZJAG.js";
74
+ import "./chunk-3SMTCIR4.js";
75
+ import "./chunk-RO537U6H.js";
76
+ import "./chunk-DRXMYYKN.js";
60
77
  import {
61
- ENGINE_TABLES,
62
- ENGINE_TABLES_POSTGRES,
63
- EngineDatabase,
64
- MIGRATIONS,
65
- MIGRATIONS_TABLE,
66
- MIGRATIONS_TABLE_POSTGRES,
67
- sqliteToMySQL,
68
- sqliteToPostgres
69
- } from "./chunk-QC2XKXAY.js";
78
+ PROVIDER_REGISTRY,
79
+ listAllProviders,
80
+ resolveApiKeyForProvider,
81
+ resolveProvider
82
+ } from "./chunk-67KZYSLU.js";
70
83
  import {
71
- deployToCloud,
72
- generateDockerCompose,
73
- generateEnvFile,
74
- generateFlyToml
75
- } from "./chunk-7XMV4YKZ.js";
76
- import "./chunk-3SMTCIR4.js";
84
+ AgentConfigGenerator,
85
+ AgentLifecycleManager,
86
+ DeploymentEngine
87
+ } from "./chunk-3MWTRQEA.js";
77
88
  import {
78
89
  CircuitBreaker,
79
90
  CircuitOpenError,
@@ -82,19 +93,12 @@ import {
82
93
  RateLimiter,
83
94
  withRetry
84
95
  } from "./chunk-JLSQOQ5L.js";
85
- import "./chunk-RO537U6H.js";
86
- import "./chunk-DRXMYYKN.js";
87
- import {
88
- PROVIDER_REGISTRY,
89
- listAllProviders,
90
- resolveApiKeyForProvider,
91
- resolveProvider
92
- } from "./chunk-67KZYSLU.js";
93
96
  import {
94
97
  BUILTIN_SKILLS,
95
98
  PRESET_PROFILES,
96
99
  PermissionEngine
97
100
  } from "./chunk-T6FM7KNN.js";
101
+ import "./chunk-NRF3YRF7.js";
98
102
  import {
99
103
  DatabaseAdapter
100
104
  } from "./chunk-FLRYMSKY.js";
@@ -0,0 +1,10 @@
1
+ import {
2
+ AgentLifecycleManager
3
+ } from "./chunk-3MWTRQEA.js";
4
+ import "./chunk-JLSQOQ5L.js";
5
+ import "./chunk-T6FM7KNN.js";
6
+ import "./chunk-MINPSFLF.js";
7
+ import "./chunk-KFQGP6VL.js";
8
+ export {
9
+ AgentLifecycleManager
10
+ };