@agenticmail/enterprise 0.5.540 → 0.5.542

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,150 @@
1
+ import {
2
+ ALL_TOOLS,
3
+ init_tool_catalog
4
+ } from "./chunk-GDY6QWI6.js";
5
+ import {
6
+ collectCommunityToolIds,
7
+ init_skill_validator,
8
+ validateSkillManifest
9
+ } from "./chunk-22U7TZPN.js";
10
+ import "./chunk-KFQGP6VL.js";
11
+
12
+ // src/engine/cli-validate.ts
13
+ init_skill_validator();
14
+ init_tool_catalog();
15
+ async function runValidate(args) {
16
+ const chalk = (await import("chalk")).default;
17
+ const fs = await import("fs/promises");
18
+ const path = await import("path");
19
+ const jsonMode = args.includes("--json");
20
+ const allMode = args.includes("--all");
21
+ const pathArgs = args.filter((a) => !a.startsWith("--"));
22
+ const builtinIds = new Set(ALL_TOOLS.map((t) => t.id || t.name));
23
+ const communityDir = path.resolve(process.cwd(), "community-skills");
24
+ const reports = [];
25
+ if (allMode) {
26
+ let entries;
27
+ try {
28
+ entries = await fs.readdir(communityDir, { withFileTypes: true });
29
+ } catch {
30
+ if (jsonMode) {
31
+ console.log(JSON.stringify({ error: "community-skills/ directory not found" }));
32
+ } else {
33
+ console.error(chalk.red("Error: community-skills/ directory not found"));
34
+ }
35
+ process.exit(1);
36
+ return;
37
+ }
38
+ for (const entry of entries) {
39
+ if (!entry.isDirectory() || entry.name.startsWith("_") || entry.name.startsWith(".")) continue;
40
+ const skillDir = path.join(communityDir, entry.name);
41
+ const report = await validatePath(skillDir, builtinIds, communityDir);
42
+ reports.push(report);
43
+ }
44
+ } else {
45
+ const target = pathArgs[0];
46
+ if (!target) {
47
+ if (jsonMode) {
48
+ console.log(JSON.stringify({ error: "No path specified. Usage: npx @agenticmail/enterprise validate <path> [--all] [--json]" }));
49
+ } else {
50
+ console.log(`${chalk.bold("Usage:")} npx @agenticmail/enterprise validate <path>`);
51
+ console.log("");
52
+ console.log(" <path> Path to a skill directory or agenticmail-skill.json file");
53
+ console.log(" --all Validate all skills in community-skills/");
54
+ console.log(" --json Machine-readable JSON output");
55
+ }
56
+ process.exit(1);
57
+ return;
58
+ }
59
+ const report = await validatePath(path.resolve(target), builtinIds, communityDir);
60
+ reports.push(report);
61
+ }
62
+ if (jsonMode) {
63
+ console.log(JSON.stringify({ results: reports, totalErrors: reports.reduce((s, r) => s + r.errors.length, 0) }, null, 2));
64
+ } else {
65
+ console.log("");
66
+ for (const report of reports) {
67
+ if (report.valid) {
68
+ console.log(chalk.green(" \u2714") + " " + chalk.bold(report.skillId) + chalk.dim(` (${report.path})`));
69
+ } else {
70
+ console.log(chalk.red(" \u2718") + " " + chalk.bold(report.skillId) + chalk.dim(` (${report.path})`));
71
+ for (const err of report.errors) {
72
+ console.log(chalk.red(" \u2502 ") + err);
73
+ }
74
+ }
75
+ for (const warn of report.warnings) {
76
+ console.log(chalk.yellow(" \u26A0 ") + warn);
77
+ }
78
+ }
79
+ console.log("");
80
+ const passed = reports.filter((r) => r.valid).length;
81
+ const failed = reports.filter((r) => !r.valid).length;
82
+ if (failed > 0) {
83
+ console.log(chalk.red(` ${failed} failed`) + chalk.dim(`, ${passed} passed, ${reports.length} total`));
84
+ } else {
85
+ console.log(chalk.green(` ${passed} passed`) + chalk.dim(`, ${reports.length} total`));
86
+ }
87
+ console.log("");
88
+ }
89
+ if (reports.some((r) => !r.valid)) {
90
+ process.exit(1);
91
+ }
92
+ }
93
+ async function validatePath(targetPath, builtinIds, communityDir) {
94
+ const fs = await import("fs/promises");
95
+ const path = await import("path");
96
+ let manifestPath;
97
+ try {
98
+ const stat = await fs.stat(targetPath);
99
+ if (stat.isDirectory()) {
100
+ manifestPath = path.join(targetPath, "agenticmail-skill.json");
101
+ } else {
102
+ manifestPath = targetPath;
103
+ }
104
+ } catch {
105
+ return {
106
+ path: targetPath,
107
+ skillId: path.basename(targetPath),
108
+ valid: false,
109
+ errors: [`Path not found: ${targetPath}`],
110
+ warnings: []
111
+ };
112
+ }
113
+ let raw;
114
+ try {
115
+ raw = await fs.readFile(manifestPath, "utf-8");
116
+ } catch {
117
+ return {
118
+ path: manifestPath,
119
+ skillId: path.basename(path.dirname(manifestPath)),
120
+ valid: false,
121
+ errors: [`Cannot read: ${manifestPath}`],
122
+ warnings: []
123
+ };
124
+ }
125
+ let manifest;
126
+ try {
127
+ manifest = JSON.parse(raw);
128
+ } catch (err) {
129
+ return {
130
+ path: manifestPath,
131
+ skillId: path.basename(path.dirname(manifestPath)),
132
+ valid: false,
133
+ errors: [`Invalid JSON: ${err.message}`],
134
+ warnings: []
135
+ };
136
+ }
137
+ const communityIds = await collectCommunityToolIds(communityDir, manifest.id);
138
+ const allExistingIds = /* @__PURE__ */ new Set([...builtinIds, ...communityIds]);
139
+ const result = validateSkillManifest(manifest, { existingToolIds: allExistingIds });
140
+ return {
141
+ path: manifestPath,
142
+ skillId: manifest.id || path.basename(path.dirname(manifestPath)),
143
+ valid: result.valid,
144
+ errors: result.errors,
145
+ warnings: result.warnings
146
+ };
147
+ }
148
+ export {
149
+ runValidate
150
+ };
package/dist/cli.js CHANGED
@@ -5,7 +5,7 @@ var args = process.argv.slice(2);
5
5
  var command = args[0];
