smart-web-mcp 1.2.4 → 1.3.1
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/CHANGELOG.md +16 -0
- package/dist/cli-fetch-options.d.ts +1 -0
- package/dist/cli-fetch-options.js +8 -0
- package/dist/cli-fetch-options.js.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/smartfetch/provider-policy.js +42 -73
- package/dist/smartfetch/provider-policy.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
|
+
* Consume validated public provider responses in one bounded GET rather than discarding a first successful body and requesting it again. Redirects still receive per-hop URL/origin checks, cross-origin headers are stripped, and JSON parser errors remain failures; a provider's actual 429 remains unavailable, not a recovered page.
|
|
9
|
+
* Expose existing bounded private pre-projection comment export through explicit CLI `fetch --export-comments`; reject caller-selected paths and preserve partial inline delivery. A complete source export does not make unavailable comments readable.
|
|
8
10
|
* Preserve declared-versus-collected Reddit comment coverage for public JSON and archived threads. A readable post with fewer returned comments than its source declares remains partial, even without inline clipping; this does not recover inaccessible comments.
|
|
9
11
|
* Deliver validated Hacker News API reply trees as flat, parent-linked comment rows before inline projection or private export. Counts now refer to addressable replies, not just roots; bounded inline output still marks omitted rows partial.
|
|
10
12
|
* Mark clipped discussion comments partial even when their provider lacks explicit coverage; reconcile a Hacker News API tree with a larger independently observed exact-story native comment count rather than claiming all replies were delivered. Bounded output still omits some replies and does not recover them automatically.
|
|
@@ -405,6 +407,20 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
|
405
407
|
- Korean public API helpers now validate outbound URLs and redirects before fetching, blocking localhost, private, and reserved targets unless `network.allowPrivateHosts` is explicitly enabled.
|
|
406
408
|
- CI now declares read-only default repository permissions, Dependabot auto-merge pins the reusable workflow without forwarding all caller secrets, and the workflow check enforces those guards.
|
|
407
409
|
|
|
410
|
+
## [1.3.1](https://github.com/jojo-labs/smart-web/compare/v1.3.0...v1.3.1) (2026-10-03)
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
### Bug Fixes
|
|
414
|
+
|
|
415
|
+
* consume validated provider responses once ([#699](https://github.com/jojo-labs/smart-web/issues/699)) ([8ca64d2](https://github.com/jojo-labs/smart-web/commit/8ca64d2f001b4fa2eb0eb5aa76b235332d57b808))
|
|
416
|
+
|
|
417
|
+
## [1.3.0](https://github.com/jojo-labs/smart-web/compare/v1.2.4...v1.3.0) (2026-10-03)
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
### Features
|
|
421
|
+
|
|
422
|
+
* expose bounded comment export in CLI ([#697](https://github.com/jojo-labs/smart-web/issues/697)) ([e9659d3](https://github.com/jojo-labs/smart-web/commit/e9659d37e63838073cc65bb890b0863c77722093))
|
|
423
|
+
|
|
408
424
|
## [1.2.4](https://github.com/jojo-labs/smart-web/compare/v1.2.3...v1.2.4) (2026-10-03)
|
|
409
425
|
|
|
410
426
|
|
|
@@ -3,5 +3,6 @@ import type { SmartfetchBudgetPreset } from "./extraction/budget.js";
|
|
|
3
3
|
export declare function outputBudgetFlag(flags: Record<string, string>): SmartfetchBudgetPreset | undefined;
|
|
4
4
|
export declare function fetchFormatFlag(flags: Record<string, string>): SmartfetchRenderFormat | "json";
|
|
5
5
|
export declare function bodyExportFlag(flags: Record<string, string>): boolean;
|
|
6
|
+
export declare function commentExportFlag(flags: Record<string, string>): boolean;
|
|
6
7
|
export declare function capSearchText(text: string, maxCharacters: number): string;
|
|
7
8
|
export declare function searchMaxCharsFlag(flags: Record<string, string>): number;
|
|
@@ -25,6 +25,14 @@ export function bodyExportFlag(flags) {
|
|
|
25
25
|
throw new Error("--export-body takes no value or path");
|
|
26
26
|
return true;
|
|
27
27
|
}
|
|
28
|
+
export function commentExportFlag(flags) {
|
|
29
|
+
const value = flags["export-comments"];
|
|
30
|
+
if (value === undefined)
|
|
31
|
+
return false;
|
|
32
|
+
if (value !== "true")
|
|
33
|
+
throw new Error("--export-comments takes no value or path");
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
28
36
|
export function capSearchText(text, maxCharacters) {
|
|
29
37
|
if (text.length <= maxCharacters)
|
|
30
38
|
return text;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-fetch-options.js","sourceRoot":"","sources":["../src/cli-fetch-options.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAC,KAA6B;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,CAAU,EAAE,CAAC;QACpF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,oCAAoC,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,CAAC,MAAM,IAAI,KAAK,CAAuC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAA6B;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAA;IACxC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5H,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA6B;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,KAAK,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IAC7E,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,aAAqB;IAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,aAAa;QAAE,OAAO,IAAI,CAAA;IAC7C,MAAM,MAAM,GAAG,gDAAgD,aAAa,kDAAkD,CAAA;IAC9H,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAA;AAC1F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAA6B;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAA;IAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli-fetch-options.js","sourceRoot":"","sources":["../src/cli-fetch-options.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAC,KAA6B;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,CAAU,EAAE,CAAC;QACpF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,oCAAoC,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,CAAC,MAAM,IAAI,KAAK,CAAuC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAA6B;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAA;IACxC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5H,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA6B;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,KAAK,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IAC7E,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,KAAK,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,aAAqB;IAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,aAAa;QAAE,OAAO,IAAI,CAAA;IAC7C,MAAM,MAAM,GAAG,gDAAgD,aAAa,kDAAkD,CAAA;IAC9H,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAA;AAC1F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAA6B;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAA;IAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -4,7 +4,7 @@ import { projectSmartcrawlOutput, renderSmartcrawl, runSmartcrawl } from "./smar
|
|
|
4
4
|
import { renderSmartfetch, resolveSmartfetchOutputBudget, runSmartfetch } from "./smartfetch.js";
|
|
5
5
|
import { isSmartsearchExecutionFailure, projectSmartsearchOutput, renderSmartsearch, runSmartsearch } from "./smartsearch.js";
|
|
6
6
|
import { runBrowserSession } from "./browser-session.js";
|
|
7
|
-
import { bodyExportFlag, capSearchText, fetchFormatFlag, outputBudgetFlag, searchMaxCharsFlag } from "./cli-fetch-options.js";
|
|
7
|
+
import { bodyExportFlag, commentExportFlag, capSearchText, fetchFormatFlag, outputBudgetFlag, searchMaxCharsFlag } from "./cli-fetch-options.js";
|
|
8
8
|
import { sanitizeSmartWebTempEnv } from "./runtime-temp.js";
|
|
9
9
|
import { configureSettingsPath } from "./settings.js";
|
|
10
10
|
const packageVersion = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version;
|
|
@@ -74,6 +74,7 @@ Fetch options:
|
|
|
74
74
|
--timeout <ms> Timeout in milliseconds (default: 25000)
|
|
75
75
|
--download Prefer downloadable asset
|
|
76
76
|
--export-body Export normalized pre-clipping article text privately (up to 1 MiB)
|
|
77
|
+
--export-comments Export normalized pre-clipping comments privately (up to 5000 rows/8 MiB)
|
|
77
78
|
--force-dynamic Skip light fetches, use Playwright
|
|
78
79
|
--budget <preset> compact | balanced | full structured/text projection (default: compact)
|
|
79
80
|
|
|
@@ -126,6 +127,7 @@ async function cmdFetch(url, flags) {
|
|
|
126
127
|
timeoutMs: intFlag(flags, "timeout", 25000),
|
|
127
128
|
download: strFlag(flags, "download") !== undefined,
|
|
128
129
|
exportBody: bodyExportFlag(flags),
|
|
130
|
+
exportComments: commentExportFlag(flags),
|
|
129
131
|
forceDynamic: strFlag(flags, "force-dynamic") !== undefined,
|
|
130
132
|
includeMarkdown: format === "markdown",
|
|
131
133
|
};
|
|
@@ -195,7 +197,7 @@ async function main() {
|
|
|
195
197
|
const commonOptions = ["settings-file", "json", "budget", "output-budget", "preferred-budget-chars", "headroom-tokens"];
|
|
196
198
|
const commandOptions = {
|
|
197
199
|
search: ["num", "type", "max-chars"],
|
|
198
|
-
fetch: ["target", "format", "timeout", "download", "export-body", "force-dynamic"],
|
|
200
|
+
fetch: ["target", "format", "timeout", "download", "export-body", "export-comments", "force-dynamic"],
|
|
199
201
|
crawl: ["query", "mode", "limit", "max-pages", "max-depth", "timeout"],
|
|
200
202
|
};
|
|
201
203
|
if (command in commandOptions) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1F,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChG,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC7H,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { configEnabled,
|
|
1
|
+
import { configEnabled, validateOutboundUrl } from "../shared.js";
|
|
2
2
|
function localOnlyMode() {
|
|
3
3
|
return configEnabled("network.localOnly", false, { private: true });
|
|
4
4
|
}
|
|
@@ -60,40 +60,42 @@ async function enforcePolicy(url, options) {
|
|
|
60
60
|
return { ok: true };
|
|
61
61
|
}
|
|
62
62
|
export async function fetchProviderText(url, timeoutMs, init, options) {
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
ok
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
const controller = new AbortController();
|
|
64
|
+
const signal = init?.signal ? AbortSignal.any([init.signal, controller.signal]) : controller.signal;
|
|
65
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
66
|
+
let current = url;
|
|
67
|
+
try {
|
|
68
|
+
for (let hop = 0; hop <= 5; hop++) {
|
|
69
|
+
signal.throwIfAborted();
|
|
70
|
+
const allowed = await enforcePolicy(current, options);
|
|
71
|
+
if (!allowed.ok)
|
|
72
|
+
return { ok: false, status: 0, text: "", error: allowed.error };
|
|
73
|
+
signal.throwIfAborted();
|
|
74
|
+
const headers = isSameOrigin(current, url) ? init?.headers : sanitizeCrossOriginRedirectHeaders(init?.headers);
|
|
75
|
+
const response = await fetch(current, { ...init, ...(headers ? { headers } : {}), signal, redirect: "manual" });
|
|
76
|
+
if ([301, 302, 303, 307, 308].includes(response.status)) {
|
|
77
|
+
const location = response.headers.get("location");
|
|
78
|
+
void response.body?.cancel().catch(() => { });
|
|
79
|
+
if (hop === 5)
|
|
80
|
+
return { ok: false, status: response.status, text: "", error: { category: "block", code: "too_many_redirects", message: "Too many provider redirects" } };
|
|
81
|
+
if (!location)
|
|
82
|
+
return { ok: false, status: response.status, text: "", error: { category: "block", code: "redirect_missing_location", message: "Provider redirect omitted Location" } };
|
|
83
|
+
current = new URL(location, current).toString();
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const text = await response.text();
|
|
87
|
+
if (!response.ok)
|
|
88
|
+
return { ok: false, status: response.status, text, error: { category: "unavailable", code: "provider_fetch_failed", message: `status=${response.status}` } };
|
|
89
|
+
return { ok: true, status: response.status, text, final_url: current };
|
|
90
|
+
}
|
|
91
|
+
return { ok: false, status: 0, text: "", error: { category: "block", code: "too_many_redirects", message: "Too many provider redirects" } };
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return { ok: false, status: 0, text: "", error: { category: "unavailable", code: "provider_fetch_failed", message: error instanceof Error ? error.message : String(error) } };
|
|
86
95
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return {
|
|
90
|
-
ok: false,
|
|
91
|
-
status: result.status,
|
|
92
|
-
text: result.text,
|
|
93
|
-
error: { category: "unavailable", code: "provider_fetch_failed", message: result.error || `status=${result.status}` },
|
|
94
|
-
};
|
|
96
|
+
finally {
|
|
97
|
+
clearTimeout(timer);
|
|
95
98
|
}
|
|
96
|
-
return { ok: true, status: result.status, text: result.text, final_url: resolved.url };
|
|
97
99
|
}
|
|
98
100
|
export async function fetchProviderJson(url, timeoutMs, init, options) {
|
|
99
101
|
if (options.deadlineAt === undefined)
|
|
@@ -131,49 +133,16 @@ async function fetchProviderJsonAttempt(url, timeoutMs, init, options) {
|
|
|
131
133
|
const expired = () => init?.signal?.aborted || (options.deadlineAt !== undefined && Date.now() >= options.deadlineAt);
|
|
132
134
|
if (expired())
|
|
133
135
|
return providerDeadlineFailure();
|
|
134
|
-
const
|
|
136
|
+
const result = await fetchProviderText(url, timeoutMs, init, options);
|
|
135
137
|
if (expired())
|
|
136
138
|
return providerDeadlineFailure();
|
|
137
|
-
if (!
|
|
138
|
-
return {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const resolved = await resolveValidatedUrl(url, resolveOptions);
|
|
142
|
-
if (expired())
|
|
143
|
-
return providerDeadlineFailure();
|
|
144
|
-
if (!resolved.ok) {
|
|
145
|
-
return {
|
|
146
|
-
ok: false,
|
|
147
|
-
status: 0,
|
|
148
|
-
text: "",
|
|
149
|
-
data: null,
|
|
150
|
-
error: { category: "block", code: resolved.reason, message: resolved.message },
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
const finalAllowed = await enforcePolicy(resolved.url, options);
|
|
154
|
-
if (expired())
|
|
155
|
-
return providerDeadlineFailure();
|
|
156
|
-
if (!finalAllowed.ok) {
|
|
157
|
-
return { ok: false, status: 0, text: "", data: null, error: finalAllowed.error };
|
|
158
|
-
}
|
|
159
|
-
const safeInit = init ? { ...init, redirect: "error" } : { redirect: "error" };
|
|
160
|
-
if (init?.headers !== undefined && !isSameOrigin(resolved.url, url)) {
|
|
161
|
-
const sanitized = sanitizeCrossOriginRedirectHeaders(init.headers);
|
|
162
|
-
if (sanitized !== undefined)
|
|
163
|
-
safeInit.headers = sanitized;
|
|
139
|
+
if (!result.ok)
|
|
140
|
+
return { ...result, data: null };
|
|
141
|
+
try {
|
|
142
|
+
return { ok: true, status: result.status, text: result.text, data: result.text ? JSON.parse(result.text) : null };
|
|
164
143
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return providerDeadlineFailure();
|
|
168
|
-
if (!result.ok) {
|
|
169
|
-
return {
|
|
170
|
-
ok: false,
|
|
171
|
-
status: result.status,
|
|
172
|
-
text: result.text,
|
|
173
|
-
data: null,
|
|
174
|
-
error: { category: "unavailable", code: "provider_fetch_failed", message: result.error || `status=${result.status}` },
|
|
175
|
-
};
|
|
144
|
+
catch (error) {
|
|
145
|
+
return { ok: false, status: result.status, text: result.text, data: null, error: { category: "unavailable", code: "provider_fetch_failed", message: error instanceof Error ? error.message : String(error) } };
|
|
176
146
|
}
|
|
177
|
-
return { ok: true, status: result.status, text: result.text, data: result.data };
|
|
178
147
|
}
|
|
179
148
|
//# sourceMappingURL=provider-policy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-policy.js","sourceRoot":"","sources":["../../src/smartfetch/provider-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-policy.js","sourceRoot":"","sources":["../../src/smartfetch/provider-policy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "smart-web-mcp",
|
|
3
3
|
"mcpName": "io.github.jojo-labs/smart-web",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.1",
|
|
5
5
|
"packageManager": "npm@11.9.0",
|
|
6
6
|
"description": "Local MCP for web search, direct-URL fetch, site crawling, docs export, and bounded smartbrowser local browser actions.",
|
|
7
7
|
"homepage": "https://github.com/jojo-labs/smart-web",
|