@memberjunction/core-actions 6.1.2 → 6.2.0-edge.0
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/dist/config.d.ts +68 -10
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -5
- package/dist/config.js.map +1 -1
- package/dist/custom/ai/generate-image.action.d.ts +13 -1
- package/dist/custom/ai/generate-image.action.d.ts.map +1 -1
- package/dist/custom/ai/generate-image.action.js +25 -13
- package/dist/custom/ai/generate-image.action.js.map +1 -1
- package/dist/custom/utilities/base-file-handler.d.ts.map +1 -1
- package/dist/custom/utilities/base-file-handler.js +4 -2
- package/dist/custom/utilities/base-file-handler.js.map +1 -1
- package/dist/custom/web/brave-search.action.d.ts +108 -0
- package/dist/custom/web/brave-search.action.d.ts.map +1 -0
- package/dist/custom/web/brave-search.action.js +285 -0
- package/dist/custom/web/brave-search.action.js.map +1 -0
- package/dist/custom/web/perplexity-search.action.d.ts +76 -44
- package/dist/custom/web/perplexity-search.action.d.ts.map +1 -1
- package/dist/custom/web/perplexity-search.action.js +228 -157
- package/dist/custom/web/perplexity-search.action.js.map +1 -1
- package/dist/custom/web/rss-feed-read.action.d.ts.map +1 -1
- package/dist/custom/web/rss-feed-read.action.js +4 -1
- package/dist/custom/web/rss-feed-read.action.js.map +1 -1
- package/dist/custom/web/web-search.action.d.ts +56 -40
- package/dist/custom/web/web-search.action.d.ts.map +1 -1
- package/dist/custom/web/web-search.action.js +141 -413
- package/dist/custom/web/web-search.action.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +40 -39
|
@@ -4,454 +4,182 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var WebSearchAction_1;
|
|
7
8
|
import { BaseAction } from "@memberjunction/actions";
|
|
8
9
|
import { RegisterClass } from "@memberjunction/global";
|
|
9
|
-
import {
|
|
10
|
+
import { WebSearchEngine, } from "@memberjunction/web-search-engine";
|
|
10
11
|
/**
|
|
11
|
-
* Action that performs web search
|
|
12
|
-
*
|
|
12
|
+
* Action that performs a web search through whichever provider the administrator has configured.
|
|
13
|
+
*
|
|
14
|
+
* This is the **provider-neutral entry point** agents should bind to. It holds no vendor logic of
|
|
15
|
+
* its own: it extracts parameters, hands them to {@link WebSearchEngine}, and maps the result
|
|
16
|
+
* back. Which vendor actually serves the request — Brave, Tavily, Perplexity, or a fallback when
|
|
17
|
+
* the first choice is rate-limited — is decided by the `MJ: Web Search Providers` records and
|
|
18
|
+
* their `Priority`, not by the caller and not by the agent.
|
|
19
|
+
*
|
|
20
|
+
* That is the point. An LLM choosing between named vendor actions is making an infrastructure
|
|
21
|
+
* decision it has no information for: it cannot know which key is configured, which is cheaper,
|
|
22
|
+
* or which is rate-limited right now. Swapping vendors here is a metadata edit, with no change to
|
|
23
|
+
* any agent.
|
|
24
|
+
*
|
|
25
|
+
* `Provider` is the escape hatch for a caller who genuinely knows better. When set, the engine
|
|
26
|
+
* **fails rather than substituting** — a silent substitution is how you discover months later
|
|
27
|
+
* that a deliberate choice stopped being honoured.
|
|
13
28
|
*
|
|
14
29
|
* @example
|
|
15
30
|
* ```typescript
|
|
16
|
-
* //
|
|
31
|
+
* // Let the administrator's priority order decide
|
|
32
|
+
* await runAction({
|
|
33
|
+
* ActionName: 'Web Search',
|
|
34
|
+
* Params: [{ Name: 'Query', Value: 'association management trends' }]
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Recent results from two domains, with a synthesized answer
|
|
17
38
|
* await runAction({
|
|
18
39
|
* ActionName: 'Web Search',
|
|
19
|
-
* Params: [
|
|
20
|
-
* Name: '
|
|
21
|
-
* Value: '
|
|
22
|
-
*
|
|
40
|
+
* Params: [
|
|
41
|
+
* { Name: 'Query', Value: 'IRS Form 990 filing changes' },
|
|
42
|
+
* { Name: 'Freshness', Value: 'month' },
|
|
43
|
+
* { Name: 'IncludeDomains', Value: ['irs.gov', 'councilofnonprofits.org'] },
|
|
44
|
+
* { Name: 'IncludeAnswer', Value: true }
|
|
45
|
+
* ]
|
|
23
46
|
* });
|
|
24
47
|
*
|
|
25
|
-
* //
|
|
48
|
+
* // Pin one vendor — fails if it is not available rather than using another
|
|
26
49
|
* await runAction({
|
|
27
50
|
* ActionName: 'Web Search',
|
|
28
|
-
* Params: [
|
|
29
|
-
* Name: '
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* Name: 'MaxResults',
|
|
33
|
-
* Value: 15
|
|
34
|
-
* }]
|
|
51
|
+
* Params: [
|
|
52
|
+
* { Name: 'Query', Value: 'quantum error correction 2026' },
|
|
53
|
+
* { Name: 'Provider', Value: 'Brave' }
|
|
54
|
+
* ]
|
|
35
55
|
* });
|
|
36
56
|
* ```
|
|
37
57
|
*/
|
|
38
58
|
let WebSearchAction = class WebSearchAction extends BaseAction {
|
|
59
|
+
static { WebSearchAction_1 = this; }
|
|
60
|
+
static { this.FRESHNESS_WINDOWS = ['day', 'week', 'month', 'year']; }
|
|
61
|
+
static { this.SAFE_SEARCH_VALUES = ['off', 'moderate', 'strict']; }
|
|
39
62
|
/**
|
|
40
|
-
* Executes the
|
|
63
|
+
* Executes the search.
|
|
41
64
|
*
|
|
42
65
|
* @param params - The action parameters containing:
|
|
43
|
-
* -
|
|
44
|
-
* - MaxResults:
|
|
45
|
-
* -
|
|
46
|
-
* -
|
|
47
|
-
* -
|
|
66
|
+
* - Query: Search query text (required)
|
|
67
|
+
* - MaxResults: Desired result count, clamped to the serving provider's cap (default 10)
|
|
68
|
+
* - Provider: Pin to one provider by Name or DriverClass. Fails if unavailable
|
|
69
|
+
* - IncludeDomains / ExcludeDomains: Array or comma-separated domain lists
|
|
70
|
+
* - Freshness: 'day' | 'week' | 'month' | 'year'
|
|
71
|
+
* - Country: Two-letter country code, e.g. 'US'
|
|
72
|
+
* - Language: Language code, e.g. 'en'
|
|
73
|
+
* - SafeSearch: 'off' | 'moderate' | 'strict' (default 'moderate')
|
|
74
|
+
* - IncludeAnswer: Also return a synthesized answer, restricting provider selection
|
|
48
75
|
*
|
|
49
|
-
* @returns
|
|
76
|
+
* @returns Normalised results plus which provider served them
|
|
50
77
|
*/
|
|
51
78
|
async InternalRunAction(params) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const regionParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'region');
|
|
56
|
-
const safeSearchParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'safesearch');
|
|
57
|
-
const disableQueueingParam = params.Params.find(p => p.Name.trim().toLowerCase() === 'disablequeueing');
|
|
58
|
-
if (!searchTermsParam || !searchTermsParam.Value) {
|
|
59
|
-
return {
|
|
60
|
-
Success: false,
|
|
61
|
-
Message: "SearchTerms parameter is required",
|
|
62
|
-
ResultCode: "MISSING_PARAMETERS"
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
const searchTerms = searchTermsParam.Value.toString().trim();
|
|
66
|
-
const maxResults = Math.min(parseInt(maxResultsParam?.Value?.toString() || '10'), 30);
|
|
67
|
-
const region = regionParam?.Value?.toString() || 'us-en';
|
|
68
|
-
const safeSearch = safeSearchParam?.Value?.toString() || 'moderate';
|
|
69
|
-
const disableQueueing = disableQueueingParam?.Value?.toString()?.toLowerCase() === 'true';
|
|
70
|
-
if (searchTerms.length === 0) {
|
|
71
|
-
return {
|
|
72
|
-
Success: false,
|
|
73
|
-
Message: "SearchTerms cannot be empty",
|
|
74
|
-
ResultCode: "INVALID_PARAMETERS"
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
// Get the rate limiter instance
|
|
78
|
-
const rateLimiter = getDuckDuckGoRateLimiter();
|
|
79
|
-
// Try DuckDuckGo Instant Answer API first (JSON response)
|
|
80
|
-
let response;
|
|
81
|
-
let html = '';
|
|
82
|
-
let useInstantAPI = true;
|
|
83
|
-
try {
|
|
84
|
-
// Try the Instant Answer API first (more reliable)
|
|
85
|
-
const instantUrl = `https://api.duckduckgo.com/?q=${encodeURIComponent(searchTerms)}&format=json&no_html=1&skip_disambig=1`;
|
|
86
|
-
const searchRequest = {
|
|
87
|
-
url: instantUrl,
|
|
88
|
-
options: {
|
|
89
|
-
headers: {
|
|
90
|
-
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
disableQueueing
|
|
94
|
-
};
|
|
95
|
-
const result = await rateLimiter.search(searchRequest);
|
|
96
|
-
response = result.response;
|
|
97
|
-
if (response.ok) {
|
|
98
|
-
const jsonData = result.text;
|
|
99
|
-
const instantResults = this.parseInstantResults(jsonData, maxResults);
|
|
100
|
-
if (instantResults.length > 0) {
|
|
101
|
-
const resultData = {
|
|
102
|
-
searchTerms,
|
|
103
|
-
totalResults: instantResults.length,
|
|
104
|
-
maxResults,
|
|
105
|
-
region,
|
|
106
|
-
safeSearch,
|
|
107
|
-
results: instantResults,
|
|
108
|
-
searchUrl: `https://duckduckgo.com/?q=${encodeURIComponent(searchTerms)}`,
|
|
109
|
-
method: 'instant-api'
|
|
110
|
-
};
|
|
111
|
-
return {
|
|
112
|
-
Success: true,
|
|
113
|
-
ResultCode: "SUCCESS",
|
|
114
|
-
Message: JSON.stringify(resultData, null, 2)
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
// Instant API failed, fall back to HTML scraping
|
|
121
|
-
useInstantAPI = false;
|
|
122
|
-
}
|
|
123
|
-
// Fallback to HTML search with more realistic headers
|
|
124
|
-
const searchUrl = `https://duckduckgo.com/html/?q=${encodeURIComponent(searchTerms)}&kl=${region}`;
|
|
125
|
-
const htmlSearchRequest = {
|
|
126
|
-
url: searchUrl,
|
|
127
|
-
options: {
|
|
128
|
-
method: 'GET',
|
|
129
|
-
headers: {
|
|
130
|
-
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
131
|
-
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
|
|
132
|
-
'Accept-Language': 'en-US,en;q=0.5',
|
|
133
|
-
'Accept-Encoding': 'gzip, deflate, br',
|
|
134
|
-
'DNT': '1',
|
|
135
|
-
'Connection': 'keep-alive',
|
|
136
|
-
'Upgrade-Insecure-Requests': '1'
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
disableQueueing
|
|
140
|
-
};
|
|
141
|
-
const htmlResult = await rateLimiter.search(htmlSearchRequest);
|
|
142
|
-
response = htmlResult.response;
|
|
143
|
-
html = htmlResult.text;
|
|
144
|
-
if (!response.ok) {
|
|
145
|
-
return {
|
|
146
|
-
Success: false,
|
|
147
|
-
Message: `DuckDuckGo search failed: ${response.status} ${response.statusText}`,
|
|
148
|
-
ResultCode: "SEARCH_FAILED"
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
// Check if we got an empty or invalid response
|
|
152
|
-
if (!html || html.length < 1000 || !html.includes('result')) {
|
|
153
|
-
return {
|
|
154
|
-
Success: false,
|
|
155
|
-
Message: "DuckDuckGo returned empty or invalid response. This may be due to rate limiting or anti-bot measures.",
|
|
156
|
-
ResultCode: "EMPTY_RESPONSE"
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
const results = this.parseSearchResults(html, maxResults);
|
|
160
|
-
if (results.length === 0) {
|
|
161
|
-
return {
|
|
162
|
-
Success: false,
|
|
163
|
-
Message: "No search results found in response",
|
|
164
|
-
ResultCode: "NO_RESULTS"
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
const resultData = {
|
|
168
|
-
searchTerms,
|
|
169
|
-
totalResults: results.length,
|
|
170
|
-
maxResults,
|
|
171
|
-
region,
|
|
172
|
-
safeSearch,
|
|
173
|
-
results,
|
|
174
|
-
searchUrl: `https://duckduckgo.com/?q=${encodeURIComponent(searchTerms)}`,
|
|
175
|
-
method: 'html-scraping'
|
|
176
|
-
};
|
|
177
|
-
// add output props as well to make it easier to use in flows
|
|
178
|
-
params.Params.push({
|
|
179
|
-
Name: 'SearchResultsDetails',
|
|
180
|
-
Value: resultData,
|
|
181
|
-
Type: "Output"
|
|
182
|
-
});
|
|
183
|
-
params.Params.push({
|
|
184
|
-
Name: 'SearchUrl',
|
|
185
|
-
Value: resultData.searchUrl,
|
|
186
|
-
Type: "Output"
|
|
187
|
-
});
|
|
188
|
-
params.Params.push({
|
|
189
|
-
Name: 'SearchResults',
|
|
190
|
-
Value: results,
|
|
191
|
-
Type: "Output"
|
|
192
|
-
});
|
|
193
|
-
params.Params.push({
|
|
194
|
-
Name: 'SearchResultsCount',
|
|
195
|
-
Value: results.length,
|
|
196
|
-
Type: "Output"
|
|
197
|
-
});
|
|
198
|
-
// and finally share the first result as well
|
|
199
|
-
if (results.length > 0) {
|
|
200
|
-
params.Params.push({
|
|
201
|
-
Name: 'FirstSearchResult',
|
|
202
|
-
Value: results[0],
|
|
203
|
-
Type: "Output"
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return {
|
|
207
|
-
Success: true,
|
|
208
|
-
ResultCode: "SUCCESS",
|
|
209
|
-
Message: JSON.stringify(resultData, null, 2)
|
|
210
|
-
};
|
|
79
|
+
const query = this.getStringParam(params, 'query') || this.getStringParam(params, 'searchterms');
|
|
80
|
+
if (!query) {
|
|
81
|
+
return this.createErrorResult("Query parameter is required", "MISSING_QUERY");
|
|
211
82
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if (errorMessage.includes('Rate limiting active and queueing is disabled') ||
|
|
216
|
-
errorMessage.includes('Rate limited and queueing is disabled')) {
|
|
217
|
-
return {
|
|
218
|
-
Success: false,
|
|
219
|
-
Message: "DuckDuckGo rate limit reached. Queueing is disabled for this request.",
|
|
220
|
-
ResultCode: "RATE_LIMITED"
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
return {
|
|
224
|
-
Success: false,
|
|
225
|
-
Message: `Failed to perform web search: ${errorMessage}`,
|
|
226
|
-
ResultCode: "FAILED"
|
|
227
|
-
};
|
|
83
|
+
const freshness = this.getStringParam(params, 'freshness')?.toLowerCase();
|
|
84
|
+
if (freshness && !WebSearchAction_1.FRESHNESS_WINDOWS.includes(freshness)) {
|
|
85
|
+
return this.createErrorResult(`Freshness must be one of ${WebSearchAction_1.FRESHNESS_WINDOWS.join(', ')} (got '${freshness}')`, "INVALID_FRESHNESS");
|
|
228
86
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
*/
|
|
233
|
-
parseInstantResults(jsonData, maxResults) {
|
|
234
|
-
const results = [];
|
|
235
|
-
try {
|
|
236
|
-
const data = JSON.parse(jsonData);
|
|
237
|
-
// Handle abstract (summary) if available
|
|
238
|
-
if (data.Abstract && data.AbstractText) {
|
|
239
|
-
results.push({
|
|
240
|
-
title: data.Heading || 'Summary',
|
|
241
|
-
url: data.AbstractURL || '',
|
|
242
|
-
displayUrl: data.AbstractSource || '',
|
|
243
|
-
snippet: data.AbstractText,
|
|
244
|
-
rank: 1,
|
|
245
|
-
type: 'abstract'
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
// Handle related topics
|
|
249
|
-
if (data.RelatedTopics && Array.isArray(data.RelatedTopics)) {
|
|
250
|
-
let rank = results.length + 1;
|
|
251
|
-
for (const topic of data.RelatedTopics.slice(0, maxResults - results.length)) {
|
|
252
|
-
if (topic.FirstURL && topic.Text) {
|
|
253
|
-
results.push({
|
|
254
|
-
title: topic.Text.split(' - ')[0] || 'Related Topic',
|
|
255
|
-
url: topic.FirstURL,
|
|
256
|
-
displayUrl: this.extractDomain(topic.FirstURL),
|
|
257
|
-
snippet: topic.Text,
|
|
258
|
-
rank: rank++,
|
|
259
|
-
type: 'related'
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
// Handle definition if available
|
|
265
|
-
if (data.Definition && data.DefinitionURL) {
|
|
266
|
-
results.push({
|
|
267
|
-
title: `Definition: ${data.Heading || 'Term'}`,
|
|
268
|
-
url: data.DefinitionURL,
|
|
269
|
-
displayUrl: data.DefinitionSource || '',
|
|
270
|
-
snippet: data.Definition,
|
|
271
|
-
rank: results.length + 1,
|
|
272
|
-
type: 'definition'
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
// Handle answer if available
|
|
276
|
-
if (data.Answer) {
|
|
277
|
-
results.push({
|
|
278
|
-
title: 'Direct Answer',
|
|
279
|
-
url: '',
|
|
280
|
-
displayUrl: 'DuckDuckGo',
|
|
281
|
-
snippet: data.Answer,
|
|
282
|
-
rank: results.length + 1,
|
|
283
|
-
type: 'answer'
|
|
284
|
-
});
|
|
285
|
-
}
|
|
87
|
+
const safeSearch = this.getStringParam(params, 'safesearch')?.toLowerCase();
|
|
88
|
+
if (safeSearch && !WebSearchAction_1.SAFE_SEARCH_VALUES.includes(safeSearch)) {
|
|
89
|
+
return this.createErrorResult(`SafeSearch must be one of ${WebSearchAction_1.SAFE_SEARCH_VALUES.join(', ')} (got '${safeSearch}')`, "INVALID_SAFESEARCH");
|
|
286
90
|
}
|
|
287
|
-
|
|
288
|
-
|
|
91
|
+
const searchParams = {
|
|
92
|
+
Query: query,
|
|
93
|
+
MaxResults: this.getOptionalNumericParam(params, 'maxresults'),
|
|
94
|
+
Provider: this.getStringParam(params, 'provider'),
|
|
95
|
+
IncludeDomains: this.getStringArrayParam(params, 'includedomains'),
|
|
96
|
+
ExcludeDomains: this.getStringArrayParam(params, 'excludedomains'),
|
|
97
|
+
Freshness: freshness,
|
|
98
|
+
Country: this.getStringParam(params, 'country'),
|
|
99
|
+
Language: this.getStringParam(params, 'language'),
|
|
100
|
+
SafeSearch: safeSearch,
|
|
101
|
+
IncludeAnswer: this.getBooleanParam(params, 'includeanswer', false),
|
|
102
|
+
};
|
|
103
|
+
const engine = WebSearchEngine.Instance;
|
|
104
|
+
await engine.Config(false, params.ContextUser);
|
|
105
|
+
const result = await engine.Search(searchParams, params.ContextUser);
|
|
106
|
+
// Attempts are emitted on both paths. When a fallback served the request, that is the
|
|
107
|
+
// only thing that says so — and it is worth knowing before the invoice does.
|
|
108
|
+
this.addOutputParam(params, 'Attempts', result.Attempts);
|
|
109
|
+
if (!result.Success) {
|
|
110
|
+
return this.createErrorResult(result.ErrorMessage ?? 'Web search failed.', result.ResultCode);
|
|
289
111
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
extractDomain(url) {
|
|
296
|
-
try {
|
|
297
|
-
return new URL(url).hostname;
|
|
298
|
-
}
|
|
299
|
-
catch {
|
|
300
|
-
return url;
|
|
112
|
+
this.addOutputParam(params, 'Results', result.Hits);
|
|
113
|
+
this.addOutputParam(params, 'ResultCount', result.Hits.length);
|
|
114
|
+
this.addOutputParam(params, 'ProviderUsed', result.ProviderUsed);
|
|
115
|
+
if (result.Answer) {
|
|
116
|
+
this.addOutputParam(params, 'Answer', result.Answer);
|
|
301
117
|
}
|
|
118
|
+
this.addOutputParam(params, 'SearchResultDetails', {
|
|
119
|
+
query,
|
|
120
|
+
providerUsed: result.ProviderUsed,
|
|
121
|
+
resultCount: result.Hits.length,
|
|
122
|
+
results: result.Hits,
|
|
123
|
+
answer: result.Answer,
|
|
124
|
+
attempts: result.Attempts,
|
|
125
|
+
});
|
|
126
|
+
// Zero results is a real answer to a narrow query, not a failure — a caller that treats
|
|
127
|
+
// it as one would retry a query that will keep returning nothing.
|
|
128
|
+
return {
|
|
129
|
+
Success: true,
|
|
130
|
+
ResultCode: "SUCCESS",
|
|
131
|
+
Message: result.Hits.length === 0
|
|
132
|
+
? `${result.ProviderUsed} returned no results for '${query}'.`
|
|
133
|
+
: `${result.ProviderUsed} returned ${result.Hits.length} result(s) for '${query}'.`
|
|
134
|
+
};
|
|
302
135
|
}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
// Improved regex patterns for DuckDuckGo HTML structure
|
|
310
|
-
// DuckDuckGo uses different class names, try multiple patterns
|
|
311
|
-
const resultPatterns = [
|
|
312
|
-
// Standard result pattern
|
|
313
|
-
/<div class="[^"]*result[^"]*"[^>]*>(.*?)<\/div>/gs,
|
|
314
|
-
// Alternative result pattern
|
|
315
|
-
/<div[^>]+data-testid="result"[^>]*>(.*?)<\/div>/gs,
|
|
316
|
-
// Links result pattern
|
|
317
|
-
/<div class="[^"]*links_main[^"]*"[^>]*>(.*?)<\/div>/gs
|
|
318
|
-
];
|
|
319
|
-
const linkPatterns = [
|
|
320
|
-
/<a[^>]+href="([^"]+)"[^>]*class="[^"]*result__a[^"]*"[^>]*>(.*?)<\/a>/s,
|
|
321
|
-
/<a[^>]+href="([^"]+)"[^>]*>(.*?)<\/a>/s
|
|
322
|
-
];
|
|
323
|
-
const snippetPatterns = [
|
|
324
|
-
/<a[^>]+class="[^"]*result__snippet[^"]*"[^>]*>(.*?)<\/a>/s,
|
|
325
|
-
/<span class="[^"]*result__snippet[^"]*"[^>]*>(.*?)<\/span>/s,
|
|
326
|
-
/<div class="[^"]*snippet[^"]*"[^>]*>(.*?)<\/div>/s
|
|
327
|
-
];
|
|
328
|
-
const urlDisplayPatterns = [
|
|
329
|
-
/<span class="[^"]*result__url[^"]*"[^>]*>(.*?)<\/span>/s,
|
|
330
|
-
/<cite[^>]*>(.*?)<\/cite>/s
|
|
331
|
-
];
|
|
332
|
-
let count = 0;
|
|
333
|
-
// Try each result pattern until we find matches
|
|
334
|
-
for (const resultPattern of resultPatterns) {
|
|
335
|
-
if (count >= maxResults)
|
|
336
|
-
break;
|
|
337
|
-
// ── Slice between result STARTS, rather than trusting `(.*?)</div>` ──────────────
|
|
338
|
-
// Each pattern's capture group is non-greedy up to the first `</div>`, and a
|
|
339
|
-
// DuckDuckGo result block contains nested divs. The link sits near the top of the
|
|
340
|
-
// block and survived; the SNIPPET sits after an inner div and was therefore cut out
|
|
341
|
-
// of the captured text on every single result. The symptom was ten hits with real
|
|
342
|
-
// titles and URLs and `snippet: ''` throughout — search results that look fine and
|
|
343
|
-
// carry no information, which a caller cannot distinguish from a topic with nothing
|
|
344
|
-
// written about it. A Content Pipeline draft correctly reported "the research data
|
|
345
|
-
// was empty" and got overruled by a reviewer counting sources.
|
|
346
|
-
//
|
|
347
|
-
// Slicing from one block's start to the next captures the whole block, nesting and
|
|
348
|
-
// all, without trying to balance tags with a regular expression.
|
|
349
|
-
const starts = [];
|
|
350
|
-
const startRegex = new RegExp(resultPattern.source, resultPattern.flags);
|
|
351
|
-
let startMatch;
|
|
352
|
-
while ((startMatch = startRegex.exec(html)) !== null) {
|
|
353
|
-
starts.push(startMatch.index);
|
|
354
|
-
if (startMatch.index === startRegex.lastIndex)
|
|
355
|
-
startRegex.lastIndex++; // zero-width guard
|
|
356
|
-
}
|
|
357
|
-
for (let i = 0; i < starts.length && count < maxResults; i++) {
|
|
358
|
-
const resultHtml = html.slice(starts[i], starts[i + 1] ?? html.length);
|
|
359
|
-
// Try each link pattern
|
|
360
|
-
let linkMatch = null;
|
|
361
|
-
for (const linkPattern of linkPatterns) {
|
|
362
|
-
linkMatch = linkPattern.exec(resultHtml);
|
|
363
|
-
if (linkMatch)
|
|
364
|
-
break;
|
|
365
|
-
}
|
|
366
|
-
if (linkMatch) {
|
|
367
|
-
const url = this.decodeUrl(linkMatch[1]);
|
|
368
|
-
const title = this.stripHtml(linkMatch[2]);
|
|
369
|
-
// Try each snippet pattern
|
|
370
|
-
let snippetMatch = null;
|
|
371
|
-
for (const snippetPattern of snippetPatterns) {
|
|
372
|
-
snippetMatch = snippetPattern.exec(resultHtml);
|
|
373
|
-
if (snippetMatch)
|
|
374
|
-
break;
|
|
375
|
-
}
|
|
376
|
-
const snippet = snippetMatch ? this.stripHtml(snippetMatch[1]) : '';
|
|
377
|
-
// Try each URL display pattern
|
|
378
|
-
let urlDisplayMatch = null;
|
|
379
|
-
for (const urlDisplayPattern of urlDisplayPatterns) {
|
|
380
|
-
urlDisplayMatch = urlDisplayPattern.exec(resultHtml);
|
|
381
|
-
if (urlDisplayMatch)
|
|
382
|
-
break;
|
|
383
|
-
}
|
|
384
|
-
const displayUrl = urlDisplayMatch ? this.stripHtml(urlDisplayMatch[1]) : this.extractDomain(url);
|
|
385
|
-
if (url && title && (url.startsWith('http') || url.startsWith('//'))) {
|
|
386
|
-
// Clean up URL
|
|
387
|
-
const cleanUrl = url.startsWith('//') ? 'https:' + url : url;
|
|
388
|
-
results.push({
|
|
389
|
-
title: title.trim(),
|
|
390
|
-
url: cleanUrl.trim(),
|
|
391
|
-
displayUrl: displayUrl.trim(),
|
|
392
|
-
snippet: snippet.trim(),
|
|
393
|
-
rank: count + 1,
|
|
394
|
-
type: 'web'
|
|
395
|
-
});
|
|
396
|
-
count++;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
// If we found results with this pattern, don't try others
|
|
401
|
-
if (results.length > 0)
|
|
402
|
-
break;
|
|
403
|
-
}
|
|
404
|
-
// Results with no text are not results. If the markup shifts again and every snippet
|
|
405
|
-
// comes back empty, that must be LOUD: the failure is otherwise invisible — the caller
|
|
406
|
-
// receives the expected number of well-formed objects and no indication that the only
|
|
407
|
-
// field carrying meaning is blank. Reported rather than thrown, because titles and URLs
|
|
408
|
-
// are still genuinely useful and discarding them would be a worse answer than a noisy one.
|
|
409
|
-
if (results.length > 0 && results.every((r) => !r.snippet)) {
|
|
410
|
-
console.warn(`[Web Search] Parsed ${results.length} result(s) and EVERY snippet is empty. The ` +
|
|
411
|
-
`result markup has almost certainly changed — callers are getting titles and URLs ` +
|
|
412
|
-
`with no content, which reads as "nothing was written about this topic".`);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
catch (error) {
|
|
416
|
-
console.error('Error parsing search results:', error);
|
|
417
|
-
}
|
|
418
|
-
return results;
|
|
136
|
+
getStringParam(params, paramName) {
|
|
137
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
138
|
+
if (param?.Value === undefined || param?.Value === null)
|
|
139
|
+
return undefined;
|
|
140
|
+
const value = String(param.Value).trim();
|
|
141
|
+
return value.length > 0 ? value : undefined;
|
|
419
142
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
return
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
return encodedUrl;
|
|
435
|
-
}
|
|
143
|
+
getBooleanParam(params, paramName, defaultValue) {
|
|
144
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
145
|
+
if (param?.Value === undefined || param?.Value === null)
|
|
146
|
+
return defaultValue;
|
|
147
|
+
if (typeof param.Value === 'boolean')
|
|
148
|
+
return param.Value;
|
|
149
|
+
return String(param.Value).trim().toLowerCase() === 'true';
|
|
150
|
+
}
|
|
151
|
+
getOptionalNumericParam(params, paramName) {
|
|
152
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
153
|
+
if (param?.Value === undefined || param?.Value === null || param.Value === '')
|
|
154
|
+
return undefined;
|
|
155
|
+
const num = Number(param.Value);
|
|
156
|
+
return isNaN(num) ? undefined : num;
|
|
436
157
|
}
|
|
437
158
|
/**
|
|
438
|
-
*
|
|
159
|
+
* A list param, accepted as a real array or as a comma-separated string — both forms arrive
|
|
160
|
+
* in practice, from agent input mappings and from humans respectively.
|
|
439
161
|
*/
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
162
|
+
getStringArrayParam(params, paramName) {
|
|
163
|
+
const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
|
|
164
|
+
const value = param?.Value;
|
|
165
|
+
if (value === undefined || value === null)
|
|
166
|
+
return undefined;
|
|
167
|
+
const raw = Array.isArray(value) ? value.map(v => String(v)) : String(value).split(',');
|
|
168
|
+
const cleaned = raw.map(v => v.trim()).filter(v => v.length > 0);
|
|
169
|
+
return cleaned.length > 0 ? cleaned : undefined;
|
|
170
|
+
}
|
|
171
|
+
addOutputParam(params, name, value) {
|
|
172
|
+
params.Params.push({ Name: name, Type: 'Output', Value: value });
|
|
173
|
+
}
|
|
174
|
+
createErrorResult(message, code) {
|
|
175
|
+
return { Success: false, Message: message, ResultCode: code };
|
|
451
176
|
}
|
|
452
177
|
};
|
|
453
|
-
WebSearchAction = __decorate([
|
|
178
|
+
WebSearchAction = WebSearchAction_1 = __decorate([
|
|
454
179
|
RegisterClass(BaseAction, "__WebSearch")
|
|
455
180
|
], WebSearchAction);
|
|
456
181
|
export { WebSearchAction };
|
|
182
|
+
export function LoadWebSearchAction() {
|
|
183
|
+
// Referenced by consumers to keep this registration from being tree-shaken.
|
|
184
|
+
}
|
|
457
185
|
//# sourceMappingURL=web-search.action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.action.js","sourceRoot":"","sources":["../../../src/custom/web/web-search.action.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-search.action.js","sourceRoot":"","sources":["../../../src/custom/web/web-search.action.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ export * from './custom/web/url-metadata-extractor.action.js';
|
|
|
32
32
|
export * from './custom/web/perplexity-search.action.js';
|
|
33
33
|
export * from './custom/web/google-custom-search.action.js';
|
|
34
34
|
export * from './custom/web/tavily-search.action.js';
|
|
35
|
+
export * from './custom/web/brave-search.action.js';
|
|
35
36
|
export * from './custom/web/rss-feed-read.action.js';
|
|
36
37
|
export * from './custom/web/rss-feed-parsing.js';
|
|
37
38
|
export * from './custom/data/csv-parser.action.js';
|