6
6
  switch (command) {
7
7
  case "validate":
8
- import("./cli-validate-ZTDVZWIU.js").then((m) => m.runValidate(args.slice(1))).catch(fatal);
8
+ import("./cli-validate-GUSGSEEJ.js").then((m) => m.runValidate(args.slice(1))).catch(fatal);
9
9
  break;
10
10
  case "build-skill":
11
11
  import("./cli-build-skill-IONLZD77.js").then((m) => m.runBuildSkill(args.slice(1))).catch(fatal);
@@ -65,14 +65,14 @@ Skill Development:
65
65
  break;
66
66
  case "serve":
67
67
  case "start":
68
- import("./cli-serve-4XRCAIYZ.js").then((m) => m.runServe(args.slice(1))).catch(fatal);
68
+ import("./cli-serve-GOJBST5J.js").then((m) => m.runServe(args.slice(1))).catch(fatal);
69
69
  break;
70
70
  case "agent":
71
- import("./cli-agent-6AMGD7RV.js").then((m) => m.runAgent(args.slice(1))).catch(fatal);
71
+ import("./cli-agent-H3EYLSXS.js").then((m) => m.runAgent(args.slice(1))).catch(fatal);
72
72
  break;
73
73
  case "setup":
74
74
  default:
75
- import("./setup-3BMKYWRR.js").then((m) => m.runSetupWizard()).catch(fatal);
75
+ import("./setup-QINKMTBY.js").then((m) => m.runSetupWizard()).catch(fatal);
76
76
  break;
77
77
  }
