smart-web-mcp 0.43.5 → 0.43.6

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 CHANGED
@@ -118,6 +118,7 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
118
118
 
119
119
  ### Fixed
120
120
 
121
+ - `smartfetch` budget projection now caps arbitrary provider record width, nested arrays/depth, key length, and aggregate structured string characters, preventing wide or branching `post`, thread, and comment payloads from bypassing compact/balanced/full limits while preserving `budget.fields` omission evidence.
121
122
  - Reddit retrieval now canonicalizes trusted Reddit host variants without accepting lookalike domains, keeps subreddit scope through every search fallback, accumulates deduplicated results to the requested count, and treats malformed or unexpectedly empty archive comment trees as partial before continuing to live fallbacks.
122
123
  - Reddit archive normalization now reconciles stale `num_comments` metadata with the recovered nested comment tree, so a thread with fetched comments is not reported as having zero comments.
123
124
  - Reddit `smartfetch` now starts with live RSS/Atom, then falls back to Arctic Shift for structured posts and nested comments and anonymous JSON as a last resort; `smartsearch` uses Arctic Shift for subreddit-scoped queries, live Reddit RSS for broad current results, PullPush for historical results, and JSON as a last resort.
@@ -172,6 +173,13 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
172
173
  - Korean public API helpers now validate outbound URLs and redirects before fetching, blocking localhost, private, and reserved targets unless `network.allowPrivateHosts` is explicitly enabled.
173
174
  - 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.
174
175
 
