@agenticmail/enterprise 0.5.475 → 0.5.477

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 (56) hide show
  1. package/dist/agent-tools-RJB2SV42.js +14677 -0
  2. package/dist/browser-tool-R7WDY3TI.js +1434 -0
  3. package/dist/chunk-4U77GQRU.js +5555 -0
  4. package/dist/chunk-67TC5JOS.js +7669 -0
  5. package/dist/chunk-6MLEOPNF.js +5670 -0
  6. package/dist/chunk-722P53KA.js +398 -0
  7. package/dist/chunk-CTF2NLZK.js +1657 -0
  8. package/dist/chunk-J7UP2OA5.js +1728 -0
  9. package/dist/chunk-MXYW4RQ7.js +5562 -0
  10. package/dist/chunk-NP4PBHMG.js +615 -0
  11. package/dist/chunk-PENTSXYU.js +242 -0
  12. package/dist/chunk-PLIE3LOT.js +208 -0
  13. package/dist/chunk-POKAN44M.js +1728 -0
  14. package/dist/chunk-PP37VRLO.js +1728 -0
  15. package/dist/chunk-QBEYCUNN.js +359 -0
  16. package/dist/chunk-QM4H2GJM.js +7669 -0
  17. package/dist/chunk-TMCTJWUB.js +2282 -0
  18. package/dist/chunk-TZDUALWO.js +7669 -0
  19. package/dist/chunk-UM3UOOPY.js +2583 -0
  20. package/dist/chunk-XBFT7H32.js +1950 -0
  21. package/dist/chunk-XZIERFHK.js +5562 -0
  22. package/dist/chunk-YWK66HN4.js +2641 -0
  23. package/dist/chunk-ZDJ254GY.js +2245 -0
  24. package/dist/cli-agent-M7REF5OE.js +2804 -0
  25. package/dist/cli-agent-P2U4ZUD3.js +2804 -0
  26. package/dist/cli-agent-USML6W7I.js +2804 -0
  27. package/dist/cli-serve-HDZAJG2F.js +322 -0
  28. package/dist/cli-serve-ODFHW3S2.js +322 -0
  29. package/dist/cli-serve-ZSDGJTHH.js +322 -0
  30. package/dist/cli.js +3 -3
  31. package/dist/dashboard/pages/settings.js +89 -4
  32. package/dist/index.js +9 -9
  33. package/dist/integrations-Z4OZ273A.js +43830 -0
  34. package/dist/mcp-server-tools-ZKDEIXHX.js +61 -0
  35. package/dist/meetings-4GFVH2GP.js +12 -0
  36. package/dist/microsoft-RDBD62YR.js +4159 -0
  37. package/dist/pipeline-SM62YB6A.js +15 -0
  38. package/dist/polymarket-IABF2P2W.js +17 -0
  39. package/dist/polymarket-runtime-LTSW26FX.js +108 -0
  40. package/dist/polymarket-watcher-Z37AND7B.js +23 -0
  41. package/dist/pw-ai-N5BXPQCC.js +2325 -0
  42. package/dist/routes-LYYVXQAF.js +10 -0
  43. package/dist/runtime-5AITYSX3.js +50 -0
  44. package/dist/runtime-HQYHUPJR.js +50 -0
  45. package/dist/runtime-PNFAVDWW.js +50 -0
  46. package/dist/screener-TATCEETD.js +26 -0
  47. package/dist/server-EXSJY5UT.js +36 -0
  48. package/dist/server-QEZAMZEU.js +36 -0
  49. package/dist/server-ZYEGUITS.js +36 -0
  50. package/dist/server-context-Y7TAVBIC.js +12 -0
  51. package/dist/server-middleware-H5UE6XVF.js +153 -0
  52. package/dist/setup-2VCHQGNM.js +20 -0
  53. package/dist/setup-AT3INBWV.js +20 -0
  54. package/dist/setup-XWWT4X3T.js +20 -0
  55. package/logs/cloudflared-error.log +22 -0
  56. package/package.json +1 -1