78
78
  function fatal(err) {
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Duplicate Agent Modal Component
3
+ * Allows duplicating an agent with new name(s) and email(s).
4
+ */
5
+ import { h, useState, apiCall } from './utils.js';
6
+ import { I } from './icons.js';
7
+
8
+ export function DuplicateAgentModal({ agent, onClose, onDuplicated, toast }) {
9
+ var [agents, setAgents] = useState([{ name: '', email: '' }]);
10
+ var [loading, setLoading] = useState(false);
11
+
12
+ function addRow() {
13
+ setAgents(agents.concat([{ name: '', email: '' }]));
14
+ }
15
+
16
+ function removeRow(idx) {
17
+ if (agents.length <= 1) return;
18
+ setAgents(agents.filter(function(_, i) { return i !== idx; }));
19
+ }
20
+
21
+ function updateRow(idx, field, value) {
22
+ var next = agents.map(function(a, i) {
23
+ if (i !== idx) return a;
24
+ var updated = Object.assign({}, a);
25
+ updated[field] = value;
26
+ return updated;
27
+ });
28
+ setAgents(next);
29
+ }
30
+
31
+ async function handleDuplicate() {
32
+ // Validate
33
+ for (var i = 0; i < agents.length; i++) {
34
+ if (!agents[i].name.trim()) { toast('Name is required for agent #' + (i + 1), 'error'); return; }
35
+ if (!agents[i].email.trim() || !agents[i].email.includes('@')) { toast('Valid email is required for agent #' + (i + 1), 'error'); return; }
36
+ }
37
+
38
+ setLoading(true);
39
+ try {
40
+ var res = await apiCall('/agents/' + agent.id + '/duplicate', {
41
+ method: 'POST',
42
+ body: JSON.stringify({
43
+ agents: agents.map(function(a) { return { name: a.name.trim(), email: a.email.trim() }; })
44
+ })
45
+ });
46
+ if (res.ok) {
47
+ toast(res.created + ' agent(s) duplicated successfully!', 'success');
48
+ if (res.errors && res.errors.length > 0) {
49
+ res.errors.forEach(function(e) { toast('Failed: ' + e.name + ' — ' + e.error, 'error'); });
50
+ }
51
+ if (onDuplicated) onDuplicated(res.agents);
52
+ onClose();
53
+ } else {
54
+ toast(res.error || 'Duplication failed', 'error');
55
+ }
56
+ } catch (e) {
57
+ toast(e.message || 'Duplication failed', 'error');
58
+ }
59
+ setLoading(false);
60
+ }
61
+
62
+ var _inputStyle = { width: '100%', padding: '8px 12px', border: '1px solid var(--border)', borderRadius: 6, background: 'var(--bg-secondary)', fontSize: 13 };
63
+
64
+ return h('div', { className: 'modal-overlay', onClick: onClose },
65
+ h('div', { className: 'modal', onClick: function(e) { e.stopPropagation(); }, style: { width: 580, maxHeight: '85vh', overflow: 'auto' } },
66
+ h('div', { className: 'modal-header' },
67
+ h('h2', { style: { fontSize: 16, flex: 1, display: 'flex', alignItems: 'center', gap: 8 } }, I('copy'), ' Duplicate Agent'),
68
+ h('button', { className: 'btn btn-ghost btn-icon', onClick: onClose }, '\u00d7')
69
+ ),
70
+ h('div', { className: 'modal-body', style: { padding: 20 } },
71
+ h('div', { style: { padding: '10px 14px', background: 'var(--bg-secondary)', borderRadius: 8, marginBottom: 16, fontSize: 13 } },
72
+ h('div', { style: { fontWeight: 600, marginBottom: 4 } }, 'Duplicating: ', agent.name),
73
+ h('div', { style: { color: 'var(--text-muted)', fontSize: 12 } },
74
+ 'Creates exact replicas with the same config, personality, memory, skills, and permissions. Only the name, email, and agent ID will be different.'
75
+ )
76
+ ),
77
+
78
+ agents.map(function(a, idx) {
79
+ return h('div', { key: idx, style: { padding: 12, border: '1px solid var(--border)', borderRadius: 8, marginBottom: 10, background: agents.length > 1 ? 'var(--bg-secondary)' : 'transparent' } },
80
+ agents.length > 1 && h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 8 } },
81
+ h('span', { style: { fontSize: 12, fontWeight: 600, color: 'var(--text-muted)' } }, 'Agent #' + (idx + 1)),
82
+ h('button', { className: 'btn btn-sm btn-ghost', style: { fontSize: 11, color: '#ef4444' }, onClick: function() { removeRow(idx); } }, I('trash'), ' Remove')
83
+ ),
84
+ h('div', { style: { marginBottom: 8 } },
85
+ h('label', { style: { fontSize: 12, fontWeight: 600, display: 'block', marginBottom: 4 } }, 'Name *'),
86
+ h('input', { type: 'text', value: a.name, placeholder: 'e.g. ' + agent.name + ' (Copy)', style: _inputStyle,
87
+ onChange: function(e) { updateRow(idx, 'name', e.target.value); }
88
+ })
89
+ ),
90
+ h('div', null,
91
+ h('label', { style: { fontSize: 12, fontWeight: 600, display: 'block', marginBottom: 4 } }, 'Email *'),
92
+ h('input', { type: 'email', value: a.email, placeholder: 'e.g. agent-copy@agenticmail.io', style: _inputStyle,
93
+ onChange: function(e) { updateRow(idx, 'email', e.target.value); }
94
+ })
95
+ )
96
+ );
97
+ }),
98
+
99
+ h('button', { className: 'btn btn-sm btn-secondary', style: { width: '100%', marginTop: 4 }, onClick: addRow },
100
+ I('plus'), ' Add Another Duplicate'
101
+ )
102
+ ),
103
+ h('div', { className: 'modal-footer', style: { display: 'flex', justifyContent: 'flex-end', gap: 8 } },
104
+ h('button', { className: 'btn btn-secondary', onClick: onClose, disabled: loading }, 'Cancel'),
105
+ h('button', { className: 'btn btn-primary', onClick: handleDuplicate, disabled: loading || agents.some(function(a) { return !a.name.trim() || !a.email.trim(); }) },
106
+ loading ? 'Duplicating...' : (I('copy'), ' Duplicate ' + agents.length + ' Agent' + (agents.length > 1 ? 's' : ''))
107
+ )
108
+ )
109
+ )
110
+ );
111
+ }
@@ -3,6 +3,7 @@ import { I } from '../components/icons.js';
3
3
  import { E } from '../assets/icons/emoji-icons.js';