176
+ ## [0.43.6](https://github.com/jojo-labs/smart-web/compare/v0.43.5...v0.43.6) (2026-08-03)
177
+
178
+
179
+ ### Bug Fixes
180
+
181
+ * **smartfetch:** bound aggregate projection ([#443](https://github.com/jojo-labs/smart-web/issues/443)) ([83da06a](https://github.com/jojo-labs/smart-web/commit/83da06a899f729bc4a4be0e275153074b1322e4d))
182
+
175
183
  ## [0.43.5](https://github.com/jojo-labs/smart-web/compare/v0.43.4...v0.43.5) (2026-07-28)
176
184
 
177
185
 
package/README.md CHANGED
@@ -73,7 +73,7 @@ All public tools are shaped for agent consumption. Common high-signal fields inc
73
73
 
74
74
  This lets hosts decide whether deterministic retrieval was good enough or whether they should escalate to an auth-aware companion flow or a broader browser-task runtime.[^2]
75
75
 
76
- For `smartfetch`, MCP `structuredContent` always carries the projected JSON result. MCP calls default to `output_budget: "compact"` so agent hosts do not ingest large page/thread/link payloads unless they ask for them. The human-readable `content[0].text` defaults to compact text instead of duplicating that JSON payload, with separate caps for long body text, result, comment, link, and asset sections. Omitted counts are reported in the text view while the projected fields remain available through `structuredContent`; set `format: "json"` only when a host needs JSON repeated in the text channel. Set `output_budget: "balanced"` or `"full"` only for follow-up calls that explicitly need more structured content. For host-side integration, prefer `preferred_budget_chars`; use `context_mode` only as a backward-compatible coarse alias when numeric hints are not supplied. If neither is present, `headroom_tokens` keeps compact output by default and uses `balanced` only when there is enough room. `format: "markdown"` keeps the compact response shape and requests Markdown extraction when available.
76
+ For `smartfetch`, MCP `structuredContent` always carries the projected JSON result. MCP calls default to `output_budget: "compact"` so agent hosts do not ingest large page/thread/link payloads unless they ask for them. The projection caps known body/list fields plus arbitrary provider record width, nesting, and aggregate string content, so unknown `post`, thread, or comment fields cannot bypass the preset; `budget.fields` reports omitted nested paths and primary URL/title/author/status/body fields are prioritized. The human-readable `content[0].text` defaults to compact text instead of duplicating that JSON payload, with separate caps for long body text, result, comment, link, and asset sections. Omitted counts are reported in the text view while the projected fields remain available through `structuredContent`; set `format: "json"` only when a host needs JSON repeated in the text channel. Set `output_budget: "balanced"` or `"full"` only for follow-up calls that explicitly need more structured content. For host-side integration, prefer `preferred_budget_chars`; use `context_mode` only as a backward-compatible coarse alias when numeric hints are not supplied. If neither is present, `headroom_tokens` keeps compact output by default and uses `balanced` only when there is enough room. `format: "markdown"` keeps the compact response shape and requests Markdown extraction when available.
77
77
 
78
78
  When a `smartfetch` result is blocked, partial, or low-confidence, `structuredContent.research_handoff` stays small and metadata-only. It points downstream tools at the source URL and the projected evidence bundle: `pipeline`, `assessment`, `errors`, `assets`, `outbound_links`, and the full projected `structuredContent`. Heavy research agents or editable report/rendering tools can consume that bundle downstream, but `smart-web` itself remains the unified retrieval kernel and does not spawn those tools.
79
79
 
@@ -18,6 +18,13 @@ export type SmartfetchBudgetPolicy = {
18
18
  maxBlocks: number;
19
19
  maxBlockTextChars: number;
20
20
  maxItemTextChars: number;
21
+ maxRecordEntries: number;
22
+ maxNestedArrayItems: number;
23
+ maxNestedStringChars: number;
24
+ maxTotalRecordEntries: number;
25
+ maxTotalRecordStringChars: number;
26
+ maxRecordDepth: number;
27
+ maxRecordKeyChars: number;
21
28
  };
22
29
  export type SmartfetchBudgetPreset = "compact" | "balanced" | "full";
23
30
  export type SmartfetchBudgetMetadata = {
@@ -42,4 +49,4 @@ export declare function budgetText(value: string, maxChars: number): {
42
49
  returned_chars: number;
43
50
  };
44
51
  };
45
- export declare function projectSmartfetchOutput(output: SmartfetchOutput, policy?: SmartfetchBudgetPolicy): SmartfetchOutput;
52
+ export declare function projectSmartfetchOutput(output: SmartfetchOutput, rawPolicy?: SmartfetchBudgetPolicy): SmartfetchOutput;
@@ -11,6 +11,13 @@ const SMARTFETCH_BUDGET_PRESETS = {
11
11
  maxBlocks: 4,
12
12
  maxBlockTextChars: 400,
13
13
  maxItemTextChars: 400,
14
+ maxRecordEntries: 40,
15
+ maxNestedArrayItems: 20,
16
+ maxNestedStringChars: 1200,
17
+ maxTotalRecordEntries: 120,
18
+ maxTotalRecordStringChars: 10000,
19
+ maxRecordDepth: 6,
20
+ maxRecordKeyChars: 120,
14
21
  },
15
22
  balanced: {
16
23
  name: "smartfetch.balanced",
@@ -23,6 +30,13 @@ const SMARTFETCH_BUDGET_PRESETS = {
23
30
  maxBlocks: 20,
24
31
  maxBlockTextChars: 500,
25
32
  maxItemTextChars: 500,
33
+ maxRecordEntries: 80,
34
+ maxNestedArrayItems: 50,
35
+ maxNestedStringChars: 4000,
36
+ maxTotalRecordEntries: 800,
37
+ maxTotalRecordStringChars: 50000,
38
+ maxRecordDepth: 8,
39
+ maxRecordKeyChars: 240,
26
40
  },
27
41
  full: {
28
42
  name: "smartfetch.full",
@@ -35,6 +49,13 @@ const SMARTFETCH_BUDGET_PRESETS = {
35
49
  maxBlocks: 40,
36
50
  maxBlockTextChars: 900,
37
51
  maxItemTextChars: 900,
52
+ maxRecordEntries: 160,
53
+ maxNestedArrayItems: 100,
54
+ maxNestedStringChars: 12000,
55
+ maxTotalRecordEntries: 2500,
56
+ maxTotalRecordStringChars: 120000,
57
+ maxRecordDepth: 12,
58
+ maxRecordKeyChars: 480,
38
59
  },
39
60
  };
40
61
  export const DEFAULT_SMARTFETCH_BUDGET = SMARTFETCH_BUDGET_PRESETS.balanced;
@@ -64,6 +85,13 @@ export function resolveSmartfetchBudgetPolicy(raw = configValue("fetch.outputBud
64
85
  maxBlocks: asPositiveInteger(record.maxBlocks, base.maxBlocks),
65
86
  maxBlockTextChars: asPositiveInteger(record.maxBlockTextChars, base.maxBlockTextChars),
66
87
  maxItemTextChars: asPositiveInteger(record.maxItemTextChars, base.maxItemTextChars),
88
+ maxRecordEntries: asPositiveInteger(record.maxRecordEntries, base.maxRecordEntries),
89
+ maxNestedArrayItems: asPositiveInteger(record.maxNestedArrayItems, base.maxNestedArrayItems),
90
+ maxNestedStringChars: asPositiveInteger(record.maxNestedStringChars, base.maxNestedStringChars),
91
+ maxTotalRecordEntries: asPositiveInteger(record.maxTotalRecordEntries, base.maxTotalRecordEntries),
92
+ maxTotalRecordStringChars: asPositiveInteger(record.maxTotalRecordStringChars, base.maxTotalRecordStringChars),
93
+ maxRecordDepth: asPositiveInteger(record.maxRecordDepth, base.maxRecordDepth),
94
+ maxRecordKeyChars: asPositiveInteger(record.maxRecordKeyChars, base.maxRecordKeyChars),
67
95
  };
68
96
  }
69
97
  export function budgetText(value, maxChars) {
@@ -93,33 +121,111 @@ function budgetList(items, maxItems) {
93
121
  function cloneRecord(record) {
94
122
  return { ...record };
95
123
  }
96
- function budgetRecordTextFields(record, maxChars, fields, metadata, prefix) {
97
- const next = cloneRecord(record);
98
- for (const field of fields) {
99
- const value = next[field];
100
- if (typeof value !== "string")
101
- continue;
102
- const budgeted = budgetText(value, maxChars);
103
- next[field] = budgeted.value;
104
- if (budgeted.metadata.truncated)
105
- metadata[`${prefix}.${field}`] = budgeted.metadata;
124
+ function recordMetadata(metadata, path, field) {
125
+ if (field.truncated)
126
+ metadata[path] = field;
127
+ }
128
+ function maxStringCharsForPath(path, policy) {
129
+ if (path === "post.text" || path === "post.selftext")
130
+ return policy.maxPostTextChars;
131
+ if (path === "post.markdown")
132
+ return policy.maxPostMarkdownChars;
133
+ if (/^post\.blocks\.\d+\.(?:text|content)$/.test(path))
134
+ return policy.maxBlockTextChars;
135
+ if (/^(?:thread|comments)\.\d+\.(?:text|body|snippet|description)$/.test(path))
136
+ return policy.maxItemTextChars;
137
+ return policy.maxNestedStringChars;
138
+ }
139
+ function maxArrayItemsForPath(path, policy) {
140
+ if (path === "post.blocks")
141
+ return policy.maxBlocks;
142
+ return policy.maxNestedArrayItems;
143
+ }
144
+ const SMARTFETCH_RECORD_KEY_PRIORITY = [
145
+ "url",
146
+ "canonical_url",
147
+ "title",
148
+ "author",
149
+ "handle",
150
+ "status",
151
+ "text",
152
+ "selftext",
153
+ "markdown",
154
+ "description",
155
+ "body",
156
+ "snippet",
157
+ ];
158
+ function orderRecordEntries(record) {
159
+ const priority = new Map(SMARTFETCH_RECORD_KEY_PRIORITY.map((key, index) => [key, index]));
160
+ return Object.entries(record)
161
+ .map((entry, index) => ({ entry, index, priority: priority.get(entry[0]) ?? SMARTFETCH_RECORD_KEY_PRIORITY.length }))
162
+ .sort((left, right) => left.priority - right.priority || left.index - right.index)
163
+ .map(({ entry }) => entry);
164
+ }
165
+ function takeStructuredEntries(entries, maxEntries, state, metadata, path) {
166
+ const returnedItems = Math.min(entries.length, maxEntries, state.remainingEntries);
167
+ const visible = entries.slice(0, returnedItems);
168
+ state.remainingEntries -= returnedItems;
169
+ if (returnedItems < entries.length) {
170
+ metadata[path] = {
171
+ truncated: true,
172
+ original_items: entries.length,
173
+ returned_items: returnedItems,
174
+ omitted_items: entries.length - returnedItems,
175
+ };
106
176
  }
107
- return next;
177
+ return visible;
108
178
  }
109
- function budgetBlocks(value, policy, metadata) {
110
- if (!Array.isArray(value))
179
+ function projectStructuredValue(value, policy, state, metadata, path, depth) {
180
+ if (typeof value === "string") {
181
+ const maxChars = Math.min(maxStringCharsForPath(path, policy), state.remainingStringChars);
182
+ const budgeted = budgetText(value, maxChars);
183
+ state.remainingStringChars -= budgeted.value.length;
184
+ recordMetadata(metadata, path, budgeted.metadata);
185
+ return budgeted.value;
186
+ }
187
+ if (!value || typeof value !== "object")
111
188
  return value;
112
- const list = budgetList(value, policy.maxBlocks);
113
- if (list.metadata.truncated)
114
- metadata["post.blocks"] = list.metadata;
115
- return list.items.map((item, index) => {
116
- if (!item || typeof item !== "object" || Array.isArray(item))
117
- return item;
118
- return budgetRecordTextFields(item, policy.maxBlockTextChars, ["text", "content"], metadata, `post.blocks.${index}`);
119
- });
189
+ if (depth >= policy.maxRecordDepth) {
190
+ metadata[path] = { truncated: true, original_items: 1, returned_items: 0, omitted_items: 1 };
191
+ return "[truncated: nested smartfetch value omitted by output budget]";
192
+ }
193
+ if (state.seen.has(value)) {
194
+ metadata[path] = { truncated: true, original_items: 1, returned_items: 0, omitted_items: 1 };
195
+ return "[truncated: repeated smartfetch value omitted by output budget]";
196
+ }
197
+ state.seen.add(value);
198
+ if (Array.isArray(value)) {
199
+ const visible = takeStructuredEntries(value, maxArrayItemsForPath(path, policy), state, metadata, path);
200
+ return visible.map((item, index) => projectStructuredValue(item, policy, state, metadata, `${path}.${index}`, depth + 1));
201
+ }
202
+ const record = value;
203
+ const orderedEntries = orderRecordEntries(record);
204
+ const safeEntries = orderedEntries.filter(([key]) => key.length <= policy.maxRecordKeyChars);
205
+ const visible = takeStructuredEntries(safeEntries, policy.maxRecordEntries, state, metadata, path);
206
+ if (safeEntries.length < orderedEntries.length) {
207
+ const returnedItems = visible.length;
208
+ metadata[path] = {
209
+ truncated: true,
210
+ original_items: orderedEntries.length,
211
+ returned_items: returnedItems,
212
+ omitted_items: orderedEntries.length - returnedItems,
213
+ };
214
+ }
215
+ const projected = {};
216
+ for (const [key, item] of visible) {
217
+ projected[key] = projectStructuredValue(item, policy, state, metadata, `${path}.${key}`, depth + 1);
218
+ }
219
+ return projected;
120
220
  }
121
- export function projectSmartfetchOutput(output, policy = resolveSmartfetchBudgetPolicy()) {
221
+ export function projectSmartfetchOutput(output, rawPolicy = resolveSmartfetchBudgetPolicy()) {
222
+ const policy = { ...DEFAULT_SMARTFETCH_BUDGET, ...rawPolicy };
122
223
  const metadata = {};
224
+ const projectionState = {
225
+ remainingEntries: policy.maxTotalRecordEntries,
226
+ remainingStringChars: policy.maxTotalRecordStringChars,
227
+ seen: new WeakSet(),
228
+ };
123
229
  const next = {
124
230
  ...output,
125
231
  retrieval_method: [...output.retrieval_method],
@@ -149,23 +255,14 @@ export function projectSmartfetchOutput(output, policy = resolveSmartfetchBudget
149
255
  } : {}),
150
256
  };
151
257
  if (next.post) {
152
- for (const [field, maxChars] of [["text", policy.maxPostTextChars], ["selftext", policy.maxPostTextChars], ["markdown", policy.maxPostMarkdownChars]]) {
153
- const value = next.post[field];
154
- if (typeof value !== "string")
155
- continue;
156
- const budgeted = budgetText(value, maxChars);
157
- next.post[field] = budgeted.value;
158
- if (budgeted.metadata.truncated)
159
- metadata[`post.${field}`] = budgeted.metadata;
160
- }
161
- next.post.blocks = budgetBlocks(next.post.blocks, policy, metadata);
258
+ next.post = projectStructuredValue(next.post, policy, projectionState, metadata, "post", 0);
162
259
  }
163
260
  const thread = budgetList(next.thread, policy.maxThreadItems);
164
- next.thread = thread.items.map((item, index) => budgetRecordTextFields(item, policy.maxItemTextChars, ["text", "body", "snippet", "description"], metadata, `thread.${index}`));
261
+ next.thread = thread.items.map((item, index) => projectStructuredValue(item, policy, projectionState, metadata, `thread.${index}`, 0));
165
262
  if (thread.metadata.truncated)
166
263
  metadata.thread = thread.metadata;
167
264
  const comments = budgetList(next.comments, policy.maxCommentItems);
168
- next.comments = comments.items.map((item, index) => budgetRecordTextFields(item, policy.maxItemTextChars, ["text", "body", "snippet", "description"], metadata, `comments.${index}`));
265
+ next.comments = comments.items.map((item, index) => projectStructuredValue(item, policy, projectionState, metadata, `comments.${index}`, 0));
169
266
  if (comments.metadata.truncated)
170
267
  metadata.comments = comments.metadata;
171
268
  const outboundLinks = budgetList(next.outbound_links, policy.maxOutboundLinks);
@@ -1 +1 @@
1
- {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/extraction/budget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/extraction/budget.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": "0.43.5",
4
+ "version": "0.43.6",
5
5
  "packageManager": "npm@11.9.0",
6
6
  "description": "Local MCP for web search, direct-URL fetch, compact normalized output, site crawling, and docs export.",
7
7
  "homepage": "https://github.com/jojo-labs/smart-web",