smart-web-mcp 0.44.0 → 1.0.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.
Files changed (159) hide show
  1. package/CHANGELOG.md +352 -1
  2. package/README.md +33 -566
  3. package/dist/assessment.d.ts +10 -3
  4. package/dist/assessment.js +21 -6
  5. package/dist/assessment.js.map +1 -1
  6. package/dist/body-export.d.ts +10 -0
  7. package/dist/body-export.js +28 -0
  8. package/dist/body-export.js.map +1 -0
  9. package/dist/browser-session.d.ts +32 -1
  10. package/dist/browser-session.js +373 -3
  11. package/dist/browser-session.js.map +1 -1
  12. package/dist/cli-fetch-options.d.ts +7 -0
  13. package/dist/cli-fetch-options.js +41 -0
  14. package/dist/cli-fetch-options.js.map +1 -0
  15. package/dist/cli.js +31 -12
  16. package/dist/cli.js.map +1 -1
  17. package/dist/comment-export.d.ts +10 -0
  18. package/dist/comment-export.js +39 -0
  19. package/dist/comment-export.js.map +1 -0
  20. package/dist/composition.d.ts +1 -22
  21. package/dist/composition.js +0 -16
  22. package/dist/composition.js.map +1 -1
  23. package/dist/extraction/budget.d.ts +3 -0
  24. package/dist/extraction/budget.js +88 -7
  25. package/dist/extraction/budget.js.map +1 -1
  26. package/dist/extraction/document.js +134 -9
  27. package/dist/extraction/document.js.map +1 -1
  28. package/dist/korea/coupang-filters.d.ts +5 -0
  29. package/dist/korea/coupang-filters.js +87 -0
  30. package/dist/korea/coupang-filters.js.map +1 -0
  31. package/dist/korea/coupang.d.ts +27 -6
  32. package/dist/korea/coupang.js +202 -82
  33. package/dist/korea/coupang.js.map +1 -1
  34. package/dist/korea/proxy-client.d.ts +1 -0
  35. package/dist/korea/proxy-client.js +6 -2
  36. package/dist/korea/proxy-client.js.map +1 -1
  37. package/dist/korea/smartvertical.d.ts +1 -0
  38. package/dist/korea/smartvertical.js +39 -25
  39. package/dist/korea/smartvertical.js.map +1 -1
  40. package/dist/lib.d.ts +4 -2
  41. package/dist/lib.js +2 -1
  42. package/dist/lib.js.map +1 -1
  43. package/dist/mcp-server.js +39 -15
  44. package/dist/mcp-server.js.map +1 -1
  45. package/dist/operator-browser-fixture.d.ts +7 -0
  46. package/dist/operator-browser-fixture.js +19 -0
  47. package/dist/operator-browser-fixture.js.map +1 -0
  48. package/dist/operator-canary-cli.d.ts +6 -0
  49. package/dist/operator-canary-cli.js +190 -0
  50. package/dist/operator-canary-cli.js.map +1 -0
  51. package/dist/operator-canary.d.ts +74 -0
  52. package/dist/operator-canary.js +135 -0
  53. package/dist/operator-canary.js.map +1 -0
  54. package/dist/operator-cdp.d.ts +15 -0
  55. package/dist/operator-cdp.js +195 -0
  56. package/dist/operator-cdp.js.map +1 -0
  57. package/dist/operator-frame.d.ts +3 -0
  58. package/dist/operator-frame.js +55 -0
  59. package/dist/operator-frame.js.map +1 -0
  60. package/dist/settings.d.ts +3 -0
  61. package/dist/settings.js +1 -0
  62. package/dist/settings.js.map +1 -1
  63. package/dist/shared.d.ts +47 -10
  64. package/dist/shared.js +15 -9
  65. package/dist/shared.js.map +1 -1
  66. package/dist/smartbrowser.d.ts +169 -0
  67. package/dist/smartbrowser.js +288 -0
  68. package/dist/smartbrowser.js.map +1 -0
  69. package/dist/smartcrawl.js +16 -21
  70. package/dist/smartcrawl.js.map +1 -1
  71. package/dist/smartfetch/academic-fallback.js +3 -5
  72. package/dist/smartfetch/academic-fallback.js.map +1 -1
  73. package/dist/smartfetch/archive-fallback.js +2 -5
  74. package/dist/smartfetch/archive-fallback.js.map +1 -1
  75. package/dist/smartfetch/assets.d.ts +1 -1
  76. package/dist/smartfetch/assets.js +28 -1
  77. package/dist/smartfetch/assets.js.map +1 -1
  78. package/dist/smartfetch/jina-reader.d.ts +1 -0
  79. package/dist/smartfetch/jina-reader.js +17 -3
  80. package/dist/smartfetch/jina-reader.js.map +1 -1
  81. package/dist/smartfetch/pipeline.js +15 -25
  82. package/dist/smartfetch/pipeline.js.map +1 -1
  83. package/dist/smartfetch/provider-policy.d.ts +3 -0
  84. package/dist/smartfetch/provider-policy.js +45 -2
  85. package/dist/smartfetch/provider-policy.js.map +1 -1
  86. package/dist/smartfetch/provider-types.d.ts +8 -0
  87. package/dist/smartfetch/providers/article.js +76 -10
  88. package/dist/smartfetch/providers/article.js.map +1 -1
  89. package/dist/smartfetch/providers/blind-post.d.ts +2 -0
  90. package/dist/smartfetch/providers/blind-post.js +167 -0
  91. package/dist/smartfetch/providers/blind-post.js.map +1 -0
  92. package/dist/smartfetch/providers/clien.d.ts +2 -0
  93. package/dist/smartfetch/providers/clien.js +157 -0
  94. package/dist/smartfetch/providers/clien.js.map +1 -0
  95. package/dist/smartfetch/providers/commerce.d.ts +15 -0
  96. package/dist/smartfetch/providers/commerce.js +123 -7
  97. package/dist/smartfetch/providers/commerce.js.map +1 -1
  98. package/dist/smartfetch/providers/dcinside.js +313 -20
  99. package/dist/smartfetch/providers/dcinside.js.map +1 -1
  100. package/dist/smartfetch/providers/hackernews-html.d.ts +21 -0
  101. package/dist/smartfetch/providers/hackernews-html.js +148 -0
  102. package/dist/smartfetch/providers/hackernews-html.js.map +1 -0
  103. package/dist/smartfetch/providers/hackernews.js +76 -14
  104. package/dist/smartfetch/providers/hackernews.js.map +1 -1
  105. package/dist/smartfetch/providers/index.js +7 -1
  106. package/dist/smartfetch/providers/index.js.map +1 -1
  107. package/dist/smartfetch/providers/linkedin.js +2 -1
  108. package/dist/smartfetch/providers/linkedin.js.map +1 -1
  109. package/dist/smartfetch/providers/naver-blog.d.ts +2 -0
  110. package/dist/smartfetch/providers/naver-blog.js +87 -45
  111. package/dist/smartfetch/providers/naver-blog.js.map +1 -1
  112. package/dist/smartfetch/providers/naver-cafe-native.d.ts +7 -0
  113. package/dist/smartfetch/providers/naver-cafe-native.js +188 -0
  114. package/dist/smartfetch/providers/naver-cafe-native.js.map +1 -0
  115. package/dist/smartfetch/providers/naver-cafe.js +165 -4
  116. package/dist/smartfetch/providers/naver-cafe.js.map +1 -1
  117. package/dist/smartfetch/providers/naver-map-search.js +1 -1
  118. package/dist/smartfetch/providers/naver-map-search.js.map +1 -1
  119. package/dist/smartfetch/providers/ppomppu.d.ts +2 -0
  120. package/dist/smartfetch/providers/ppomppu.js +289 -0
  121. package/dist/smartfetch/providers/ppomppu.js.map +1 -0
  122. package/dist/smartfetch/providers/reddit.js +24 -3
  123. package/dist/smartfetch/providers/reddit.js.map +1 -1
  124. package/dist/smartfetch/providers/threads.js +1 -1
  125. package/dist/smartfetch/providers/threads.js.map +1 -1
  126. package/dist/smartfetch/providers/wikipedia.js +138 -0
  127. package/dist/smartfetch/providers/wikipedia.js.map +1 -1
  128. package/dist/smartfetch.d.ts +11 -2
  129. package/dist/smartfetch.js +369 -78
  130. package/dist/smartfetch.js.map +1 -1
  131. package/dist/smartsearch-brave.d.ts +2 -0
  132. package/dist/smartsearch-brave.js +43 -0
  133. package/dist/smartsearch-brave.js.map +1 -0
  134. package/dist/smartsearch-browser.d.ts +5 -0
  135. package/dist/smartsearch-browser.js +116 -0
  136. package/dist/smartsearch-browser.js.map +1 -0
  137. package/dist/smartsearch-ddg.d.ts +2 -0
  138. package/dist/smartsearch-ddg.js +46 -0
  139. package/dist/smartsearch-ddg.js.map +1 -0
  140. package/dist/smartsearch-node.d.ts +6 -0
  141. package/dist/smartsearch-node.js +21 -0
  142. package/dist/smartsearch-node.js.map +1 -0
  143. package/dist/smartsearch-postgresql.d.ts +7 -0
  144. package/dist/smartsearch-postgresql.js +44 -0
  145. package/dist/smartsearch-postgresql.js.map +1 -0
  146. package/dist/smartsearch-python.d.ts +8 -0
  147. package/dist/smartsearch-python.js +87 -0
  148. package/dist/smartsearch-python.js.map +1 -0
  149. package/dist/smartsearch-quality.d.ts +6 -0
  150. package/dist/smartsearch-quality.js +47 -0
  151. package/dist/smartsearch-quality.js.map +1 -0
  152. package/dist/smartsearch-youtube.d.ts +7 -0
  153. package/dist/smartsearch-youtube.js +76 -0
  154. package/dist/smartsearch-youtube.js.map +1 -0
  155. package/dist/smartsearch.d.ts +3 -0
  156. package/dist/smartsearch.js +617 -132
  157. package/dist/smartsearch.js.map +1 -1
  158. package/package.json +8 -5
  159. package/python/requirements-undetected-chromedriver.txt +2 -2
