@burtson-labs/host-kit 0.4.51 → 0.4.54

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,22 @@
1
+ export interface InlineImagesOptions {
2
+ /** Resolve relative local `src` paths against this directory (default cwd). */
3
+ baseDir?: string;
4
+ fetchImpl?: typeof fetch;
5
+ /** Skip any single image larger than this (default 4 MB). */
6
+ maxImageBytes?: number;
7
+ /** Stop inlining once the running total passes this (default 20 MB; artifact cap is 25 MB). */
8
+ maxTotalBytes?: number;
9
+ /** Per-remote-fetch timeout, ms (default 15000). */
10
+ timeoutMs?: number;
11
+ }
12
+ export interface InlineImagesResult {
13
+ html: string;
14
+ inlined: number;
15
+ skipped: number;
16
+ }
17
+ /**
18
+ * Rewrite every inlinable `<img src>` in the HTML to a base64 data URI. Returns
19
+ * the new HTML plus counts. Non-HTML callers should skip this.
20
+ */
21
+ export declare function inlineHtmlImages(html: string, options?: InlineImagesOptions): Promise<InlineImagesResult>;
22
+ //# sourceMappingURL=imageInline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageInline.d.ts","sourceRoot":"","sources":["../src/imageInline.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAgDD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4CnH"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.inlineHtmlImages = inlineHtmlImages;
37
+ /**
38
+ * Inline `<img>` sources into a standalone HTML artifact. This is what makes
39
+ * "put an image in an artifact" actually work: the agent references any image
40
+ * (a local path, the user's pasted screenshot, or a remote URL), and at publish
41
+ * time we fetch/read each one and rewrite its `src` to a base64 `data:` URI —
42
+ * so the single HTML file renders the image anywhere, with no hotlink protection
43
+ * or missing-file surprises (a server-side GET usually succeeds where a browser
44
+ * hotlink is blocked).
45
+ *
46
+ * Bounded: per-image + total byte caps (the artifact limit is 25 MB), a fetch
47
+ * timeout, and non-image / oversized / unreachable sources are left untouched.
48
+ */
49
+ const fs = __importStar(require("fs"));
50
+ const path = __importStar(require("path"));
51
+ const EXT_MIME = {
52
+ '.png': 'image/png', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', '.gif': 'image/gif',
53
+ '.webp': 'image/webp', '.svg': 'image/svg+xml', '.bmp': 'image/bmp', '.ico': 'image/x-icon',
54
+ '.avif': 'image/avif'
55
+ };
56
+ function mimeFromPath(p) {
57
+ return EXT_MIME[path.extname(p).toLowerCase()] ?? 'application/octet-stream';
58
+ }
59
+ /** Resolve one `src` to a data URI, or null to leave it as-is. */
60
+ async function resolveOne(src, opts, budgetLeft) {
61
+ if (!src || src.startsWith('data:'))
62
+ return null;
63
+ try {
64
+ let bytes;
65
+ let mime;
66
+ if (/^https?:\/\//i.test(src)) {
67
+ const ctl = new AbortController();
68
+ const timer = setTimeout(() => ctl.abort(), opts.timeoutMs);
69
+ let res;
70
+ try {
71
+ res = await opts.fetchImpl(src, { signal: ctl.signal, redirect: 'follow' });
72
+ }
73
+ finally {
74
+ clearTimeout(timer);
75
+ }
76
+ if (!res.ok)
77
+ return null;
78
+ mime = (res.headers.get('content-type') ?? '').split(';')[0].trim();
79
+ if (!/^image\//i.test(mime))
80
+ return null;
81
+ bytes = Buffer.from(await res.arrayBuffer());
82
+ }
83
+ else {
84
+ const abs = path.isAbsolute(src) ? src : path.join(opts.baseDir, src);
85
+ bytes = await fs.promises.readFile(abs);
86
+ mime = mimeFromPath(abs);
87
+ if (!mime.startsWith('image/'))
88
+ return null;
89
+ }
90
+ if (bytes.byteLength > opts.maxImageBytes || bytes.byteLength > budgetLeft)
91
+ return null;
92
+ return `data:${mime};base64,${bytes.toString('base64')}`;
93
+ }
94
+ catch {
95
+ return null;
96
+ }
97
+ }
98
+ /**
99
+ * Rewrite every inlinable `<img src>` in the HTML to a base64 data URI. Returns
100
+ * the new HTML plus counts. Non-HTML callers should skip this.
101
+ */
102
+ async function inlineHtmlImages(html, options = {}) {
103
+ const opts = {
104
+ baseDir: options.baseDir ?? process.cwd(),
105
+ fetchImpl: options.fetchImpl ?? fetch,
106
+ maxImageBytes: options.maxImageBytes ?? 4 * 1024 * 1024,
107
+ timeoutMs: options.timeoutMs ?? 15000
108
+ };
109
+ const maxTotal = options.maxTotalBytes ?? 20 * 1024 * 1024;
110
+ // Match <img ... src="X" ...>; capture the quote + value so we can rewrite in place.
111
+ const imgRe = /<img\b[^>]*?\bsrc\s*=\s*(["'])(.*?)\1/gi;
112
+ const matches = [...html.matchAll(imgRe)];
113
+ if (matches.length === 0)
114
+ return { html, inlined: 0, skipped: 0 };
115
+ let total = 0;
116
+ let inlined = 0;
117
+ let skipped = 0;
118
+ // Resolve sequentially so the running budget is honored deterministically.
119
+ const rewrites = [];
120
+ for (const m of matches) {
121
+ const full = m[0];
122
+ const quote = m[1];
123
+ const src = m[2];
124
+ const dataUri = await resolveOne(src, opts, maxTotal - total);
125
+ if (dataUri == null) {
126
+ if (src && !src.startsWith('data:'))
127
+ skipped++;
128
+ continue;
129
+ }
130
+ total += Math.ceil((dataUri.length - 'data:;base64,'.length) * 0.75); // approx original bytes
131
+ const newTag = full.replace(`=${quote}${src}${quote}`, `=${quote}${dataUri}${quote}`);
132
+ rewrites.push({ index: m.index ?? 0, length: full.length, text: newTag });
133
+ inlined++;
134
+ }
135
+ if (rewrites.length === 0)
136
+ return { html, inlined: 0, skipped };
137
+ // Rebuild by index so duplicate identical tags each get replaced correctly.
138
+ let out = '';
139
+ let last = 0;
140
+ for (const r of rewrites) {
141
+ out += html.slice(last, r.index) + r.text;
142
+ last = r.index + r.length;
143
+ }
144
+ out += html.slice(last);
145
+ return { html: out, inlined, skipped };
146
+ }
147
+ //# sourceMappingURL=imageInline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageInline.js","sourceRoot":"","sources":["../src/imageInline.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ export { buildPublishArtifactTool } from './tools/publishArtifactTool';
7
7
  export { buildShareArtifactTool } from './tools/shareArtifactTool';
8
8
  export { buildListArtifactsTool } from './tools/listArtifactsTool';
9
9
  export { buildDeleteArtifactTool } from './tools/deleteArtifactTool';
10
+ export { buildFetchImageTool } from './tools/fetchImageTool';
11
+ export { inlineHtmlImages, type InlineImagesOptions, type InlineImagesResult } from './imageInline';
10
12
  export { LocalSandboxExecutor, AntonSandboxExecutor, createSandboxExecutor, ANTON_EXEC_CONTRACT, type SandboxExecutor, type SandboxExecOptions, type SandboxExecResult, type SandboxConfig, } from './sandbox';
11
13
  export { RUNNER_PROTOCOL_VERSION, type RemoteRunMode, type RemoteTask, type RunnerEvent, type RunnerGateway } from './runner/contract';
12
14
  export { HttpRunnerGateway, type HttpGatewayOptions } from './runner/httpGateway';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildGitHubServerConfig = exports.addMcpServerToConfig = exports.persistMcpActivation = exports.globalMcpServersPath = exports.registerMcpServersFromDisk = exports.loadMcpServersConfig = exports.RemoteSession = exports.HttpRunnerGateway = exports.RUNNER_PROTOCOL_VERSION = exports.ANTON_EXEC_CONTRACT = exports.createSandboxExecutor = exports.AntonSandboxExecutor = exports.LocalSandboxExecutor = exports.buildDeleteArtifactTool = exports.buildListArtifactsTool = exports.buildShareArtifactTool = exports.buildPublishArtifactTool = exports.DEFAULT_AUTH_BASE_URL = exports.artifactKeyFromUrl = exports.setArtifactScope = exports.listShareLinks = exports.revokeShareLink = exports.emailShareLink = exports.createShareLink = exports.clearArtifacts = exports.deleteArtifact = exports.listArtifacts = exports.guessContentType = exports.resolveGatewayToken = exports.publishArtifact = exports.clearLessons = exports.addLesson = exports.loadLessons = exports.lessonsPath = exports.buildReadMemoryTool = exports.BANDIT_MEMORY_INDEX_FILE = exports.BANDIT_MEMORY_DIR = exports.BANDIT_DIR = exports.MEMORY_INDEX_FILE = exports.MEMORY_DIR = exports.MAX_MEMORY_FILE_BYTES = exports.MAX_INDEX_BYTES = exports.migrateMemoryToBanditDir = exports.writeMemoryTopic = exports.renderMemoryIndexBlock = exports.loadMemoryIndex = exports.consolidateMemory = exports.appendMemory = exports.loadCombinedMemory = exports.loadMemory = void 0;
4
- exports.buildAiInput = exports.writeInsightsReport = exports.renderInsightsHtml = exports.computeInsights = exports.parseTestOutput = exports.buildTestCommand = exports.detectTestFramework = exports.buildTestRunTool = exports.buildListTasksTool = exports.buildCheckTaskTool = exports.buildTaskTool = exports.buildRememberTool = exports.buildWebSearchTool = exports.buildWebFetchTool = exports.buildTodoWriteTool = exports.TodoStore = exports.expandMentions = exports.CYCLE_MODES = exports.PERMISSION_MODES = exports.AutoApprovalLedger = exports.nextCycleMode = exports.isPermissionMode = exports.decidePermission = exports.shouldAutoApprove = exports.resolvePermissionMode = exports.policyIncludes = exports.commandSignature = exports.grantRuleFor = exports.classifyRisk = exports.evaluateSecurityGuard = exports.runHooks = exports.persistAllowEntry = exports.loadHookSettings = exports.mcpToolCachePath = exports.pruneMcpToolCache = exports.saveMcpToolEntry = exports.loadMcpToolCache = exports.mcpTrustPath = exports.revokeMcpFingerprint = exports.approveMcpFingerprint = exports.loadApprovedMcpFingerprints = exports.buildCustomServerConfig = exports.looksLikeGmailCredentialsPath = exports.buildGmailServerConfig = exports.looksLikeGitLabToken = exports.buildGitLabServerConfig = exports.looksLikeSlackTeamId = exports.looksLikeSlackToken = exports.buildSlackServerConfig = exports.looksLikeGitHubToken = void 0;
5
- exports.CheckpointStore = exports.isChatCapable = exports.suggestOllamaMatch = exports.listInstalledOllamaModels = exports.formatTurnTraceMarkdown = exports.summarizeTurnTrace = exports.parseTurnLog = exports.readTurnTraceById = exports.readTurnTrace = exports.listTurnTraces = exports.listTurnTraceFiles = exports.previewText = exports.openTurnLog = exports.SessionPermissionStore = exports.mergePolicies = exports.emptyPolicy = exports.evaluatePermission = exports.InMemoryBackgroundTaskStore = exports.buildInsightsAiCallback = void 0;
3
+ exports.persistMcpActivation = exports.globalMcpServersPath = exports.registerMcpServersFromDisk = exports.loadMcpServersConfig = exports.RemoteSession = exports.HttpRunnerGateway = exports.RUNNER_PROTOCOL_VERSION = exports.ANTON_EXEC_CONTRACT = exports.createSandboxExecutor = exports.AntonSandboxExecutor = exports.LocalSandboxExecutor = exports.inlineHtmlImages = exports.buildFetchImageTool = exports.buildDeleteArtifactTool = exports.buildListArtifactsTool = exports.buildShareArtifactTool = exports.buildPublishArtifactTool = exports.DEFAULT_AUTH_BASE_URL = exports.artifactKeyFromUrl = exports.setArtifactScope = exports.listShareLinks = exports.revokeShareLink = exports.emailShareLink = exports.createShareLink = exports.clearArtifacts = exports.deleteArtifact = exports.listArtifacts = exports.guessContentType = exports.resolveGatewayToken = exports.publishArtifact = exports.clearLessons = exports.addLesson = exports.loadLessons = exports.lessonsPath = exports.buildReadMemoryTool = exports.BANDIT_MEMORY_INDEX_FILE = exports.BANDIT_MEMORY_DIR = exports.BANDIT_DIR = exports.MEMORY_INDEX_FILE = exports.MEMORY_DIR = exports.MAX_MEMORY_FILE_BYTES = exports.MAX_INDEX_BYTES = exports.migrateMemoryToBanditDir = exports.writeMemoryTopic = exports.renderMemoryIndexBlock = exports.loadMemoryIndex = exports.consolidateMemory = exports.appendMemory = exports.loadCombinedMemory = exports.loadMemory = void 0;
4
+ exports.renderInsightsHtml = exports.computeInsights = exports.parseTestOutput = exports.buildTestCommand = exports.detectTestFramework = exports.buildTestRunTool = exports.buildListTasksTool = exports.buildCheckTaskTool = exports.buildTaskTool = exports.buildRememberTool = exports.buildWebSearchTool = exports.buildWebFetchTool = exports.buildTodoWriteTool = exports.TodoStore = exports.expandMentions = exports.CYCLE_MODES = exports.PERMISSION_MODES = exports.AutoApprovalLedger = exports.nextCycleMode = exports.isPermissionMode = exports.decidePermission = exports.shouldAutoApprove = exports.resolvePermissionMode = exports.policyIncludes = exports.commandSignature = exports.grantRuleFor = exports.classifyRisk = exports.evaluateSecurityGuard = exports.runHooks = exports.persistAllowEntry = exports.loadHookSettings = exports.mcpToolCachePath = exports.pruneMcpToolCache = exports.saveMcpToolEntry = exports.loadMcpToolCache = exports.mcpTrustPath = exports.revokeMcpFingerprint = exports.approveMcpFingerprint = exports.loadApprovedMcpFingerprints = exports.buildCustomServerConfig = exports.looksLikeGmailCredentialsPath = exports.buildGmailServerConfig = exports.looksLikeGitLabToken = exports.buildGitLabServerConfig = exports.looksLikeSlackTeamId = exports.looksLikeSlackToken = exports.buildSlackServerConfig = exports.looksLikeGitHubToken = exports.buildGitHubServerConfig = exports.addMcpServerToConfig = void 0;
5
+ exports.CheckpointStore = exports.isChatCapable = exports.suggestOllamaMatch = exports.listInstalledOllamaModels = exports.formatTurnTraceMarkdown = exports.summarizeTurnTrace = exports.parseTurnLog = exports.readTurnTraceById = exports.readTurnTrace = exports.listTurnTraces = exports.listTurnTraceFiles = exports.previewText = exports.openTurnLog = exports.SessionPermissionStore = exports.mergePolicies = exports.emptyPolicy = exports.evaluatePermission = exports.InMemoryBackgroundTaskStore = exports.buildInsightsAiCallback = exports.buildAiInput = exports.writeInsightsReport = void 0;
6
6
  var memory_1 = require("./memory");
7
7
  Object.defineProperty(exports, "loadMemory", { enumerable: true, get: function () { return memory_1.loadMemory; } });
8
8
  Object.defineProperty(exports, "loadCombinedMemory", { enumerable: true, get: function () { return memory_1.loadCombinedMemory; } });
@@ -51,6 +51,10 @@ var listArtifactsTool_1 = require("./tools/listArtifactsTool");
51
51
  Object.defineProperty(exports, "buildListArtifactsTool", { enumerable: true, get: function () { return listArtifactsTool_1.buildListArtifactsTool; } });
52
52
  var deleteArtifactTool_1 = require("./tools/deleteArtifactTool");
53
53
  Object.defineProperty(exports, "buildDeleteArtifactTool", { enumerable: true, get: function () { return deleteArtifactTool_1.buildDeleteArtifactTool; } });
54
+ var fetchImageTool_1 = require("./tools/fetchImageTool");
55
+ Object.defineProperty(exports, "buildFetchImageTool", { enumerable: true, get: function () { return fetchImageTool_1.buildFetchImageTool; } });
56
+ var imageInline_1 = require("./imageInline");
57
+ Object.defineProperty(exports, "inlineHtmlImages", { enumerable: true, get: function () { return imageInline_1.inlineHtmlImages; } });
54
58
  // Sandbox execution seam — swappable boundary for running commands (local host
55
59
  // today; Firecracker microVM via anton once its exec endpoint lands).
56
60
  var sandbox_1 = require("./sandbox");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `fetch_image` — let the AGENT confirm an image URL is usable in an artifact
3
+ * BEFORE embedding it, instead of flailing through dozens of dead/hotlink-blocked
4
+ * URLs. It fetches the URL server-side (which bypasses the browser hotlink
5
+ * protection that blocks most direct image links) and reports whether it's a
6
+ * reachable image and its size. On publish, usable images are auto-inlined
7
+ * (see inlineHtmlImages), so the artifact ends up self-contained.
8
+ */
9
+ import type { AgentTool } from '@burtson-labs/agent-core';
10
+ export declare function buildFetchImageTool(opts?: {
11
+ fetchImpl?: typeof fetch;
12
+ timeoutMs?: number;
13
+ }): AgentTool;
14
+ //# sourceMappingURL=fetchImageTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchImageTool.d.ts","sourceRoot":"","sources":["../../src/tools/fetchImageTool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,0BAA0B,CAAC;AAQtE,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,CAmC1G"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFetchImageTool = buildFetchImageTool;
4
+ function humanSize(bytes) {
5
+ if (bytes < 1024)
6
+ return `${bytes} B`;
7
+ if (bytes < 1024 * 1024)
8
+ return `${(bytes / 1024).toFixed(1)} KB`;
9
+ return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
10
+ }
11
+ function buildFetchImageTool(opts = {}) {
12
+ return {
13
+ name: 'fetch_image',
14
+ description: 'Check whether an image URL is usable in an artifact. Fetches it server-side (this bypasses the browser ' +
15
+ 'hotlink protection that blocks most direct image links), and reports if it is a reachable image and its size. ' +
16
+ 'Use this to pick a working image before writing <img src="URL"> — do NOT keep web-searching for a "hotlinkable" ' +
17
+ 'URL. On publish, usable images are automatically inlined into the artifact, so any URL that passes here will ' +
18
+ 'render. After ~2 failed images, fall back to an SVG/initial-based avatar instead of searching more.',
19
+ parameters: [
20
+ { name: 'url', description: 'A direct image URL (jpg/png/webp/gif/svg) to verify.', required: true }
21
+ ],
22
+ async execute(params) {
23
+ const url = (params.url ?? '').trim();
24
+ if (!url)
25
+ return { output: 'Error: the `url` parameter is required.', isError: true };
26
+ if (!/^https?:\/\//i.test(url))
27
+ return { output: 'Error: url must be an http(s) URL.', isError: true };
28
+ const fetchImpl = opts.fetchImpl ?? fetch;
29
+ const ctl = new AbortController();
30
+ const timer = setTimeout(() => ctl.abort(), opts.timeoutMs ?? 15000);
31
+ try {
32
+ const res = await fetchImpl(url, { signal: ctl.signal, redirect: 'follow' });
33
+ if (!res.ok)
34
+ return { output: `Not usable: ${url} returned HTTP ${res.status}. Pick a different image.` };
35
+ const type = (res.headers.get('content-type') ?? '').split(';')[0].trim();
36
+ if (!/^image\//i.test(type))
37
+ return { output: `Not an image: ${url} is "${type || 'unknown'}". Pick a direct image URL.` };
38
+ const bytes = (await res.arrayBuffer()).byteLength;
39
+ if (bytes > 4 * 1024 * 1024)
40
+ return { output: `Reachable but large (${humanSize(bytes)}, ${type}) — it won't inline (cap 4 MB). Use a smaller/thumbnail image.` };
41
+ return { output: `Usable: ${type}, ${humanSize(bytes)}. Embed it with <img src="${url}"> — it will be inlined into the artifact on publish.` };
42
+ }
43
+ catch (err) {
44
+ const aborted = err?.name === 'AbortError';
45
+ return { output: aborted ? `Timed out fetching ${url}. Pick a different image.` : `Couldn't fetch ${url}: ${err instanceof Error ? err.message : String(err)}. Pick a different image.` };
46
+ }
47
+ finally {
48
+ clearTimeout(timer);
49
+ }
50
+ }
51
+ };
52
+ }
53
+ //# sourceMappingURL=fetchImageTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchImageTool.js","sourceRoot":"","sources":["../../src/tools/fetchImageTool.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,8 @@ export declare function buildPublishArtifactTool(opts: {
3
3
  token: string;
4
4
  s3ApiBaseUrl: string;
5
5
  authBaseUrl?: string;
6
+ /** Stealth dashboard base (e.g. https://stealth.banditailabs.com). When set, the tool returns a
7
+ * dashboard deep-link to VIEW the artifact instead of the raw owner-only S3 URL (which 401s in a browser). */
8
+ webBaseUrl?: string;
6
9
  }): AgentTool;
7
10
  //# sourceMappingURL=publishArtifactTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishArtifactTool.d.ts","sourceRoot":"","sources":["../../src/tools/publishArtifactTool.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAoC,MAAM,0BAA0B,CAAC;AAG5F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAgDvH"}
1
+ {"version":3,"file":"publishArtifactTool.d.ts","sourceRoot":"","sources":["../../src/tools/publishArtifactTool.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAoC,MAAM,0BAA0B,CAAC;AAI5F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;mHAC+G;IAC/G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,SAAS,CA0EZ"}
@@ -46,6 +46,7 @@ exports.buildPublishArtifactTool = buildPublishArtifactTool;
46
46
  const fs = __importStar(require("fs"));
47
47
  const path = __importStar(require("path"));
48
48
  const artifacts_1 = require("../artifacts");
49
+ const imageInline_1 = require("../imageInline");
49
50
  function buildPublishArtifactTool(opts) {
50
51
  return {
51
52
  name: 'publish_artifact',
@@ -78,16 +79,43 @@ function buildPublishArtifactTool(opts) {
78
79
  }
79
80
  try {
80
81
  const scope = (params.scope ?? '').trim().toLowerCase() === 'team' ? 'team' : undefined;
82
+ const contentType = (0, artifacts_1.guessContentType)(path.basename(abs));
83
+ // For an HTML artifact, inline every <img> (local paths, the user's pastes, remote URLs) as
84
+ // data URIs so it renders standalone — the whole point of "put an image in the artifact".
85
+ let content = new Uint8Array(bytes);
86
+ let inlineNote = '';
87
+ if (contentType === 'text/html') {
88
+ const r = await (0, imageInline_1.inlineHtmlImages)(bytes.toString('utf8'), { baseDir: path.dirname(abs) });
89
+ content = new Uint8Array(Buffer.from(r.html, 'utf8'));
90
+ if (r.inlined)
91
+ inlineNote = ` Inlined ${r.inlined} image(s).`;
92
+ if (r.skipped)
93
+ inlineNote += ` (${r.skipped} image(s) couldn't be inlined — unreachable, not an image, or too large.)`;
94
+ }
81
95
  const artifact = await (0, artifacts_1.publishArtifact)({
82
96
  s3ApiBaseUrl: opts.s3ApiBaseUrl,
83
97
  authBaseUrl: opts.authBaseUrl,
84
98
  token: opts.token,
85
99
  scope,
86
- content: new Uint8Array(bytes),
100
+ content,
87
101
  filename: path.basename(abs),
88
- contentType: (0, artifacts_1.guessContentType)(path.basename(abs))
102
+ contentType
89
103
  });
90
- return { output: `Published "${path.basename(abs)}"${scope === 'team' ? ' (shared with your team)' : ''} shareable link: ${artifact.url}` };
104
+ // The raw S3 URL is owner-only (401 in a browser), so hand the user a dashboard deep-link to
105
+ // VIEW it (the dashboard signs them in and renders it). Keep the raw URL in the output only so
106
+ // the model can chain to share_artifact when the user wants an external link.
107
+ const name = path.basename(abs);
108
+ const key = (0, artifacts_1.artifactKeyFromUrl)(artifact.url);
109
+ const dashUrl = opts.webBaseUrl
110
+ ? `${opts.webBaseUrl.replace(/\/$/, '')}/artifacts?a=${encodeURIComponent(key)}`
111
+ : null;
112
+ const viewLine = dashUrl
113
+ ? ` The user can open and manage it here (signs them in if needed): ${dashUrl}`
114
+ : '';
115
+ return {
116
+ output: `Published "${name}"${scope === 'team' ? ' to the team' : ' (private)'}.` + inlineNote + viewLine +
117
+ ` To create an external link anyone can open without signing in, call share_artifact with url "${artifact.url}".`
118
+ };
91
119
  }
92
120
  catch (err) {
93
121
  return { output: `Error publishing artifact: ${err instanceof Error ? err.message : String(err)}`, isError: true };
@@ -1 +1 @@
1
- {"version":3,"file":"publishArtifactTool.js","sourceRoot":"","sources":["../../src/tools/publishArtifactTool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,4DAgDC;AA9DD;;;;;;;;GAQG;AACH,uCAAyB;AACzB,2CAA6B;AAE7B,4CAAiE;AAEjE,SAAgB,wBAAwB,CAAC,IAAmE;IAC1G,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,4GAA4G;YAC5G,yJAAyJ;QAC3J,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,iFAAiF;gBAC9F,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,0HAA0H;gBACvI,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,KAAK,CAAC,OAAO,CAAC,MAA8B,EAAE,GAAyB;YACrE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,MAAM,EAAE,0CAA0C,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEvF,MAAM,IAAI,GAAI,GAAyD,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACvG,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9D,IAAI,KAAa,CAAC;YAClB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,MAAM,EAAE,sBAAsB,GAAG,2CAA2C,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzG,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxF,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC;oBACrC,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK;oBACL,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC;oBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAC5B,WAAW,EAAE,IAAA,4BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;iBAClD,CAAC,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,cAAc,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,sBAAsB,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;YAChJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACrH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"publishArtifactTool.js","sourceRoot":"","sources":["../../src/tools/publishArtifactTool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burtson-labs/host-kit",
3
- "version": "0.4.51",
3
+ "version": "0.4.54",
4
4
  "author": {
5
5
  "name": "Burtson Labs",
6
6
  "email": "team@burtson.ai",
@@ -22,7 +22,7 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@burtson-labs/agent-core": "1.6.68"
25
+ "@burtson-labs/agent-core": "1.6.71"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^20.11.0",