4
4
  import { CULTURES, LANGUAGES, PersonaForm, LanguageSelect, getLanguageName } from '../components/persona-fields.js';
5
5
  import { HelpButton } from '../components/help-button.js';
6
+ import { DuplicateAgentModal } from '../components/duplicate-agent.js';
6
7
  import { useOrgContext } from '../components/org-switcher.js';
7
8
  import { KnowledgeLink } from '../components/knowledge-link.js';
8
9
 
@@ -1133,6 +1134,7 @@ export function AgentsPage({ onSelectAgent }) {
1133
1134
  const [agents, setAgents] = useState([]);
1134
1135
  const [creating, setCreating] = useState(false);
1135
1136
  const [liveStatuses, setLiveStatuses] = useState({});
1137
+ const [duplicatingAgent, setDuplicatingAgent] = useState(null);
1136
1138
 
1137
1139
  // Subscribe to real-time agent status
1138
1140
  useEffect(function() {
@@ -1224,6 +1226,7 @@ export function AgentsPage({ onSelectAgent }) {
1224
1226
  h('td', null,
1225
1227
  h('div', { style: { display: 'flex', gap: 4 } },
1226
1228
  h('button', { className: 'btn btn-primary btn-sm', onClick: () => onSelectAgent && onSelectAgent(a.id) }, 'View Details'),
1229
+ h('button', { className: 'btn btn-ghost btn-sm', title: 'Duplicate Agent', onClick: (e) => { e.stopPropagation(); setDuplicatingAgent(a); } }, I.copy()),
1227
1230
  h('button', { className: 'btn btn-ghost btn-sm', title: 'Restart', onClick: () => engineCall('/agents/' + a.id + '/restart', { method: 'POST', body: JSON.stringify({ restartedBy: 'dashboard' }) }).then(() => toast('Restarting...', 'info')).catch(e => toast(e.message, 'error')) }, I.refresh())
1228
1231
  )
1229
1232
  )
@@ -1231,7 +1234,14 @@ export function AgentsPage({ onSelectAgent }) {
1231
1234
  ))
1232
1235
  )
1233
1236
  )
1234
- )
1237
+ ),
1238
+ // Duplicate Agent Modal
1239
+ duplicatingAgent && h(DuplicateAgentModal, {
1240
+ agent: duplicatingAgent,
1241
+ onClose: function() { setDuplicatingAgent(null); },
1242
+ onDuplicated: function() { load(); },
1243
+ toast: toast,
1244
+ })
1235
1245
  );