@@ -1,4 +1,7 @@
1
+ import { parseHTML } from "linkedom";
1
2
  import { asNumber, asString, dedupeUrls, extractMetaDescription, extractMetaProperty, extractTitleFromHtml, extractUrls, fetchJson, isNaverCafeUrl, stripTags } from "../../shared.js";
3
+ import { BrowserSessionToolError, looksBotBlockedContent } from "../../browser-session.js";
4
+ import { normalizeNaverCafeNative, naverCafeIdentity, naverCafeMobilePostUrl } from "./naver-cafe-native.js";
2
5
  const USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36";
3
6
  function decodeJwtPayload(value) {
4
7
  const parts = String(value || "").split(".");
@@ -103,10 +106,164 @@ function looksLikeNaverCafeArticle(url) {
103
106
  return false;
104
107
  }
105
108
  }
109
+ const articlePager = '.WebArticle #ct > .ArticleComment .comment_more .comment_more_bottom > a.more_next[data-nlog-area="comment_list.goto_next_comment"]';
110
+ const commentPager = '.ArticleComment.CommentView .comment_more .comment_more_bottom > a.more_next[data-nlog-area="comment_list.more_next_comment"]';
111
+ async function readCafeCommentPages(context, original, deadline) {
112
+ const source = naverCafeMobilePostUrl(context.resolvedUrl);
113
+ const expected = naverCafeIdentity(context.expectedPostUrl || context.url);
114
+ if (!source || !expected || naverCafeIdentity(source) !== expected)
115
+ throw new Error("Native article identity changed");
116
+ const first = parseHTML(context.active.content).document;
117
+ const reactions = first.querySelectorAll('.WebArticle #ct > ._cafeReactionModule[data-catgid][data-cid]');
118
+ if (reactions.length !== 1)
119
+ throw new Error("Native cafe identity is ambiguous");
120
+ const reaction = reactions[0];
121
+ const cafe = reaction?.getAttribute("data-catgid") || "";
122
+ const article = expected.split("/articles/")[1];
123
+ if (!/^[1-9]\d*$/.test(cafe) || reaction?.getAttribute("data-cid") !== `${cafe}_${new URL(expected).pathname.split("/cafes/")[1]?.split("/")[0]}_${article}`)
124
+ throw new Error("Native numeric cafe identity is unavailable");
125
+ const token = new URL(source).searchParams.get("art");
126
+ const initialIds = original.comments.map(row => row.id).filter((id) => typeof id === "number");
127
+ if (!token || new Set(initialIds).size !== initialIds.length)
128
+ throw new Error("Native comment identity is ambiguous");
129
+ let finalHtml = "";
130
+ let finalUrl = "";
131
+ let pages = 0;
132
+ let bytes = 0;
133
+ let priorIds = initialIds;
134
+ const session = await context.runBrowserSession({
135
+ ...context.browserSessionOptions, url: source, timeoutMs: Math.min(context.timeoutMs, deadline - Date.now()),
136
+ operatorTask: async (page, remaining) => {
137
+ const requireReadable = async () => {
138
+ remaining();
139
+ const text = await page.mainFrame().evaluate(() => document.body?.innerText || "");
140
+ if (looksBotBlockedContent(text.slice(0, 4000)) || (text.length < 1000 && /로그인이 필요|sign in to continue|동의가 필요/i.test(text))
141
+ || await page.locator('dialog[open]:visible, [role="dialog"]:visible, [aria-modal="true"]:visible, iframe[src*="recaptcha"]:visible, iframe[src*="hcaptcha"]:visible').count()) {
142
+ throw new BrowserSessionToolError({ category: "block", code: "operator_browser_user_required", message: "Comment reading requires user participation" });
143
+ }
144
+ };
145
+ await page.locator('.WebArticle #ct > .ArticleComment .comment_list').waitFor({ state: "visible", timeout: remaining() });
146
+ await requireReadable();
147
+ const fresh = normalizeNaverCafeNative({ ...context, resolvedUrl: page.url(), active: { ...context.active, content: await page.content() } });
148
+ if (!fresh || fresh.post?.text !== original.post?.text || fresh.post?.title !== original.post?.title
149
+ || fresh.post?.comment_count !== original.post?.comment_count || initialIds.some(id => !fresh.comments.some(row => row.id === id))) {
150
+ throw new Error("Native article evidence changed before comment continuation");
151
+ }
152
+ for (let number = 1; number <= 5; number++) {
153
+ remaining();
154
+ await requireReadable();
155
+ const url = page.url();
156
+ const isArticle = number === 1;
157
+ const expectedComments = new URL(`https://m.cafe.naver.com/ca-fe/web/cafes/${cafe}/articles/${article}/comments`);
158
+ const parsedUrl = new URL(url);
159
+ if (isArticle ? naverCafeIdentity(url) !== expected : parsedUrl.origin !== expectedComments.origin || parsedUrl.pathname !== expectedComments.pathname || parsedUrl.searchParams.getAll("art").length !== 1 || parsedUrl.searchParams.get("art") !== token)
160
+ throw new Error("Native comment route changed identity");
161
+ const html = await page.content();
162
+ bytes += Buffer.byteLength(html);
163
+ if (bytes > 8 * 1024 * 1024)
164
+ throw new Error("Native comment snapshots exceed the 8 MiB bound");
165
+ const document = parseHTML(html).document;
166
+ const scope = isArticle ? document.querySelector('.WebArticle #ct > .ArticleComment') : document.querySelector('.ArticleComment.CommentView');
167
+ if (!scope || (isArticle ? document.querySelectorAll('.WebArticle #ct > .ArticleComment').length : document.querySelectorAll('.ArticleComment.CommentView').length) !== 1)
168
+ throw new Error("Native comment scope is ambiguous");
169
+ const lists = Array.from(scope.querySelectorAll('.comment_list')).filter(node => !node.closest('li'));
170
+ if (lists.length !== 1)
171
+ throw new Error("Native comment list is ambiguous");
172
+ const knownIds = Array.from(lists[0].children).flatMap(row => {
173
+ if (row.tagName !== "LI")
174
+ return [];
175
+ const controls = Array.from(row.querySelectorAll('.comment_item .comment_footer [data-nlog-area="comment_list.comment_reply"]')).filter(node => node.closest('li') === row && !node.closest('.comment_content'));
176
+ try {
177
+ const id = JSON.parse(controls.length === 1 ? controls[0].getAttribute('data-nlog-params') || 'null' : 'null')?.comment_id;
178
+ return typeof id === "number" && Number.isSafeInteger(id) && id > 0 ? [id] : [];
179
+ }
180
+ catch {
181
+ return [];
182
+ }
183
+ });
184
+ if (new Set(knownIds).size !== knownIds.length || priorIds.some(id => !knownIds.includes(id)) || (number > 1 && knownIds.length <= priorIds.length))
185
+ throw new Error("Native comment IDs did not advance or conflicted");
186
+ if (!isArticle) {
187
+ const heading = Array.from(document.querySelectorAll('.CommentViewWrap > header.HeaderWrap h1.main_title')).filter(node => node.closest('.CommentViewWrap')?.querySelector('.ArticleComment.CommentView') === scope);
188
+ if (heading.length !== 1 || heading[0].textContent?.replace(/\s+/g, " ").trim() !== `댓글 ${original.post?.comment_count}`)
189
+ throw new Error("Native comment count changed");
190
+ const titles = Array.from(scope.querySelectorAll('.go_post h2.tit')).filter(node => !node.closest('.comment_list'));
191
+ if (titles.length !== 1 || titles[0].textContent?.replace(/\s+/g, "") !== String(original.post?.title).replace(/\s+/g, ""))
192
+ throw new Error("Native comment article title changed");
193
+ }
194
+ priorIds = knownIds;
195
+ const next = isArticle ? articlePager : commentPager;
196
+ const controls = Array.from(scope.querySelectorAll(isArticle ? '.comment_more .comment_more_bottom > a.more_next[data-nlog-area="comment_list.goto_next_comment"]' : '.comment_more .comment_more_bottom > a.more_next[data-nlog-area="comment_list.more_next_comment"]'));
197
+ if (controls.length > 1)
198
+ throw new Error("Native next-comment control is ambiguous");
199
+ finalHtml = html;
200
+ finalUrl = url;
201
+ pages = number;
202
+ if (!controls.length || number === 5)
203
+ break;
204
+ if (controls[0].getAttribute("href") !== "#")
205
+ throw new Error("Native next-comment control changed");
206
+ const locator = page.locator(next);
207
+ if (await locator.count() !== 1 || await locator.getAttribute("href") !== "#")
208
+ throw new Error("Native next-comment control is unavailable");
209
+ await locator.click({ trial: true, timeout: remaining() });
210
+ await requireReadable();
211
+ if (page.url() !== url || await locator.getAttribute("href") !== "#")
212
+ throw new Error("Native next-comment control changed before dispatch");
213
+ await locator.click({ timeout: remaining() });
214
+ const changed = await page.waitForFunction(({ previous }) => {
215
+ const rows = document.querySelectorAll('.ArticleComment .comment_list > li');
216
+ return rows.length > previous;
217
+ }, { previous: lists[0].children.length }, { polling: 25, timeout: remaining() });
218
+ await changed.dispose();
219
+ }
220
+ },
221
+ });
222
+ if (!session.ok)
223
+ throw new BrowserSessionToolError(session.error);
224
+ if (Date.now() >= deadline || !finalHtml || !pages)
225
+ throw new Error("Native comment continuation exceeded the original deadline");
226
+ const after = parseHTML(finalHtml).document;
227
+ const comments = after.querySelector('.ArticleComment.CommentView .comment_list');
228
+ if (!comments || !finalUrl.includes("/comments"))
229
+ throw new Error("Native comments route did not yield a comment list");
230
+ const before = parseHTML(context.active.content).document;
231
+ const list = before.querySelector('.WebArticle #ct > .ArticleComment .comment_list');
232
+ const section = before.querySelector('.WebArticle #ct > .ArticleComment');
233
+ if (!list || !section)
234
+ throw new Error("Original native article changed");
235
+ list.innerHTML = comments.innerHTML;
236
+ const pending = after.querySelectorAll('.ArticleComment.CommentView .comment_more a, .ArticleComment.CommentView .comment_more button').length > 0;
237
+ if (!pending)
238
+ section.querySelector('.comment_more')?.remove();
239
+ const normalized = normalizeNaverCafeNative({ ...context, active: { ...context.active, content: before.toString() } });
240
+ if (!normalized || normalized.post?.text !== original.post?.text || normalized.post?.title !== original.post?.title || normalized.post?.comment_count !== original.post?.comment_count || normalized.comments.length < original.comments.length)
241
+ throw new Error("Native comment evidence could not be reconciled");
242
+ normalized.post.comment_pages = { collected_pages: pages, max_pages: 5 };
243
+ return normalized;
244
+ }
106
245
  export const naverCafeProvider = {
107
246
  id: "naver-cafe",
108
247
  matches: (url, target) => target === "naver_cafe_post" || (target === "generic" && isNaverCafeUrl(url) && looksLikeNaverCafeArticle(url)),
109
248
  async normalize(context) {
249
+ const native = normalizeNaverCafeNative(context);
250
+ if (native) {
251
+ const deadline = context.deadlineAt ?? Date.now() + context.timeoutMs;
252
+ if (native.post?.text && native.post?.comment_coverage && !native.post.comment_coverage.complete
253
+ && context.active.content.includes('comment_list.goto_next_comment')
254
+ && context.runBrowserSession && context.browserSessionOptions?.cdpUrl && !context.browserSessionOptions.profileDir
255
+ && deadline - Date.now() >= 1000) {
256
+ try {
257
+ return await readCafeCommentPages(context, native, deadline);
258
+ }
259
+ catch (error) {
260
+ if (error instanceof BrowserSessionToolError)
261
+ native.errors.push(error.toolError);
262
+ native.errors.push({ category: "unavailable", code: "naver_cafe_comment_pages_incomplete", message: "Bounded native comment continuation failed; original evidence is preserved" });
263
+ }
264
+ }
265
+ return native;
266
+ }
110
267
  const fallbackTitle = extractMetaProperty(context.active.content, "og:title") || asString(context.active.primary_content?.title) || extractTitleFromHtml(context.active.content);
111
268
  const fallbackDescription = extractMetaProperty(context.active.content, "og:description") || extractMetaDescription(context.active.content);
112
269
  const rawFallbackText = stripTags(context.active.content);
@@ -176,27 +333,31 @@ export const naverCafeProvider = {
176
333
  method: result.ok ? "naver_cafe_article_json" : context.active.method,
177
334
  };
178
335
  }
336
+ const commentCount = typeof article?.commentCount === "number" && Number.isSafeInteger(article.commentCount) && article.commentCount >= 0 ? article.commentCount : null;
337
+ const commentsComplete = commentCount === 0;
179
338
  return {
180
339
  post: {
181
340
  url: context.url,
182
341
  canonical_url: apiUrl,
183
342
  title: asString(article?.subject),
184
343
  description: fallbackDescription,
185
- text: body.slice(0, 50000),
344
+ text: body,
345
+ body_coverage: { collected_chars: body.length, complete: true },
186
346
  author: asString(writer?.nick),
187
347
  menu_name: asString(menu?.name),
188
348
  cafe_name: asString(cafe?.name || cafe?.cafeName),
189
349
  write_date: asString(article?.writeDate),
190
350
  read_count: asNumber(article?.readCount),
191
- comment_count: asNumber(article?.commentCount),
351
+ comment_count: commentCount,
352
+ comment_coverage: { declared_count: commentCount, collected_count: 0, complete: commentsComplete },
192
353
  extractor: "naver_cafe_article_json",
193
354
  status: "ok",
194
355
  },
195
356
  thread: [],
196
357
  comments: [],
197
358
  outbound_links: dedupeUrls([...context.active.links, ...extractUrls(contentHtml)]),
198
- partial: false,
199
- errors: context.errors,
359
+ partial: !commentsComplete,
360
+ errors: [...context.errors, ...(!commentsComplete ? [{ category: "unavailable", code: "naver_cafe_comments_incomplete", message: "Article JSON does not include the declared or unknown comment list" }] : [])],
200
361
  method: "naver_cafe_article_json",
201
362
  };
202
363
  },
