nodal-agents 0.6.7 → 0.6.8
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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/runner.js +118 -18
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +2 -2
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +3 -3
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +2 -2
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/page.js +2 -2
- package/web/.next/server/app/(dashboard)/agents/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/approvals/page.js +2 -2
- package/web/.next/server/app/(dashboard)/approvals/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/page.js +2 -2
- package/web/.next/server/app/(dashboard)/automations/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page.js +2 -2
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/connectors/page.js +2 -2
- package/web/.next/server/app/(dashboard)/connectors/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/credentials/page.js +1 -1
- package/web/.next/server/app/(dashboard)/credentials/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/page.js +2 -2
- package/web/.next/server/app/(dashboard)/jobs/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/learned-skills/page.js +2 -2
- package/web/.next/server/app/(dashboard)/learned-skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/llm-providers/page.js +2 -2
- package/web/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/logs/page.js +1 -1
- package/web/.next/server/app/(dashboard)/logs/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/mcp/page.js +2 -2
- package/web/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/memories/page.js +2 -2
- package/web/.next/server/app/(dashboard)/memories/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js +3 -3
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/web/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/root-context/page.js +2 -2
- package/web/.next/server/app/(dashboard)/settings/root-context/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/settings/root-context/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +2 -2
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/new/page.js +2 -2
- package/web/.next/server/app/(dashboard)/skills/new/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/skills/new/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/page.js +2 -2
- package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +2 -2
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/server/app/_not-found.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -1
- package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/onboarding/page.js +1288 -1288
- package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +2 -2
- package/web/.next/server/chunks/2053.js +1 -0
- package/web/.next/server/chunks/2713.js +3 -3
- package/web/.next/server/chunks/{7495.js → 5290.js} +1 -1
- package/web/.next/server/chunks/9282.js +1 -0
- package/web/.next/server/middleware-build-manifest.js +1 -1
- package/web/.next/server/pages/404.html +1 -1
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/static/chunks/{9836-14f7e30f77745e80.js → 9836-6a7e70d2572d9671.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-1172f97f44c6b953.js +6 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-a858be2a0b9d5d42.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/page-637555c8b299e4d7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/approvals/{page-64cdc8de03714da8.js → page-6435e07096efe1ef.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-416f63bbd11d1a93.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/chat/page-53507d81c2ceee4c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-f6a4d52ef7ea8c7f.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-acb7d1383384f27b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/page-b82e456c240416ad.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/layout-d0662737b23eaebb.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-3c67b5a3869a9224.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-294135b03955dd45.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/logs/{page-69a02d29acd3d812.js → page-f9efb4dd80bf104a.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/{page-3ddd2e2c8973fb2f.js → page-482dc02cf953c197.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/memories/page-ce432008a8a4c118.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/page-d76a7350bf5bea10.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/page-80cb948b3c0cef7d.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-8e7dabbb399e369d.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-d20237d23a440118.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/new/page-8454b37bed789c4e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/{page-c47e251b87d38cc7.js → page-af8d329facf31c8f.js} +1 -1
- package/web/.next/static/chunks/app/onboarding/page-3543225eab5f4029.js +26 -0
- package/web/.next/static/css/{9fc24595c3687cfb.css → b06a60c5d9b30bc8.css} +1 -1
- package/web/.next/server/chunks/4088.js +0 -1
- package/web/.next/server/chunks/4122.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-499eb81b66c74dc5.js +0 -6
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-e26c56155c37f38e.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/page-f4c535f30d385857.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-b654ebf59b7a0a76.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/chat/page-687c72476c5097c1.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-c417cceb9b25870c.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-4a258111bca49454.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/page-4ef0c0002fb31c13.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/layout-04e80131398f1551.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-31b01dbe3baa44cc.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-96df36ea1bf14242.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/memories/page-2e127cc802ee8e72.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/page-a25fd0011e21ba38.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/page-06062fc5a2d536f6.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-fd80a1645212a6d1.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-59bb2de0f81b5ed6.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/new/page-0970daf889c085c9.js +0 -1
- package/web/.next/static/chunks/app/onboarding/page-995403cba38e26cc.js +0 -26
- /package/web/.next/static/{vB-0ke6pDH6vYyme7Pz5G → RORb5LJdSgtd7i6KVr0zl}/_buildManifest.js +0 -0
- /package/web/.next/static/{vB-0ke6pDH6vYyme7Pz5G → RORb5LJdSgtd7i6KVr0zl}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ A self-hosted platform for building and orchestrating a **team of AI agents** on
|
|
|
10
10
|
[](https://nodejs.org)
|
|
11
11
|
[](https://www.typescriptlang.org)
|
|
12
12
|
[](https://kwintspiracy.github.io/nodal-agents/)
|
|
13
|
-
[](CHANGELOG.md)
|
|
14
14
|
|
|
15
15
|
| Home dashboard — light theme | Agent detail — dark theme |
|
|
16
16
|
| :---: | :---: |
|
package/package.json
CHANGED
package/runner.js
CHANGED
|
@@ -19575,13 +19575,6 @@ var WhitelistDriftError = class extends Error {
|
|
|
19575
19575
|
undeclaredTools;
|
|
19576
19576
|
code = "whitelist_drift";
|
|
19577
19577
|
};
|
|
19578
|
-
var WebSearchNotConfiguredError = class extends Error {
|
|
19579
|
-
code = "web_search_not_configured";
|
|
19580
|
-
constructor() {
|
|
19581
|
-
super("web_search_not_configured");
|
|
19582
|
-
this.name = "WebSearchNotConfiguredError";
|
|
19583
|
-
}
|
|
19584
|
-
};
|
|
19585
19578
|
|
|
19586
19579
|
// ../../packages/tools/src/registry.ts
|
|
19587
19580
|
function createToolRegistry() {
|
|
@@ -20584,17 +20577,80 @@ import { z as z25 } from "zod";
|
|
|
20584
20577
|
var WebSearchInputSchema = z25.object({
|
|
20585
20578
|
query: z25.string().min(1).describe("The search query.")
|
|
20586
20579
|
});
|
|
20580
|
+
var DEGRADED_GUIDANCE = "Free best-effort web search failed (it can be rate-limited or blocked). For reliable results, add a Tavily key (free tier) in the dashboard under Connectors, and I'll use it automatically.";
|
|
20581
|
+
var DDG_ENDPOINT = "https://html.duckduckgo.com/html/";
|
|
20582
|
+
function stripHtml(html) {
|
|
20583
|
+
return html.replace(/<[^>]*>/g, "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/'/g, "'").replace(/ /g, " ").replace(/\s+/g, " ").trim();
|
|
20584
|
+
}
|
|
20585
|
+
function resolveDdgHref(href) {
|
|
20586
|
+
const normalized = href.startsWith("//") ? `https:${href}` : href;
|
|
20587
|
+
const uddg = normalized.match(/[?&]uddg=([^&]+)/);
|
|
20588
|
+
if (uddg?.[1]) {
|
|
20589
|
+
try {
|
|
20590
|
+
return decodeURIComponent(uddg[1]);
|
|
20591
|
+
} catch {
|
|
20592
|
+
}
|
|
20593
|
+
}
|
|
20594
|
+
return normalized;
|
|
20595
|
+
}
|
|
20596
|
+
function parseDuckDuckGoHtml(html) {
|
|
20597
|
+
const results = [];
|
|
20598
|
+
const anchorRe = /<a[^>]*class="[^"]*result__a[^"]*"[^>]*href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/gi;
|
|
20599
|
+
const snippetRe = /<a[^>]*class="[^"]*result__snippet[^"]*"[^>]*>([\s\S]*?)<\/a>/gi;
|
|
20600
|
+
let match;
|
|
20601
|
+
while ((match = anchorRe.exec(html)) !== null) {
|
|
20602
|
+
const href = match[1];
|
|
20603
|
+
const rawTitle = match[2];
|
|
20604
|
+
if (!href || rawTitle === void 0) continue;
|
|
20605
|
+
const title = stripHtml(rawTitle);
|
|
20606
|
+
const url2 = resolveDdgHref(href);
|
|
20607
|
+
if (!title || !url2) continue;
|
|
20608
|
+
snippetRe.lastIndex = anchorRe.lastIndex;
|
|
20609
|
+
const snippetMatch = snippetRe.exec(html);
|
|
20610
|
+
const snippet = snippetMatch?.[1] ? stripHtml(snippetMatch[1]) : "";
|
|
20611
|
+
results.push({ title, url: url2, snippet });
|
|
20612
|
+
}
|
|
20613
|
+
return results;
|
|
20614
|
+
}
|
|
20615
|
+
async function duckDuckGoSearch(query) {
|
|
20616
|
+
let html;
|
|
20617
|
+
try {
|
|
20618
|
+
const res = await fetch(DDG_ENDPOINT, {
|
|
20619
|
+
// The html endpoint blocks GET (returns 202 with an empty challenge page)
|
|
20620
|
+
// but serves 200 + real results for a form POST. A browser-ish UA is also
|
|
20621
|
+
// required (bare requests are refused).
|
|
20622
|
+
method: "POST",
|
|
20623
|
+
headers: {
|
|
20624
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36",
|
|
20625
|
+
Accept: "text/html",
|
|
20626
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
20627
|
+
},
|
|
20628
|
+
body: "q=" + encodeURIComponent(query)
|
|
20629
|
+
});
|
|
20630
|
+
if (!res.ok) {
|
|
20631
|
+
return { results: [], degraded: true, guidance: DEGRADED_GUIDANCE };
|
|
20632
|
+
}
|
|
20633
|
+
html = await res.text();
|
|
20634
|
+
} catch {
|
|
20635
|
+
return { results: [], degraded: true, guidance: DEGRADED_GUIDANCE };
|
|
20636
|
+
}
|
|
20637
|
+
const results = parseDuckDuckGoHtml(html);
|
|
20638
|
+
if (results.length === 0) {
|
|
20639
|
+
return { results: [], degraded: true, guidance: DEGRADED_GUIDANCE };
|
|
20640
|
+
}
|
|
20641
|
+
return { results };
|
|
20642
|
+
}
|
|
20587
20643
|
var webSearchTool = {
|
|
20588
20644
|
name: "web_search",
|
|
20589
|
-
description: "Search the web
|
|
20645
|
+
description: "Search the web. Uses your configured Tavily/Firecrawl provider if any, otherwise a free best-effort search.",
|
|
20590
20646
|
inputSchema: WebSearchInputSchema,
|
|
20591
20647
|
riskLevel: "read",
|
|
20592
|
-
execute: async (
|
|
20593
|
-
|
|
20594
|
-
|
|
20595
|
-
|
|
20648
|
+
execute: async (input, ctx) => {
|
|
20649
|
+
if (ctx.searchBackend) {
|
|
20650
|
+
const { results } = await ctx.searchBackend(input.query);
|
|
20651
|
+
return { results };
|
|
20596
20652
|
}
|
|
20597
|
-
|
|
20653
|
+
return duckDuckGoSearch(input.query);
|
|
20598
20654
|
}
|
|
20599
20655
|
};
|
|
20600
20656
|
|
|
@@ -23519,6 +23575,7 @@ var ALWAYS_ON_TOOLS = [
|
|
|
23519
23575
|
"search_history",
|
|
23520
23576
|
"mark_memory_helpful",
|
|
23521
23577
|
"mark_memory_outdated",
|
|
23578
|
+
"web_search",
|
|
23522
23579
|
"dashboard_publish",
|
|
23523
23580
|
"file_read",
|
|
23524
23581
|
"file_write",
|
|
@@ -23536,6 +23593,7 @@ var ALWAYS_ON_TOOL_DOCS = [
|
|
|
23536
23593
|
{ name: searchHistoryTool.name, description: searchHistoryTool.description },
|
|
23537
23594
|
{ name: markMemoryHelpfulTool.name, description: markMemoryHelpfulTool.description },
|
|
23538
23595
|
{ name: markMemoryOutdatedTool.name, description: markMemoryOutdatedTool.description },
|
|
23596
|
+
{ name: webSearchTool.name, description: webSearchTool.description },
|
|
23539
23597
|
{ name: dashboardPublishTool.name, description: dashboardPublishTool.description },
|
|
23540
23598
|
{ name: fileReadTool.name, description: fileReadTool.description },
|
|
23541
23599
|
{ name: fileWriteTool.name, description: fileWriteTool.description },
|
|
@@ -27325,7 +27383,7 @@ function decodeBase64Url(encoded) {
|
|
|
27325
27383
|
return "";
|
|
27326
27384
|
}
|
|
27327
27385
|
}
|
|
27328
|
-
function
|
|
27386
|
+
function stripHtml2(html) {
|
|
27329
27387
|
return html.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "").replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<[^>]+>/g, " ").replace(/ /gi, " ").replace(/&/gi, "&").replace(/</gi, "<").replace(/>/gi, ">").replace(/"/gi, '"').replace(/'/gi, "'").replace(/[ \t]+/g, " ").replace(/\n\s*\n\s*\n/g, "\n\n").trim();
|
|
27330
27388
|
}
|
|
27331
27389
|
function decodePartBody(part) {
|
|
@@ -27340,7 +27398,7 @@ function extractTextFromPayload(payload) {
|
|
|
27340
27398
|
return decodePartBody(payload);
|
|
27341
27399
|
}
|
|
27342
27400
|
if (mime.startsWith("text/html")) {
|
|
27343
|
-
return
|
|
27401
|
+
return stripHtml2(decodePartBody(payload));
|
|
27344
27402
|
}
|
|
27345
27403
|
if (mime.startsWith("multipart/")) {
|
|
27346
27404
|
const parts = payload.parts ?? [];
|
|
@@ -42081,6 +42139,44 @@ var TOOL_PROVISIONING = {
|
|
|
42081
42139
|
},
|
|
42082
42140
|
encrypt
|
|
42083
42141
|
};
|
|
42142
|
+
async function resolveSearchBackend(db, agentId) {
|
|
42143
|
+
const rows = await db.select({
|
|
42144
|
+
slug: connectors.slug,
|
|
42145
|
+
apiKey: connectors.apiKey
|
|
42146
|
+
}).from(agentConnectorAssignments).innerJoin(connectors, eq5(connectors.id, agentConnectorAssignments.connectorId)).where(eq5(agentConnectorAssignments.agentId, agentId));
|
|
42147
|
+
for (const slug of ["tavily", "firecrawl"]) {
|
|
42148
|
+
const row = rows.find((r) => r.slug === slug);
|
|
42149
|
+
if (!row?.apiKey) continue;
|
|
42150
|
+
let key;
|
|
42151
|
+
try {
|
|
42152
|
+
key = decrypt(row.apiKey);
|
|
42153
|
+
} catch {
|
|
42154
|
+
continue;
|
|
42155
|
+
}
|
|
42156
|
+
const entry = ADAPTER_REGISTRY[slug];
|
|
42157
|
+
if (!entry) continue;
|
|
42158
|
+
const toolName = slug === "tavily" ? "tavily_search" : "firecrawl_search";
|
|
42159
|
+
const searchTool = entry.toolFactory(key).find((t) => t.name === toolName);
|
|
42160
|
+
if (!searchTool) continue;
|
|
42161
|
+
return async (query) => {
|
|
42162
|
+
const out = await searchTool.execute({ query }, {
|
|
42163
|
+
jobId: "",
|
|
42164
|
+
agentId,
|
|
42165
|
+
entityId: "",
|
|
42166
|
+
db,
|
|
42167
|
+
jobChatId: null
|
|
42168
|
+
});
|
|
42169
|
+
const results = (out.results ?? []).map((r) => ({
|
|
42170
|
+
title: r.title ?? "",
|
|
42171
|
+
url: r.url ?? "",
|
|
42172
|
+
// Tavily → `content`; Firecrawl → `description`.
|
|
42173
|
+
snippet: r.content ?? r.description ?? ""
|
|
42174
|
+
}));
|
|
42175
|
+
return { results };
|
|
42176
|
+
};
|
|
42177
|
+
}
|
|
42178
|
+
return void 0;
|
|
42179
|
+
}
|
|
42084
42180
|
var DELIVERY_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
42085
42181
|
"telegram_send_message",
|
|
42086
42182
|
"send_image",
|
|
@@ -42328,6 +42424,7 @@ async function runJob(jobId, deps, runnerEnv, opts) {
|
|
|
42328
42424
|
const scriptAuthorizedSkillSlugs = assignedSkillRows.filter((r) => r.scriptsAuthorized).map((r) => r.slug);
|
|
42329
42425
|
const fileWritableSkillSlugs = assignedSkillRows.filter((r) => r.filesWritable).map((r) => r.slug);
|
|
42330
42426
|
const skillStore = skillStoreDir(job.entityId);
|
|
42427
|
+
const searchBackend = await resolveSearchBackend(db, agentRow.id);
|
|
42331
42428
|
if (!agentRow.llmKeyId) {
|
|
42332
42429
|
await failJob(db, jobId, "agent_no_llm_configured", runStats(), messages);
|
|
42333
42430
|
return { status: "failed", error: "agent_no_llm_configured" };
|
|
@@ -42647,7 +42744,8 @@ async function runJob(jobId, deps, runnerEnv, opts) {
|
|
|
42647
42744
|
assignedSkillSlugs,
|
|
42648
42745
|
scriptAuthorizedSkillSlugs,
|
|
42649
42746
|
fileWritableSkillSlugs,
|
|
42650
|
-
provisioning: TOOL_PROVISIONING
|
|
42747
|
+
provisioning: TOOL_PROVISIONING,
|
|
42748
|
+
searchBackend
|
|
42651
42749
|
},
|
|
42652
42750
|
{
|
|
42653
42751
|
approvalRules: resumeApprovalRules,
|
|
@@ -43059,7 +43157,8 @@ async function runJob(jobId, deps, runnerEnv, opts) {
|
|
|
43059
43157
|
assignedSkillSlugs,
|
|
43060
43158
|
scriptAuthorizedSkillSlugs,
|
|
43061
43159
|
fileWritableSkillSlugs,
|
|
43062
|
-
provisioning: TOOL_PROVISIONING
|
|
43160
|
+
provisioning: TOOL_PROVISIONING,
|
|
43161
|
+
searchBackend
|
|
43063
43162
|
};
|
|
43064
43163
|
const sharedToolOpts = {
|
|
43065
43164
|
approvalRules: approvalRuleList,
|
|
@@ -43190,7 +43289,8 @@ async function runJob(jobId, deps, runnerEnv, opts) {
|
|
|
43190
43289
|
assignedSkillSlugs,
|
|
43191
43290
|
scriptAuthorizedSkillSlugs,
|
|
43192
43291
|
fileWritableSkillSlugs,
|
|
43193
|
-
provisioning: TOOL_PROVISIONING
|
|
43292
|
+
provisioning: TOOL_PROVISIONING,
|
|
43293
|
+
searchBackend
|
|
43194
43294
|
},
|
|
43195
43295
|
{
|
|
43196
43296
|
approvalRules: approvalRuleList,
|
package/web/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
RORb5LJdSgtd7i6KVr0zl
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"/(dashboard)/logs/page": "/logs",
|
|
25
25
|
"/(dashboard)/mcp/page": "/mcp",
|
|
26
26
|
"/(dashboard)/memories/page": "/memories",
|
|
27
|
-
"/(dashboard)/settings/root-context/page": "/settings/root-context",
|
|
28
|
-
"/(dashboard)/page": "/",
|
|
29
27
|
"/(dashboard)/settings/page": "/settings",
|
|
28
|
+
"/(dashboard)/page": "/",
|
|
29
|
+
"/(dashboard)/settings/root-context/page": "/settings/root-context",
|
|
30
30
|
"/(dashboard)/skills/[id]/edit/page": "/skills/[id]/edit",
|
|
31
31
|
"/(dashboard)/skills/page": "/skills"
|
|
32
32
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/RORb5LJdSgtd7i6KVr0zl/_buildManifest.js",
|
|
8
|
+
"static/RORb5LJdSgtd7i6KVr0zl/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
11
|
"static/chunks/webpack-3741bf0a7636d65e.js",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"dynamicRoutes": {},
|
|
55
55
|
"notFoundRoutes": [],
|
|
56
56
|
"preview": {
|
|
57
|
-
"previewModeId": "
|
|
58
|
-
"previewModeSigningKey": "
|
|
59
|
-
"previewModeEncryptionKey": "
|
|
57
|
+
"previewModeId": "0fe1567311ac81058123d2fb29f471aa",
|
|
58
|
+
"previewModeSigningKey": "d42bb4f2e429384a32bfb655168a3f79da18f56daff5a3f3f76ee18b63cb0a44",
|
|
59
|
+
"previewModeEncryptionKey": "ba9fd61dfd6daabaa848e4ac8b5f2a9e61c371b568524018b3fbe46345657779"
|
|
60
60
|
}
|
|
61
61
|
}
|