1236
1246
  }
1237
1247
 
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  provision,
9
9
  runSetupWizard
10
- } from "./chunk-RQC74VTL.js";
10
+ } from "./chunk-K6BVQX2N.js";
11
11
  import {
12
12
  AgenticMailManager,
13
13
  GoogleEmailProvider,
@@ -28,7 +28,7 @@ import {
28
28
  executeTool,
29
29
  runAgentLoop,
30
30
  toolsToDefinitions
31
- } from "./chunk-2SUAZNZA.js";
31
+ } from "./chunk-HNCVCUSZ.js";
32
32
  import "./chunk-L2EKC35V.js";
33
33
  import {
34
34
  ValidationError,
@@ -43,7 +43,7 @@ import {
43
43
  requireRole,
44
44
  securityHeaders,
45
45
  validate
46
- } from "./chunk-NH3ZA3HP.js";
46
+ } from "./chunk-RRDEFDU6.js";
47
47
  import "./chunk-DJBCRQTD.js";
48
48
  import {
49
49
  PROVIDER_REGISTRY,
@@ -83,8 +83,7 @@ import {
83
83
  init_storage_manager,
84
84
  init_tenant,
85
85
  init_workforce
86
- } from "./chunk-TPL2J2U2.js";
87
- import "./chunk-TK55CSBH.js";
86
+ } from "./chunk-RYPBQTAI.js";
88
87
  import {
89
88
  ENGINE_TABLES,
90
89
  ENGINE_TABLES_POSTGRES,
@@ -105,12 +104,13 @@ import "./chunk-74ZCQKYU.js";
105
104
  import "./chunk-ET6WZFPS.js";
106
105
  import "./chunk-FQWJMPKW.js";
107
106
  import "./chunk-K2GKUQSB.js";
107
+ import "./chunk-TK55CSBH.js";
108
108
  import {
109
109
  BUILTIN_SKILLS,
110
110
  PRESET_PROFILES,
111
111
  PermissionEngine,
112
112
  init_skills
113
- } from "./chunk-NCODRQSS.js";
113
+ } from "./chunk-KWSVGUN5.js";
114
114
  import {
115
115
  AgentConfigGenerator,
116
116
  DeploymentEngine,
@@ -157,7 +157,7 @@ import {
157
157
  generateToolPolicy,
158
158
  getToolsBySkill,
159
159
  init_tool_catalog
160
- } from "./chunk-TOGMCQSJ.js";
160
+ } from "./chunk-GDY6QWI6.js";
161
161
  import {
162
162
  VALID_CATEGORIES,
163
163
  VALID_RISK_LEVELS,
@@ -0,0 +1,94 @@
1
+ import {
2
+ activity,
3
+ agentStatus,
4
+ approvals,
5
+ cluster,
6
+ commBus,
7
+ communityRegistry,
8
+ compliance,
9
+ configGen,
10
+ databaseManager,
11
+ deployer,
12
+ dlp,
13
+ engine,
14
+ getChatPoller,
15
+ getEmailPoller,
16
+ getMessagingPoller,
17
+ getRuntime,
18
+ guardrails,
19
+ hierarchyManager,
20
+ init_routes,
21
+ journal,
22
+ knowledgeBase,
23
+ knowledgeContribution,
24
+ lifecycle,
25
+ memoryManager,
26
+ mountRuntimeApp,
27
+ onboarding,
28
+ orgIntegrations,
29
+ permissionEngine,
30
+ policyEngine,
31
+ policyImporter,
32
+ setEngineDb,
33
+ setRuntime,
34
+ skillUpdater,
35
+ storageManager,
36
+ tenants,
37
+ vault,
38
+ workforce
39
+ } from "./chunk-RYPBQTAI.js";
40
+ import "./chunk-Z7NVD3OQ.js";
41
+ import "./chunk-VSBC4SWO.js";
42
+ import "./chunk-AF3WSNVX.js";
43
+ import "./chunk-74ZCQKYU.js";
44
+ import "./chunk-ET6WZFPS.js";
45
+ import "./chunk-FQWJMPKW.js";
46
+ import "./chunk-K2GKUQSB.js";
47
+ import "./chunk-TK55CSBH.js";
48
+ import "./chunk-KWSVGUN5.js";
49
+ import "./chunk-PSZU6FMQ.js";
50
+ import "./chunk-WUAWWKTN.js";
51
+ import "./chunk-YDD5TC5Q.js";
52
+ import "./chunk-FLQ5FLHW.js";
53
+ import "./chunk-GDY6QWI6.js";
54
+ import "./chunk-22U7TZPN.js";
55
+ import "./chunk-KFQGP6VL.js";
56
+ init_routes();
57
+ export {
58
+ activity,
59
+ agentStatus,
60
+ approvals,
61
+ cluster,
62
+ commBus,
63
+ communityRegistry,
64
+ compliance,
65
+ configGen,
66
+ databaseManager,
67
+ deployer,
68
+ dlp,
69
+ engine as engineRoutes,
70
+ getChatPoller,
71
+ getEmailPoller,
72
+ getMessagingPoller,
73
+ getRuntime,
74
+ guardrails,
75
+ hierarchyManager,
76
+ journal,
77
+ knowledgeBase,
78
+ knowledgeContribution,
79
+ lifecycle,
80
+ memoryManager,
81
+ mountRuntimeApp,
82
+ onboarding,
83
+ orgIntegrations,
84
+ permissionEngine,
85
+ policyEngine,
86
+ policyImporter,
87
+ setEngineDb,
88
+ setRuntime,
89
+ skillUpdater,
90
+ storageManager,
91
+ tenants,
92
+ vault,
93
+ workforce
94
+ };
@@ -0,0 +1,94 @@
1
+ import {
2
+ activity,
3
+ agentStatus,
4
+ approvals,
5
+ cluster,
6
+ commBus,
7
+ communityRegistry,
8
+ compliance,
9
+ configGen,
10
+ databaseManager,
11
+ deployer,
12
+ dlp,
13
+ engine,
14
+ getChatPoller,
15
+ getEmailPoller,
16
+ getMessagingPoller,
17
+ getRuntime,
18
+ guardrails,
19
+ hierarchyManager,
20
+ init_routes,
21
+ journal,
22
+ knowledgeBase,
23
+ knowledgeContribution,
24
+ lifecycle,
25
+ memoryManager,
26
+ mountRuntimeApp,
27
+ onboarding,
28
+ orgIntegrations,
29
+ permissionEngine,
30
+ policyEngine,
31
+ policyImporter,
32
+ setEngineDb,
33
+ setRuntime,
34
+ skillUpdater,
35
+ storageManager,
36
+ tenants,
37
+ vault,
38
+ workforce
39
+ } from "./chunk-JAUQO3LK.js";
40
+ import "./chunk-TK55CSBH.js";
41
+ import "./chunk-Z7NVD3OQ.js";
42
+ import "./chunk-VSBC4SWO.js";
43
+ import "./chunk-AF3WSNVX.js";
44
+ import "./chunk-74ZCQKYU.js";
45
+ import "./chunk-ET6WZFPS.js";
46
+ import "./chunk-FQWJMPKW.js";
47
+ import "./chunk-K2GKUQSB.js";
48
+ import "./chunk-KWSVGUN5.js";
49
+ import "./chunk-PSZU6FMQ.js";
50
+ import "./chunk-WUAWWKTN.js";
51
+ import "./chunk-YDD5TC5Q.js";
52
+ import "./chunk-FLQ5FLHW.js";
53
+ import "./chunk-GDY6QWI6.js";
54
+ import "./chunk-22U7TZPN.js";
55
+ import "./chunk-KFQGP6VL.js";
56
+ init_routes();
57
+ export {
58
+ activity,
59
+ agentStatus,
60
+ approvals,
61
+ cluster,
62
+ commBus,
63
+ communityRegistry,
64
+ compliance,
65
+ configGen,
66
+ databaseManager,
67
+ deployer,
68
+ dlp,
69
+ engine as engineRoutes,
70
+ getChatPoller,
71
+ getEmailPoller,
72
+ getMessagingPoller,
73
+ getRuntime,
74
+ guardrails,
75
+ hierarchyManager,
76
+ journal,
77
+ knowledgeBase,
78
+ knowledgeContribution,
79
+ lifecycle,
80
+ memoryManager,
81
+ mountRuntimeApp,
82
+ onboarding,
83
+ orgIntegrations,
84
+ permissionEngine,
85
+ policyEngine,
86
+ policyImporter,
87
+ setEngineDb,
88
+ setRuntime,
89
+ skillUpdater,
90
+ storageManager,
91
+ tenants,
92
+ vault,
93
+ workforce
94
+ };
@@ -0,0 +1,50 @@
1
+ import {
2
+ AgentRuntime,
3
+ EmailChannel,
4
+ FollowUpScheduler,
5
+ SessionManager,
6
+ SubAgentManager,
7
+ ToolRegistry,
8
+ ageStaleMessages,
9
+ callLLM,
10
+ createAgentRuntime,
11
+ createNoopHooks,
12
+ createRuntimeHooks,
13
+ estimateMessageTokens,
14
+ estimateTokens,
15
+ executeTool,
16
+ runAgentLoop,
17
+ toolsToDefinitions,
18
+ truncateToolResults
19
+ } from "./chunk-HNCVCUSZ.js";
20
+ import "./chunk-L2EKC35V.js";
21
+ import {
22
+ PROVIDER_REGISTRY,
23
+ listAllProviders,
24
+ resolveApiKeyForProvider,
25
+ resolveProvider
26
+ } from "./chunk-UF3ZJMJO.js";
27
+ import "./chunk-KFQGP6VL.js";
28
+ export {
29
+ AgentRuntime,
30
+ EmailChannel,
31
+ FollowUpScheduler,
32
+ PROVIDER_REGISTRY,
33
+ SessionManager,
34
+ SubAgentManager,
35
+ ToolRegistry,
36
+ ageStaleMessages,
37
+ callLLM,
38
+ createAgentRuntime,
39
+ createNoopHooks,
40
+ createRuntimeHooks,
41
+ estimateMessageTokens,
42
+ estimateTokens,
43
+ executeTool,
44
+ listAllProviders,
45
+ resolveApiKeyForProvider,
46
+ resolveProvider,
47
+ runAgentLoop,
48
+ toolsToDefinitions,
49
+ truncateToolResults
50
+ };
@@ -0,0 +1,50 @@
1
+ import {
2
+ AgentRuntime,
3
+ EmailChannel,
4
+ FollowUpScheduler,
5
+ SessionManager,
6
+ SubAgentManager,
7
+ ToolRegistry,
8
+ ageStaleMessages,
9
+ callLLM,
10
+ createAgentRuntime,
11
+ createNoopHooks,
12
+ createRuntimeHooks,
13
+ estimateMessageTokens,
14
+ estimateTokens,
15
+ executeTool,
16
+ runAgentLoop,
17
+ toolsToDefinitions,
18
+ truncateToolResults
19
+ } from "./chunk-QJYJLQEP.js";
20
+ import "./chunk-L2EKC35V.js";
21
+ import {
22
+ PROVIDER_REGISTRY,
23
+ listAllProviders,
24
+ resolveApiKeyForProvider,
25
+ resolveProvider
26
+ } from "./chunk-UF3ZJMJO.js";
27
+ import "./chunk-KFQGP6VL.js";
28
+ export {
29
+ AgentRuntime,
30
+ EmailChannel,
31
+ FollowUpScheduler,
32
+ PROVIDER_REGISTRY,
33
+ SessionManager,
34
+ SubAgentManager,
35
+ ToolRegistry,
36
+ ageStaleMessages,
37
+ callLLM,
38
+ createAgentRuntime,
39
+ createNoopHooks,
40
+ createRuntimeHooks,
41
+ estimateMessageTokens,
42
+ estimateTokens,
43
+ executeTool,
44
+ listAllProviders,
45
+ resolveApiKeyForProvider,
46
+ resolveProvider,
47
+ runAgentLoop,
48
+ toolsToDefinitions,
49
+ truncateToolResults
50
+ };