@@ -1 +1 @@
1
- {"version":3,"file":"naver-cafe.js","sourceRoot":"","sources":["../../../src/smartfetch/providers/naver-cafe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"naver-cafe.js","sourceRoot":"","sources":["../../../src/smartfetch/providers/naver-cafe.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { dedupeUrls } from "../../shared.js";
2
2
  function naverMapSearchGuidance() {
3
- return "Naver Map search requires interactive browser access and is not available through static fetch. Use a web_task or direct the user to the place entry page for the specific location.";
3
+ return "Naver Map search requires interactive browser access: acquisition returned no verified place content. A shell or an action-required assessment is not a completed place lookup.";
4
4
  }
5
5
  function isSearchOrChromeLink(url) {
6
6
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"naver-map-search.js","sourceRoot":"","sources":["../../../src/smartfetch/providers/naver-map-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"naver-map-search.js","sourceRoot":"","sources":["../../../src/smartfetch/providers/naver-map-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,SAAS,sBAAsB;IAC7B,OAAO,iLAAiL,CAAA;AAC1L,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC1C,OAAO,IAAI,KAAK,eAAe,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;eAC1D,IAAI,KAAK,iBAAiB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;eAC3D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;eAC5B,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;eAClD,yBAAyB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,MAAM,CAAC,QAAQ,KAAK,eAAe,IAAI,gDAAgD,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;mBAC/G,CAAC,MAAM,CAAC,QAAQ,KAAK,mBAAmB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,oCAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9J,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAuB;IACxD,EAAE,EAAE,kBAAkB;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,kBAAkB;IACxD,KAAK,CAAC,SAAS,CAAC,OAAO;QACrB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAA;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAA;QACnC,MAAM,IAAI,GAAG,MAAM,CAAE,OAAO,CAAC,MAAc,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAA;QAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;QAC9C,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAEzF,sDAAsD;QACtD,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;QAExD,IAAI,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE,CAAC;YACxE,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAA;YACzC,OAAO;gBACL,IAAI,EAAE;oBACJ,GAAG;oBACH,KAAK,EAAE,kBAAkB;oBACzB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,wBAAwB;iBACjC;gBACD,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,EAAE;gBAClB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,GAAG,OAAO,CAAC,MAAM;oBACjB,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,QAAQ,EAAE;iBAC/E;gBACD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;aAC9B,CAAA;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE;gBACJ,GAAG;gBACH,KAAK,EAAE,kBAAkB;gBACzB,IAAI;gBACJ,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,wBAAwB;aAC9D;YACD,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,cAAc,EAAE,UAAU,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9B,GAAG,OAAO,CAAC,MAAM;gBACjB,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,qDAAqD,EAAE;aACjI;YACD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;SAC9B,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ import type { SmartfetchProvider } from "../provider-types.js";
2
+ export declare const ppomppuProvider: SmartfetchProvider;
@@ -0,0 +1,289 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { parseHTML } from "linkedom";
3
+ import { dedupeUrls, extractAnchorHrefs, extractUrls, stripTags } from "../../shared.js";
4
+ import { BrowserSessionToolError, looksBotBlockedContent } from "../../browser-session.js";
5
+ function identity(url) {
6
+ try {
7
+ const parsed = new URL(url);
8
+ if (parsed.searchParams.getAll("id").length !== 1 || parsed.searchParams.getAll("no").length !== 1
9
+ || Array.from(parsed.searchParams.keys()).some(key => /^(?:id|no)\[/.test(key)))
10
+ return null;
11
+ const board = parsed.searchParams.get("id") || "";
12
+ const no = parsed.searchParams.get("no") || "";
13
+ return ["www.ppomppu.co.kr", "ppomppu.co.kr"].includes(parsed.hostname)
14
+ && parsed.pathname === "/zboard/view.php" && board && /^[1-9]\d*$/.test(no) ? { board, no } : null;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ function samePost(url, expected) {
21
+ const actual = identity(url);
22
+ return actual?.board === expected.board && actual.no === expected.no;
23
+ }
24
+ function uniqueOutboundLinks(links, url) {
25
+ const expected = identity(url);
26
+ const unique = dedupeUrls(links);
27
+ if (!expected)
28
+ return unique;
29
+ const direct = new Set(unique);
30
+ return unique.filter(link => {
31
+ try {
32
+ const parsed = new URL(link);
33
+ if (parsed.hostname !== "s.ppomppu.co.kr" || parsed.protocol !== "https:" || parsed.pathname !== "/"
34
+ || parsed.searchParams.getAll("idno").length !== 1 || parsed.searchParams.get("idno") !== `${expected.board}_${expected.no}`
35
+ || parsed.searchParams.getAll("target").length !== 1 || parsed.searchParams.getAll("encode").length !== 1
36
+ || parsed.searchParams.get("encode") !== "on")
37
+ return true;
38
+ const raw = /(?:^|&)target=([^&]*)/.exec(parsed.search.slice(1))?.[1];
39
+ if (!raw || raw.length > 4096)
40
+ return true;
41
+ const encoded = decodeURIComponent(raw);
42
+ const decoded = Buffer.from(encoded, "base64").toString("utf8");
43
+ if (Buffer.from(decoded, "utf8").toString("base64") !== encoded)
44
+ return true;
45
+ const destination = new URL(decoded);
46
+ return !(["http:", "https:"].includes(destination.protocol) && direct.has(decoded));
47
+ }
48
+ catch {
49
+ return true;
50
+ }
51
+ });
52
+ }
53
+ const userContent = '.board-contents, [id^="commentContent_"], textarea, template, [contenteditable]:not([contenteditable="false"]), [role="textbox"]';
54
+ function stripGeneratedPreviewThumbnails(root) {
55
+ for (const preview of root.querySelectorAll(".scrap_bx .scrap_img[style]"))
56
+ preview.removeAttribute("style");
57
+ }
58
+ function isHidden(node) {
59
+ return node.getAttribute("hidden") !== null || node.getAttribute("aria-hidden") === "true"
60
+ || /(?:^|;)\s*(?:display\s*:\s*none|visibility\s*:\s*(?:hidden|collapse))\s*(?:!important\s*)?(?:;|$)/i.test(node.getAttribute("style") || "");
61
+ }
62
+ function stripHiddenDescendants(root) {
63
+ for (const node of root.querySelectorAll('[hidden], [aria-hidden="true"], [style]'))
64
+ if (isHidden(node))
65
+ node.remove();
66
+ }
67
+ function parsePost(html, url) {
68
+ const isDecorativeIcon = (src) => {
69
+ try {
70
+ const image = new URL(src, url);
71
+ return /^(?:www\.|cdn\d+\.)?ppomppu\.co\.kr$/.test(image.hostname) && image.pathname === "/images/icon_expand_img.png";
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ };
77
+ const { document } = parseHTML(html);
78
+ const heads = Array.from(document.querySelectorAll('[id="topTitle"]')).filter(node => !node.closest(`${userContent}, #quote`));
79
+ const heading = heads.length === 1 ? heads[0]?.querySelector("h1") : null;
80
+ const totals = Array.from(heading?.querySelectorAll('[id="comment"]') || []).filter(node => node.parentElement === heading);
81
+ const counts = totals.map(node => {
82
+ const value = stripTags(node.innerHTML);
83
+ return /^(?:\d+|\d{1,3}(?:,\d{3})+)$/.test(value) ? Number(value.replace(/,/g, "")) : null;
84
+ });
85
+ const firstCount = counts[0] ?? null;
86
+ const declared = firstCount !== null && Number.isSafeInteger(firstCount) && counts.every(value => value === firstCount) ? firstCount : null;
87
+ for (const count of totals)
88
+ count.remove();
89
+ const title = stripTags(heading?.innerHTML || "");
90
+ const bodies = Array.from(document.querySelectorAll(".board-contents")).filter(node => !isHidden(node) && !node.closest('[hidden], [aria-hidden="true"]') && !node.parentElement?.closest(`${userContent}, #quote`));
91
+ const body = bodies.length === 1 ? bodies[0] : null;
92
+ for (const node of body?.querySelectorAll("script, style, noscript, template, textarea") || [])
93
+ node.remove();
94
+ if (body)
95
+ stripHiddenDescendants(body);
96
+ for (const image of body?.querySelectorAll("img[src]") || [])
97
+ if (isDecorativeIcon(image.getAttribute("src") || ""))
98
+ image.remove();
99
+ if (body)
100
+ stripGeneratedPreviewThumbnails(body);
101
+ const bodyHtml = body?.innerHTML || "";
102
+ const text = stripTags(bodyHtml);
103
+ const quotes = Array.from(document.querySelectorAll('[id="quote"]')).filter(node => !node.closest(userContent) && !node.parentElement?.closest('[id="quote"]'));
104
+ const lists = quotes.length === 1 ? Array.from(quotes[0].querySelectorAll('[id="comment_list_area"]')).filter(node => node.parentElement === quotes[0]) : [];
105
+ const list = lists.length === 1 ? lists[0] : null;
106
+ const more = quotes.length === 1 ? Array.from(quotes[0].querySelectorAll('.next-cmt-btn-pc > a')).filter(node => !node.closest(userContent)) : [];
107
+ const pendingMore = more.some(node => !/display\s*:\s*none/i.test(node.parentElement?.getAttribute("style") || ""));
108
+ const nextMore = pendingMore && more.length === 1 && more[0].getAttribute("href") === "javascript:BbsCommentLoadMore.loadNext();";
109
+ const comments = [];
110
+ const assetHtml = [bodyHtml];
111
+ const links = [...extractUrls(bodyHtml), ...extractAnchorHrefs(bodyHtml)];
112
+ const seen = new Map();
113
+ const acceptedContainers = new Map();
114
+ let conflicting = false;
115
+ for (const row of list?.querySelectorAll(".comment_line") || []) {
116
+ if (row.closest('[id="comment_list_area"]') !== list || row.closest(userContent))
117
+ continue;
118
+ const container = row.parentElement;
119
+ const id = /^comment_([1-9]\d*)$/.exec(container?.id || "")?.[1];
120
+ const owner = container?.parentElement;
121
+ if (!id) {
122
+ if (owner?.parentElement === list && /^iC_[1-9]\d*$/.test(owner.id))
123
+ conflicting = true;
124
+ continue;
125
+ }
126
+ const parent = /^cC_([1-9]\d*)$/.exec(owner?.id || "")?.[1] || null;
127
+ if (parent ? !seen.has(parent) || owner?.parentElement !== acceptedContainers.get(parent) : owner?.id !== `iC_${id}` || owner.parentElement !== list)
128
+ continue;
129
+ const contents = Array.from(row.querySelectorAll(`[id="commentContent_${id}"]`)).filter(node => node.closest(".comment_line") === row);
130
+ const anchor = Array.from(row.querySelectorAll("a[name]")).find(node => node.getAttribute("name") === id && !node.closest(userContent) && node.closest(".comment_line") === row);
131
+ const copyIds = Array.from(row.querySelectorAll(".copyCmtUrlButton")).filter(node => !node.closest(userContent) && node.closest(".comment_line") === row).map(node => node.getAttribute("data-cno"));
132
+ if (contents.length !== 1 || !anchor || copyIds.some(value => value !== id)) {
133
+ conflicting = true;
134
+ continue;
135
+ }
136
+ const content = contents[0];
137
+ for (const node of content.querySelectorAll("script, style, noscript, template, textarea"))
138
+ node.remove();
139
+ stripHiddenDescendants(content);
140
+ for (const image of content.querySelectorAll("img[src]"))
141
+ if (isDecorativeIcon(image.getAttribute("src") || ""))
142
+ image.remove();
143
+ stripGeneratedPreviewThumbnails(content);
144
+ const commentText = stripTags(content.innerHTML);
145
+ const media = Array.from(content.querySelectorAll("img[src]")).flatMap(img => {
146
+ try {
147
+ const src = new URL(img.getAttribute("src") || "", url);
148
+ return ["http:", "https:"].includes(src.protocol) ? [src.toString()] : [];
149
+ }
150
+ catch {
151
+ return [];
152
+ }
153
+ });
154
+ if (!commentText && !media.length) {
155
+ conflicting = true;
156
+ continue;
157
+ }
158
+ const author = Array.from(row.querySelectorAll("b a")).find(node => !node.closest(userContent) && node.closest(".comment_line") === row)?.textContent?.trim() || "";
159
+ const createdAt = Array.from(row.querySelectorAll(".eng-day[title]")).find(node => !node.closest(userContent) && node.closest(".comment_line") === row)?.getAttribute("title") || null;
160
+ const signature = JSON.stringify([parent, author, commentText, media, createdAt]);
161
+ if (seen.has(id)) {
162
+ if (seen.get(id) !== signature)
163
+ conflicting = true;
164
+ continue;
165
+ }
166
+ seen.set(id, signature);
167
+ acceptedContainers.set(id, container);
168
+ comments.push({ id, parent_id: parent, author, text: commentText, created_at: createdAt, url: `${url.split("#")[0]}#${id}`, ...(media.length ? { media } : {}) });
169
+ assetHtml.push(content.innerHTML);
170
+ links.push(...extractUrls(content.innerHTML), ...extractAnchorHrefs(content.innerHTML));
171
+ }
172
+ return {
173
+ title, text, comments, links: uniqueOutboundLinks(links, url), assetHtml: assetHtml.join("\n"), declared,
174
+ ok: Boolean(title && (text || body?.querySelector("img, video"))),
175
+ nextMore,
176
+ complete: Boolean(list && !conflicting && !pendingMore && declared !== null && declared === comments.length),
177
+ };
178
+ }
179
+ async function readCommentMore(context, expected, baseline, deadline) {
180
+ const selector = '#quote .next-cmt-btn-pc > a[href="javascript:BbsCommentLoadMore.loadNext();"]';
181
+ let finalHtml = "";
182
+ let bytes = 0;
183
+ const session = await context.runBrowserSession({
184
+ ...context.browserSessionOptions, url: context.url, timeoutMs: Math.min(context.timeoutMs, deadline - Date.now()), maxAnchors: 100,
185
+ operatorTask: async (page, remaining) => {
186
+ await page.locator('#quote > #comment_list_area .comment_line').first().waitFor({ state: "visible", timeout: remaining() });
187
+ let prior = baseline;
188
+ for (let step = 0; step < 5; step++) {
189
+ remaining();
190
+ if (!samePost(page.url(), expected))
191
+ throw new Error("Comment continuation changed post identity");
192
+ const body = await page.mainFrame().evaluate(() => document.body?.innerText || "");
193
+ if (looksBotBlockedContent(body.slice(0, 4000)) || await page.locator('dialog[open]:visible, [role="dialog"]:visible, [aria-modal="true"]:visible, iframe[src*="recaptcha"]:visible, iframe[src*="hcaptcha"]:visible').count()) {
194
+ throw new BrowserSessionToolError({ category: "block", code: "operator_browser_user_required", message: "Comment reading requires user participation" });
195
+ }
196
+ const html = await page.content();
197
+ bytes += Buffer.byteLength(html);
198
+ if (bytes > 8 * 1024 * 1024)
199
+ throw new Error("Comment snapshots exceed the 8 MiB bound");
200
+ const parsed = parsePost(html, context.url);
201
+ if (!parsed.ok || parsed.title !== baseline.title || parsed.text !== baseline.text || parsed.declared !== baseline.declared
202
+ || prior.comments.some(row => !parsed.comments.some(other => JSON.stringify(other) === JSON.stringify(row)))
203
+ || parsed.comments.length < prior.comments.length)
204
+ throw new Error("Native comment evidence changed");
205
+ finalHtml = html;
206
+ if (!parsed.nextMore || step === 4)
207
+ break;
208
+ const next = page.locator(selector);
209
+ if (await next.count() !== 1 || !await next.isVisible())
210
+ throw new Error("Native comment-more control is ambiguous");
211
+ await next.click({ trial: true, timeout: remaining() });
212
+ if (!samePost(page.url(), expected) || await next.count() !== 1 || !await next.isVisible())
213
+ throw new Error("Native comment-more control changed before dispatch");
214
+ await next.click({ timeout: remaining() });
215
+ const changed = await page.waitForFunction(previous => document.querySelectorAll('#quote > #comment_list_area .comment_line').length > previous, parsed.comments.length, { polling: 25, timeout: remaining() });
216
+ await changed.dispose();
217
+ prior = parsed;
218
+ }
219
+ },
220
+ });
221
+ if (!session.ok)
222
+ throw new BrowserSessionToolError(session.error);
223
+ if (Date.now() >= deadline || !samePost(session.final_url, expected) || !finalHtml)
224
+ throw new Error("Comment continuation exceeded deadline or identity");
225
+ const recovered = parsePost(finalHtml, context.url);
226
+ if (!recovered.ok || recovered.title !== baseline.title || recovered.text !== baseline.text || recovered.declared !== baseline.declared
227
+ || baseline.comments.some(row => !recovered.comments.some(other => JSON.stringify(other) === JSON.stringify(row))) || recovered.comments.length <= baseline.comments.length)
228
+ throw new Error("Comment continuation did not advance");
229
+ return recovered;
230
+ }
231
+ export const ppomppuProvider = {
232
+ id: "ppomppu",
233
+ matches: (url, target) => target === "generic" && Boolean(identity(url)),
234
+ async normalize(context) {
235
+ const expected = identity(context.url);
236
+ const matched = expected && samePost(context.resolvedUrl, expected);
237
+ let parsed = parsePost(matched ? context.active.content : "", context.url);
238
+ let method = context.active.method;
239
+ const errors = [...context.errors];
240
+ if (!matched)
241
+ errors.push({ category: "parse_error", code: "ppomppu_identity_mismatch", message: "Retrieved page does not match the requested Ppomppu board/post identity" });
242
+ const deadline = context.deadlineAt ?? Date.now() + context.timeoutMs;
243
+ const remaining = Math.max(0, Math.min(context.timeoutMs, deadline - Date.now()));
244
+ const connected = context.browserSessionOptions?.cdpUrl && !context.browserSessionOptions.profileDir;
245
+ if (expected && parsed.ok && (parsed.declared || 0) > 0 && parsed.comments.length === 0 && context.runBrowserSession && connected && remaining >= 1000) {
246
+ try {
247
+ const session = await context.runBrowserSession({ ...context.browserSessionOptions, url: context.url, timeoutMs: remaining, maxAnchors: 100, waitForSelector: '#quote > #comment_list_area .comment_line [id^="commentContent_"]' });
248
+ if (Date.now() >= deadline)
249
+ errors.push({ category: "timeout", code: "ppomppu_comments_timeout", message: "Comment continuation exceeded the original retrieval deadline" });
250
+ else if (session.ok && samePost(session.final_url, expected)) {
251
+ const recovered = parsePost(session.html, context.url);
252
+ if (recovered.ok && recovered.comments.length > parsed.comments.length) {
253
+ parsed = recovered;
254
+ method = "ppomppu_browser_comments";
255
+ }
256
+ }
257
+ else if (!session.ok)
258
+ errors.push(session.error);
259
+ else
260
+ errors.push({ category: "parse_error", code: "ppomppu_identity_mismatch", message: "Comment continuation navigated to a different post" });
261
+ }
262
+ catch {
263
+ errors.push({ category: "unavailable", code: "ppomppu_comments_browser_failed", message: "Bounded comment continuation failed" });
264
+ }
265
+ }
266
+ if (expected && parsed.ok && parsed.nextMore && context.runBrowserSession && connected && deadline - Date.now() >= 1000) {
267
+ try {
268
+ parsed = await readCommentMore(context, expected, parsed, deadline);
269
+ method = "ppomppu_browser_comment_pages";
270
+ }
271
+ catch (error) {
272
+ if (error instanceof BrowserSessionToolError)
273
+ errors.push(error.toolError);
274
+ errors.push({ category: "unavailable", code: "ppomppu_comment_pages_incomplete", message: "Bounded native comment continuation failed; original evidence is preserved" });
275
+ }
276
+ }
277
+ if (!parsed.ok)
278
+ errors.push({ category: "parse_error", code: "ppomppu_parse_failed", message: "Could not parse the requested native title/body" });
279
+ else if (!parsed.complete)
280
+ errors.push({ category: "parse_error", code: "ppomppu_comments_incomplete", message: `Collected ${parsed.comments.length} comments; declared total ${parsed.declared ?? "unknown"}. Unloaded, hidden or unavailable comments are not claimed as retrieved.` });
281
+ return {
282
+ post: parsed.ok ? { url: context.url, title: parsed.title, text: parsed.text, status: "ok", comment_coverage: { declared_count: parsed.declared, collected_count: parsed.comments.length, complete: parsed.complete } } : null,
283
+ thread: [], comments: parsed.ok ? parsed.comments : [], outbound_links: parsed.ok ? parsed.links : [],
284
+ partial: !parsed.ok || !parsed.complete, errors, method,
285
+ assetHtml: parsed.ok ? parsed.assetHtml : "",
286
+ };
287
+ },
288
+ };
289
+ //# sourceMappingURL=ppomppu.js.map