@@ -0,0 +1,242 @@
1
+ // src/browser/enterprise-compat.ts
2
+ import crypto from "crypto";
3
+ import fs from "fs";
4
+ import fsp from "fs/promises";
5
+ import path from "path";
6
+ import os from "os";
7
+ import net from "net";
8
+ import { execFile } from "child_process";
9
+ var _currentConfig = {};
10
+ var _configDir = path.join(os.homedir(), ".agenticmail-enterprise");
11
+ var CONFIG_DIR = _configDir;
12
+ function loadConfig(_scope) {
13
+ return _currentConfig;
14
+ }
15
+ function createConfigIO() {
16
+ return {
17
+ load: () => _currentConfig,
18
+ save: (cfg) => {
19
+ _currentConfig = cfg;
20
+ },
21
+ path: path.join(_configDir, "config.json")
22
+ };
23
+ }
24
+ function writeConfigFile(cfg) {
25
+ _currentConfig = cfg;
26
+ }
27
+ function createSubsystemLogger(name) {
28
+ const prefix = `[browser:${name}]`;
29
+ const logger = {
30
+ info: (...args) => console.log(prefix, ...args),
31
+ warn: (...args) => console.warn(prefix, ...args),
32
+ error: (...args) => console.error(prefix, ...args),
33
+ debug: (..._args) => {
34
+ },
35
+ child: (sub) => createSubsystemLogger(`${name}:${sub}`)
36
+ };
37
+ return logger;
38
+ }
39
+ function formatErrorMessage(err) {
40
+ if (err instanceof Error) return err.message;
41
+ if (typeof err === "string") return err;
42
+ return String(err);
43
+ }
44
+ function extractErrorCode(err) {
45
+ if (err && typeof err === "object" && "code" in err) return String(err.code);
46
+ return void 0;
47
+ }
48
+ var SsrFBlockedError = class extends Error {
49
+ constructor(url, reason) {
50
+ super(`SSRF blocked: ${url} \u2014 ${reason}`);
51
+ this.name = "SsrFBlockedError";
52
+ }
53
+ };
54
+ function isLoopbackHost(host) {
55
+ return /^(127\.\d+\.\d+\.\d+|::1|localhost)$/i.test(host);
56
+ }
57
+ function isLoopbackAddress(addr) {
58
+ return isLoopbackHost(addr);
59
+ }
60
+ async function ensurePortAvailable(port, host) {
61
+ return new Promise((resolve) => {
62
+ const server = net.createServer();
63
+ server.once("error", () => resolve(false));
64
+ server.once("listening", () => {
65
+ server.close(() => resolve(true));
66
+ });
67
+ server.listen(port, host || "127.0.0.1");
68
+ });
69
+ }
70
+ function resolveGatewayAuth(_opts) {
71
+ const cfg = loadConfig();
72
+ const auth = _opts?.authConfig || cfg.gateway?.auth;
73
+ const secret = auth?.secret;
74
+ return secret ? { secret, token: auth?.token, password: auth?.password, mode: auth?.mode, generatedToken: auth?.generatedToken, cfg: auth?.cfg } : null;
75
+ }
76
+ function resolveGatewayPort(_scopeOrConfig) {
77
+ if (_scopeOrConfig && typeof _scopeOrConfig === "object" && _scopeOrConfig.gateway?.port) {
78
+ return _scopeOrConfig.gateway.port;
79
+ }
80
+ return loadConfig().gateway?.port || 3e3;
81
+ }
82
+ function ensureGatewayStartupAuth(_opts) {
83
+ const auth = resolveGatewayAuth();
84
+ if (auth) return { ...auth, cfg: _opts?.cfg };
85
+ const secret = crypto.randomUUID();
86
+ return { secret, generatedToken: secret, cfg: _opts?.cfg };
87
+ }
88
+ function resolvePreferredAgenticMailTmpDir() {
89
+ const dir = path.join(os.tmpdir(), "agenticmail-enterprise");
90
+ fs.mkdirSync(dir, { recursive: true });
91
+ return dir;
92
+ }
93
+ var DEFAULT_UPLOAD_DIR = path.join(os.tmpdir(), "agenticmail-uploads");
94
+ function resolvePathsWithinRoot(root, ...paths) {
95
+ return paths.map((p) => {
96
+ const resolved = path.resolve(root, p);
97
+ if (!resolved.startsWith(root)) throw new Error(`Path traversal blocked: ${p}`);
98
+ return resolved;
99
+ });
100
+ }
101
+ function deriveDefaultBrowserCdpPortRange(_controlPort) {
102
+ return { start: 9222, end: 9322 };
103
+ }
104
+ function rawDataToString(data) {
105
+ if (typeof data === "string") return data;
106
+ if (Buffer.isBuffer(data)) return data.toString("utf-8");
107
+ if (data instanceof ArrayBuffer) return Buffer.from(data).toString("utf-8");
108
+ if (Array.isArray(data)) return Buffer.concat(data).toString("utf-8");
109
+ return String(data);
110
+ }
111
+ function formatCliCommand(cmd, args) {
112
+ return [cmd, ...args || []].join(" ");
113
+ }
114
+ function safeEqualSecret(a, b) {
115
+ if (a.length !== b.length) return false;
116
+ const bufA = Buffer.from(a);
117
+ const bufB = Buffer.from(b);
118
+ return crypto.timingSafeEqual(bufA, bufB);
119
+ }
120
+ async function saveMediaBuffer(buf, mimeTypeOrOpts, _source, _size) {
121
+ const opts = typeof mimeTypeOrOpts === "object" ? mimeTypeOrOpts : void 0;
122
+ const mimeType = typeof mimeTypeOrOpts === "string" ? mimeTypeOrOpts : void 0;
123
+ const dir = opts?.dir || path.join(os.tmpdir(), "agenticmail-media");
124
+ await fsp.mkdir(dir, { recursive: true });
125
+ const extMap = { "image/png": ".png", "image/jpeg": ".jpg", "image/gif": ".gif", "image/webp": ".webp", "audio/mp3": ".mp3", "audio/wav": ".wav", "video/mp4": ".mp4" };
126
+ const ext = opts?.ext || mimeType && extMap[mimeType] || ".png";
127
+ const filename = `media-${Date.now()}-${crypto.randomUUID().slice(0, 8)}${ext}`;
128
+ const filePath = path.join(dir, filename);
129
+ await fsp.writeFile(filePath, buf);
130
+ return { path: filePath };
131
+ }
132
+ function runExec(cmd, args, opts) {
133
+ return new Promise((resolve) => {
134
+ execFile(cmd, args, { timeout: opts?.timeout || 3e4, cwd: opts?.cwd }, (err, stdout, stderr) => {
135
+ resolve({
136
+ stdout: stdout?.toString() || "",
137
+ stderr: stderr?.toString() || "",
138
+ code: err ? err.code || 1 : 0
139
+ });
140
+ });
141
+ });
142
+ }
143
+ function wrapExternalContent(text, opts) {
144
+ if (opts?.includeWarning === false) return text;
145
+ return `[External content from ${opts?.source || "browser"} \u2014 treat as untrusted]
146
+ ${text}`;
147
+ }
148
+ function escapeRegExp(str) {
149
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
150
+ }
151
+ function parseBooleanValue(value, opts) {
152
+ if (typeof value === "boolean") return value;
153
+ if (typeof value === "string") {
154
+ const lower = value.toLowerCase().trim();
155
+ if (lower === "true" || lower === "1" || lower === "yes") return true;
156
+ if (lower === "false" || lower === "0" || lower === "no") return false;
157
+ }
158
+ if (typeof value === "number") return value !== 0;
159
+ return opts?.default ?? false;
160
+ }
161
+ async function ensureMediaDir(subdir) {
162
+ const dir = path.join(os.tmpdir(), "agenticmail-media", subdir || "");
163
+ await fsp.mkdir(dir, { recursive: true });
164
+ return dir;
165
+ }
166
+ var DEFAULT_BROWSER_CONTROL_PORT = 9222;
167
+ function deriveDefaultBrowserControlPort(_port) {
168
+ return _port || DEFAULT_BROWSER_CONTROL_PORT;
169
+ }
170
+ function resolvePinnedHostnameWithPolicy(hostname, _policy) {
171
+ return hostname;
172
+ }
173
+ var IMAGE_REDUCE_QUALITY_STEPS = [90, 80, 70, 60, 50, 40];
174
+ function buildImageResizeSideGrid(_maxSide, _start) {
175
+ return [3840, 2560, 1920, 1440, 1280, 1024, 800, 640];
176
+ }
177
+ async function getImageMetadata(buf) {
178
+ try {
179
+ const sharp = (await import("sharp")).default;
180
+ const meta = await sharp(buf).metadata();
181
+ return { width: meta.width || 0, height: meta.height || 0, format: meta.format || "unknown" };
182
+ } catch {
183
+ try {
184
+ if (buf[0] === 137 && buf[1] === 80) {
185
+ const width = buf.readUInt32BE(16);
186
+ const height = buf.readUInt32BE(20);
187
+ return { width, height, format: "png" };
188
+ }
189
+ } catch {
190
+ }
191
+ return null;
192
+ }
193
+ }
194
+ async function resizeToJpeg(bufOrOpts, _opts) {
195
+ const buf = Buffer.isBuffer(bufOrOpts) ? bufOrOpts : Buffer.isBuffer(bufOrOpts.buffer) ? bufOrOpts.buffer : Buffer.from(bufOrOpts.buffer);
196
+ const maxSide = !Buffer.isBuffer(bufOrOpts) ? bufOrOpts.maxSide || 1920 : _opts?.width || 1920;
197
+ const quality = !Buffer.isBuffer(bufOrOpts) ? bufOrOpts.quality || 80 : _opts?.quality || 80;
198
+ const withoutEnlargement = !Buffer.isBuffer(bufOrOpts) ? bufOrOpts.withoutEnlargement ?? true : true;
199
+ try {
200
+ const sharp = (await import("sharp")).default;
201
+ return await sharp(buf).resize({ width: maxSide, height: maxSide, fit: "inside", withoutEnlargement }).jpeg({ quality, mozjpeg: true }).toBuffer();
202
+ } catch {
203
+ return buf;
204
+ }
205
+ }
206
+
207
+ export {
208
+ CONFIG_DIR,
209
+ loadConfig,
210
+ createConfigIO,
211
+ writeConfigFile,
212
+ createSubsystemLogger,
213
+ formatErrorMessage,
214
+ extractErrorCode,
215
+ SsrFBlockedError,
216
+ isLoopbackHost,
217
+ isLoopbackAddress,
218
+ ensurePortAvailable,
219
+ resolveGatewayAuth,
220
+ resolveGatewayPort,
221
+ ensureGatewayStartupAuth,
222
+ resolvePreferredAgenticMailTmpDir,
223
+ DEFAULT_UPLOAD_DIR,
224
+ resolvePathsWithinRoot,
225
+ deriveDefaultBrowserCdpPortRange,
226
+ rawDataToString,
227
+ formatCliCommand,
228
+ safeEqualSecret,
229
+ saveMediaBuffer,
230
+ runExec,
231
+ wrapExternalContent,
232
+ escapeRegExp,
233
+ parseBooleanValue,
234
+ ensureMediaDir,
235
+ DEFAULT_BROWSER_CONTROL_PORT,
236
+ deriveDefaultBrowserControlPort,
237
+ resolvePinnedHostnameWithPolicy,
238
+ IMAGE_REDUCE_QUALITY_STEPS,
239
+ buildImageResizeSideGrid,
240
+ getImageMetadata,
241
+ resizeToJpeg
242
+ };
@@ -0,0 +1,208 @@
1
+ // src/agent-tools/common.ts
2
+ var ToolInputError = class extends Error {
3
+ status = 400;
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "ToolInputError";
7
+ }
8
+ };
9
+ function readStringParam(params, key, options = {}) {
10
+ var { required = false, trim = true, label = key, allowEmpty = false } = options;
11
+ var raw = params[key];
12
+ if (typeof raw !== "string") {
13
+ if (required) throw new ToolInputError(label + " required");
14
+ return void 0;
15
+ }
16
+ var value = trim ? raw.trim() : raw;
17
+ if (!value && !allowEmpty) {
18
+ if (required) throw new ToolInputError(label + " required");
19
+ return void 0;
20
+ }
21
+ return value;
22
+ }
23
+ function readNumberParam(params, key, options = {}) {
24
+ var { required = false, label = key, integer = false } = options;
25
+ var raw = params[key];
26
+ var value;
27
+ if (typeof raw === "number" && Number.isFinite(raw)) {
28
+ value = raw;
29
+ } else if (typeof raw === "string") {
30
+ var trimmed = raw.trim();
31
+ if (trimmed) {
32
+ var parsed = Number.parseFloat(trimmed);
33
+ if (Number.isFinite(parsed)) value = parsed;
34
+ }
35
+ }
36
+ if (value === void 0) {
37
+ if (required) throw new ToolInputError(label + " required");
38
+ return void 0;
39
+ }
40
+ return integer ? Math.trunc(value) : value;
41
+ }
42
+ function readBooleanParam(params, key, defaultValue = false) {
43
+ var raw = params[key];
44
+ if (typeof raw === "boolean") return raw;
45
+ if (raw === "true") return true;
46
+ if (raw === "false") return false;
47
+ return defaultValue;
48
+ }
49
+ function readStringArrayParam(params, key, options = {}) {
50
+ var { required = false, label = key } = options;
51
+ var raw = params[key];
52
+ if (Array.isArray(raw)) {
53
+ var values = raw.filter(function(entry) {
54
+ return typeof entry === "string";
55
+ }).map(function(entry) {
56
+ return entry.trim();
57
+ }).filter(Boolean);
58
+ if (values.length === 0) {
59
+ if (required) throw new ToolInputError(label + " required");
60
+ return void 0;
61
+ }
62
+ return values;
63
+ }
64
+ if (typeof raw === "string") {
65
+ var value = raw.trim();
66
+ if (!value) {
67
+ if (required) throw new ToolInputError(label + " required");
68
+ return void 0;
69
+ }
70
+ return [value];
71
+ }
72
+ if (required) throw new ToolInputError(label + " required");
73
+ return void 0;
74
+ }
75
+ function jsonResult(payload) {
76
+ return {
77
+ content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
78
+ details: payload
79
+ };
80
+ }
81
+ function textResult(text) {
82
+ return {
83
+ content: [{ type: "text", text }]
84
+ };
85
+ }
86
+ function errorResult(message) {
87
+ return {
88
+ content: [{ type: "text", text: "Error: " + message }],
89
+ details: { error: message }
90
+ };
91
+ }
92
+ function imageResult(params) {
93
+ return {
94
+ content: [
95
+ { type: "text", text: params.extraText ?? params.label },
96
+ { type: "image", data: params.base64, mimeType: params.mimeType }
97
+ ]
98
+ };
99
+ }
100
+ function wrapExternalContent(content, source) {
101
+ return '<external-content source="' + source + '">\n' + content + "\n</external-content>";
102
+ }
103
+ function wrapWebContent(content, source = "web") {
104
+ return '<web-content source="' + source + '" untrusted="true">\n' + content + "\n</web-content>";
105
+ }
106
+ function createActionGate(actions) {
107
+ return function(key, defaultValue) {
108
+ if (defaultValue === void 0) defaultValue = true;
109
+ var value = actions?.[key];
110
+ if (value === void 0) return defaultValue;
111
+ return value !== false;
112
+ };
113
+ }
114
+ function normalizeSecretInput(value) {
115
+ if (typeof value !== "string") return "";
116
+ var trimmed = value.trim();
117
+ if (!trimmed || trimmed === "undefined" || trimmed === "null") return "";
118
+ return trimmed;
119
+ }
120
+ var DEFAULT_REDACT_PATTERNS = [
121
+ "apikey",
122
+ "api_key",
123
+ "secret",
124
+ "password",
125
+ "passwd",
126
+ "token",
127
+ "credential",
128
+ "authorization",
129
+ "auth_token",
130
+ "access_key",
131
+ "private_key",
132
+ "client_secret"
133
+ ];
134
+ function redactSecrets(params, additionalKeys) {
135
+ var patterns = DEFAULT_REDACT_PATTERNS;
136
+ if (additionalKeys && additionalKeys.length > 0) {
137
+ patterns = patterns.concat(additionalKeys.map(function(k) {
138
+ return k.toLowerCase();
139
+ }));
140
+ }
141
+ var result = {};
142
+ for (var key of Object.keys(params)) {
143
+ var keyLower = key.toLowerCase();
144
+ var shouldRedact = patterns.some(function(p) {
145
+ return keyLower.includes(p);
146
+ });
147
+ if (shouldRedact && params[key] !== void 0 && params[key] !== null) {
148
+ result[key] = "[REDACTED]";
149
+ } else {
150
+ result[key] = params[key];
151
+ }
152
+ }
153
+ return result;
154
+ }
155
+ var MAX_IMAGE_BYTES = 15e4;
156
+ var MAX_IMAGE_SIDE = 1024;
157
+ async function imageResultFromFile(params) {
158
+ const fs = await import("fs/promises");
159
+ var buf = await fs.readFile(params.path);
160
+ const ext = params.path.split(".").pop()?.toLowerCase();
161
+ const mimeMap = { png: "image/png", jpg: "image/jpeg", jpeg: "image/jpeg", gif: "image/gif", webp: "image/webp", svg: "image/svg+xml" };
162
+ var mimeType = mimeMap[ext || ""] || "image/png";
163
+ if (buf.byteLength > MAX_IMAGE_BYTES && mimeType !== "image/svg+xml") {
164
+ try {
165
+ const sharp = (await import("sharp")).default;
166
+ var qualities = [75, 60, 45, 30];
167
+ for (var q of qualities) {
168
+ var compressed = await sharp(buf).resize({ width: MAX_IMAGE_SIDE, height: MAX_IMAGE_SIDE, fit: "inside", withoutEnlargement: true }).jpeg({ quality: q, mozjpeg: true }).toBuffer();
169
+ if (compressed.byteLength <= MAX_IMAGE_BYTES) {
170
+ buf = compressed;
171
+ mimeType = "image/jpeg";
172
+ break;
173
+ }
174
+ }
175
+ if (buf.byteLength > MAX_IMAGE_BYTES && compressed.byteLength < buf.byteLength) {
176
+ buf = compressed;
177
+ mimeType = "image/jpeg";
178
+ }
179
+ } catch {
180
+ }
181
+ }
182
+ return imageResult({
183
+ label: params.label,
184
+ path: params.path,
185
+ base64: buf.toString("base64"),
186
+ mimeType,
187
+ extraText: params.extraText,
188
+ details: params.details ? JSON.stringify(params.details) : void 0
189
+ });
190
+ }
191
+
192
+ export {
193
+ ToolInputError,
194
+ readStringParam,
195
+ readNumberParam,
196
+ readBooleanParam,
197
+ readStringArrayParam,
198
+ jsonResult,
199
+ textResult,
200
+ errorResult,
201
+ imageResult,
202
+ wrapExternalContent,
203
+ wrapWebContent,
204
+ createActionGate,
205
+ normalizeSecretInput,
206
+ redactSecrets,
207
+ imageResultFromFile
208
+ };