smart-web-mcp 0.31.0 → 0.33.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/CHANGELOG.md CHANGED
@@ -46,6 +46,7 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
46
46
  - Added `--json-file <path>` and an npm alias for provider benchmark JSON artifacts without stdout capture.
47
47
  - Added `--gap-file <path>` and `benchmark:providers:gaps` for compact provider evidence gap JSON artifacts.
48
48
  - Added `benchmark:providers:live:no-secret:gaps` for refreshing the compact all-no-secret live provider evidence gap artifact without archiving the full Markdown/JSON report.
49
+ - Added `--compare-external` and `benchmark:providers:compare` for no-secret/local comparative provider records, including optional Crawl4AI command skip diagnostics when `crawl4ai` is absent.
49
50
  - Added a provider benchmark report archive index in `reports/README.md` that points maintenance jobs at the current no-secret artifacts and labels older cumulative reports as historical calibration snapshots.
50
51
  - Added fixture skipped-case lane/reason metadata to provider benchmark live-vs-fixture and evidence-gap artifacts so credential-gated fixtures are not misread as absent fixtures.
51
52
  - Added `scripts/partial-handoff-watchdog.mjs` and `npm run watchdog:partial-handoff` to run a no-secret drift watchdog over representative partial/blocked/handoff outputs and fail on chrome URL, script, or style-shell leakage.
@@ -53,12 +54,14 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
53
54
  - Added `expectPartialHandoff` checks to the partial/handoff watchdog so representative authwall/unavailable cases fail when they silently become non-partial/skipped instead of only checking already-suspect outputs.
54
55
  - Added a compact text-size ceiling to the partial/handoff watchdog so authwall/unavailable drift fails when `content[0].text` becomes verbose even without chrome/script leakage.
55
56
  - Added `scripts/no-secret-surface-watchdog.mjs` and `npm run watchdog:no-secret` as a deterministic no-secret current-surface gate for empty provider gaps, hosted API-key provider markers, and the partial/handoff compact-output ceiling.
57
+ - Added `npm run watchdog:no-secret:live` and a scheduled/manual GitHub Actions workflow for no-secret live regression smokes that refresh the compact gap artifact and fail on non-empty provider gaps without secrets.
56
58
  - Added BOJ unavailable/shutdown output to the partial/handoff watchdog representative set.
57
59
  - Added LinkedIn profile authwall output to the partial/handoff watchdog representative set.
58
60
  - Added Naver Blog unavailable/deleted post output to the partial/handoff watchdog representative set.
59
61
  - Added Threads unavailable/join-login output to the partial/handoff watchdog representative set.
60
62
  - Added Instagram unavailable/login output to the partial/handoff watchdog representative set.
61
63
  - Added X/Twitter and Reddit unavailable/authwall outputs to the partial/handoff watchdog representative set.
64
+ - Added no-secret Kakao Map place-panel fallback hydration for weak static place shells with stable title, category, address, phone, website, and coordinates when the public place ID is available.
62
65
  - Added no-secret X/Twitter profile/timeline syndication handling with explicit blocked/rate-limited guidance when the public endpoint is unavailable.
63
66
  - Added deterministic and gated live provider benchmark coverage for public X/Twitter post retrieval, including `--allow-x-twitter-live-smoke` and `benchmark:providers:live:x-twitter`.
64
67
  - Added DCInside unavailable/deleted post output to the partial/handoff watchdog representative set.
@@ -145,6 +148,25 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
145
148
  - Korean public API helpers now validate outbound URLs and redirects before fetching, blocking localhost, private, and reserved targets unless `network.allowPrivateHosts` is explicitly enabled.
146
149
  - 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.
147
150
 
151
+ ## [0.33.0](https://github.com/jojo-labs/smart-web/compare/v0.32.0...v0.33.0) (2026-06-22)
152
+
153
+
154
+ ### Features
155
+
156
+ * **benchmark:** add no-secret comparison ([#373](https://github.com/jojo-labs/smart-web/issues/373)) ([90a26c9](https://github.com/jojo-labs/smart-web/commit/90a26c9921dfa2ce75df69dbf36fc33eb26595f8))
157
+
158
+
159
+ ### CI / Release
160
+
161
+ * add no-secret live watchdog ([#372](https://github.com/jojo-labs/smart-web/issues/372)) ([a8c0975](https://github.com/jojo-labs/smart-web/commit/a8c09759f88d76ec6709d56a64ab7a3b1508b929))
162
+
163
+ ## [0.32.0](https://github.com/jojo-labs/smart-web/compare/v0.31.0...v0.32.0) (2026-06-22)
164
+
165
+
166
+ ### Features
167
+
168
+ * **kakao-map:** add panel fallback ([#371](https://github.com/jojo-labs/smart-web/issues/371)) ([23fbd7f](https://github.com/jojo-labs/smart-web/commit/23fbd7f6cf37aafbf90b805bf345c423803716a2))
169
+
148
170
  ## [0.31.0](https://github.com/jojo-labs/smart-web/compare/v0.30.1...v0.31.0) (2026-06-22)
149
171
 
150
172
 
package/README.md CHANGED
@@ -477,6 +477,7 @@ Use the provider benchmark when deciding whether to build, wrap, or replace retr
477
477
  ```bash
478
478
  npm run benchmark:providers
479
479
  npm run benchmark:providers:measure
480
+ npm run benchmark:providers:compare
480
481
  npm run --silent benchmark:providers:json
481
482
  npm run benchmark:providers:json-file
482
483
  npm run benchmark:providers:report
@@ -493,6 +494,7 @@ npm run benchmark:providers:live:naver-cafe
493
494
  npm run benchmark:providers:live:x-twitter
494
495
  npm run benchmark:providers:live:no-secret
495
496
  npm run benchmark:providers:live:no-secret:gaps
497
+ npm run watchdog:no-secret:live
496
498
  npm run benchmark:providers:trend
497
499
  npm run benchmark:smartsearch
498
500
  npm run --silent benchmark:smartsearch:json
@@ -502,6 +504,8 @@ npm run watchdog:partial-handoff
502
504
 
503
505
  The default report is availability-only and safe for CI. `--run-measurements` (`npm run benchmark:providers:measure`) adds deterministic fixture records for available local/core and optional no-key lanes: success, useful character counts, projected/text character counts, useful-to-projected and useful-to-text yield ratios, latency, extractor/provider id, confidence, partial status, error class, lane label/family/category metadata, provider-family/category lane-status rollups, surface coverage, and recommendation sections grouped by lane, case, and surface.
504
506
 
507
+ Use `--compare-external` (`npm run benchmark:providers:compare`) to add an `externalComparisons` section that compares current smart-web fixture evidence against optional no-secret/local candidates. The comparison includes the local Crawl4AI command lane, the public Jina Reader relay fixture, and available direct/Playwright baselines. If `crawl4ai` is not installed, the Crawl4AI row is `skipped` with `action: "install-local-prerequisite"` and `prerequisite.command: "crawl4ai"`; this is an expected setup signal, not a benchmark failure or required dependency.
508
+
505
509
  Reports carry the `provider-benchmark.v1` schema version plus non-fatal git and runtime metadata so archived JSON, Markdown, and NDJSON trend artifacts are parseable, traceable, and comparable as the harness evolves. Markdown, text, JSON, and NDJSON outputs include aggregate fixture yield averages, compact yield rollups by provider family/category/lane, and a best-current-evidence surface table that ranks measured/skipped candidates so review jobs can compare token efficiency and build-vs-wrap posture between core, browser, relay, and specialist paths without reprocessing the full measurement table.
506
510
 
507
511
  Measurement artifacts also include a live-readiness manifest listing each lane's env/command/settings prerequisites, a deterministic fixture smoke, a safe MCP live-smoke candidate, and surfaces that still lack live evidence. `--run-live-smokes` (`npm run benchmark:providers:live`) is an explicit gated mode that runs only no-secret, core-surface live checks for static articles, long docs/Wikipedia, Hacker News, and docs export; optional no-secret lanes remain gated until explicitly allowlisted: `--allow-jina-live-smoke` (`npm run benchmark:providers:live:jina`) exercises the public Jina Reader relay with a secret-stripped settings file, `--allow-competitive-programming-live-smoke` (`npm run benchmark:providers:live:cp`) adds a public BOJ/Codeforces representative smoke for the competitive-programming specialist surface, `--allow-browser-live-smoke` (`npm run benchmark:providers:live:browser`) runs a Playwright `--force-dynamic` smoke for the JS-rendered article surface only when the local browser lane is available, `--allow-youtube-live-smoke` (`npm run benchmark:providers:live:youtube`) adds the public YouTube seed-lane representative smoke, `--allow-blocked-authwall-live-smoke` (`npm run benchmark:providers:live:blocked`) adds a deterministic HTTP Basic Auth challenge smoke that treats honest blocked/error/handoff signals as positive calibration without private credentials, `--allow-naver-blog-live-smoke` (`npm run benchmark:providers:live:naver-blog`) adds a stable public Naver Blog representative smoke for Korean specialist-lane calibration, `--allow-naver-map-live-smoke` (`npm run benchmark:providers:live:naver-map`) adds a stable public Naver Map place smoke with browser-preflight diagnostics, `--allow-naver-cafe-live-smoke` (`npm run benchmark:providers:live:naver-cafe`) adds a stable public Naver Cafe shared-link smoke that treats useful no-credential partial output as honest calibration, and `--allow-x-twitter-live-smoke` (`npm run benchmark:providers:live:x-twitter`) adds a public X/Twitter post smoke that keeps no-secret social-provider drift visible without private cookies. `--allow-all-no-secret-live-smokes` (`npm run benchmark:providers:live:no-secret`) enables every no-secret gate in one run; hosted API-key search lanes are excluded from the benchmark surface by product policy.
@@ -518,6 +522,8 @@ See `reports/README.md` for the curated report archive index. It identifies `pro
518
522
 
519
523
  `npm run watchdog:no-secret` is the deterministic current-surface gate for no-secret maintenance. It fails when `reports/provider-benchmark-live-no-secret-gaps.json` contains current gaps, when runtime/docs/examples/scripts reintroduce hosted API-key provider markers for Exa, Tavily, Firecrawl, Browserless, or Brave Search API, or when the partial/handoff watchdog no longer has a compact text ceiling. It intentionally ignores historical `CHANGELOG.md` entries and archived `reports/` output, and does not run live network smokes.
520
524
 
525
+ `npm run watchdog:no-secret:live` is the live regression gate for no-secret maintenance. It first refreshes `reports/provider-benchmark-live-no-secret-gaps.json` with `npm run benchmark:providers:live:no-secret:gaps`, then runs `npm run watchdog:no-secret` so non-empty live provider gaps fail locally or in CI. The scheduled/manual GitHub Actions workflow `.github/workflows/no-secret-live-watchdog.yml` runs the same alias weekly with read-only permissions, no secrets, and a short-retention gap artifact.
526
+
521
527
  `npm run watchdog:partial-handoff` builds the package and runs a compact no-secret drift watchdog over representative partial/blocked/handoff `smartfetch` outputs (httpbin authwall, LinkedIn profile authwall, Naver Blog unavailable/deleted posts, Threads unavailable/join-login output, DCInside unavailable/deleted posts, Telegram missing/private posts, a non-existent Wikidocs article, Naver Cafe, Naver Map search, and BOJ unavailable/shutdown output). It exits non-zero when expected handoff cases are silently reclassified as non-partial, when partial/handoff `content[0].text` grows beyond the compact watchdog ceiling, or when compact text or structured links/assets leak chrome URLs, script globals, or style-shell tokens, and prints a `partial-handoff-watchdog.v1` JSON report without raw page dumps or credentials. For runner artifacts without JSON stdout, run `node scripts/partial-handoff-watchdog.mjs --report-file <path>` after `npm run build`; the command keeps stdout human-readable and writes the full JSON report to the requested path. Fixture cases can set `expectPartialHandoff: true` to make classifier drift fail even if the output would otherwise be skipped.
522
528
 
523
529
  ## Quick verification
@@ -1,5 +1,18 @@
1
1
  import { absolutizeUrl, dedupeUrls, extractMetaDescription, extractMetaName, extractMetaProperty, extractTitleFromHtml, extractUrls, } from "../../shared.js";
2
2
  import { extractCount, extractFloat, firstLine, htmlToLines, lineAfter, normalizeSpace, sectionAfter } from "./map-utils.js";
3
+ const KAKAO_PLACE_PANEL_URL_BASE = "https://place-api.map.kakao.com/places/panel3";
4
+ const KAKAO_PLACE_PANEL_HEADERS = {
5
+ accept: "application/json, text/plain, */*",
6
+ "accept-language": "ko,en-US;q=0.9,en;q=0.8",
7
+ "user-agent": "Mozilla/5.0 (compatible; smart-web/kakao-map)",
8
+ appVersion: "6.6.0",
9
+ origin: "https://place.map.kakao.com",
10
+ pf: "PC",
11
+ referer: "https://place.map.kakao.com/",
12
+ "sec-fetch-dest": "empty",
13
+ "sec-fetch-mode": "cors",
14
+ "sec-fetch-site": "same-site",
15
+ };
3
16
  function cleanTitle(value) {
4
17
  return normalizeSpace(value).replace(/\s*\|\s*카카오맵$/u, "");
5
18
  }
@@ -35,8 +48,62 @@ function parseCoordinates(html) {
35
48
  ? { latitude, longitude }
36
49
  : {};
37
50
  }
51
+ function asRecord(value) {
52
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
53
+ }
54
+ function asText(value) {
55
+ return typeof value === "string" || typeof value === "number" ? normalizeSpace(String(value)) : "";
56
+ }
57
+ function asFiniteNumber(value) {
58
+ const parsed = Number(String(value ?? "").replace(/,/g, ""));
59
+ return Number.isFinite(parsed) ? parsed : undefined;
60
+ }
61
+ function firstPanelPhone(value) {
62
+ if (!Array.isArray(value))
63
+ return "";
64
+ for (const item of value) {
65
+ const record = asRecord(item);
66
+ const phone = cleanPhone(asText(record.tel) || asText(record.phone) || asText(record.number));
67
+ if (phone)
68
+ return phone;
69
+ }
70
+ return "";
71
+ }
72
+ function normalizeKakaoPlacePanel(payload) {
73
+ const root = asRecord(payload);
74
+ const summary = asRecord(root.summary || root.basicInfo);
75
+ const category = asRecord(summary.category);
76
+ const address = asRecord(summary.address);
77
+ const point = asRecord(summary.point);
78
+ const latitude = asFiniteNumber(point.lat || summary.latitude || summary.y);
79
+ const longitude = asFiniteNumber(point.lon || summary.longitude || summary.x);
80
+ const panel = {
81
+ title: asText(summary.name || summary.placenamefull || summary.placeName),
82
+ category: asText(category.name3 || category.name2 || category.name1 || summary.categoryName),
83
+ address: cleanAddress(asText(address.disp || address.address || summary.addressName || summary.roadAddressName)),
84
+ phone: firstPanelPhone(summary.phone_numbers) || cleanPhone(asText(summary.phone)),
85
+ website: asText(summary.homepage || summary.homepageUrl || summary.url),
86
+ ...(latitude !== undefined ? { latitude } : {}),
87
+ ...(longitude !== undefined ? { longitude } : {}),
88
+ };
89
+ return panel.title || panel.address || panel.phone || latitude !== undefined || longitude !== undefined ? panel : null;
90
+ }
91
+ async function fetchPlacePanel(placeId) {
92
+ if (!placeId || typeof fetch !== "function")
93
+ return null;
94
+ try {
95
+ const response = await fetch(`${KAKAO_PLACE_PANEL_URL_BASE}/${placeId}`, { headers: KAKAO_PLACE_PANEL_HEADERS });
96
+ if (!response.ok)
97
+ return null;
98
+ return normalizeKakaoPlacePanel(await response.json());
99
+ }
100
+ catch {
101
+ return null;
102
+ }
103
+ }
38
104
  async function hydratePlace(context, placeId, currentLines) {
39
- if (!placeId || !context.runBrowserSession) {
105
+ const hasPlaceContent = currentLines.includes("장소명") && currentLines.includes("주소");
106
+ if (hasPlaceContent) {
40
107
  return {
41
108
  html: context.active.content,
42
109
  links: context.active.links,
@@ -45,8 +112,18 @@ async function hydratePlace(context, placeId, currentLines) {
45
112
  hydrated: false,
46
113
  };
47
114
  }
48
- const hasPlaceContent = currentLines.includes("장소명") && currentLines.includes("주소");
49
- if (hasPlaceContent) {
115
+ if (!placeId || !context.runBrowserSession) {
116
+ const panel = placeId ? await fetchPlacePanel(placeId) : null;
117
+ if (panel) {
118
+ return {
119
+ html: context.active.content,
120
+ links: context.active.links,
121
+ method: "kakao_map_place_panel",
122
+ resolvedUrl: canonicalPlaceUrl(placeId) || context.resolvedUrl,
123
+ hydrated: true,
124
+ panel,
125
+ };
126
+ }
50
127
  return {
51
128
  html: context.active.content,
52
129
  links: context.active.links,
@@ -59,6 +136,17 @@ async function hydratePlace(context, placeId, currentLines) {
59
136
  const result = await context.runBrowserSession({ url: targetUrl, timeoutMs: context.timeoutMs, waitUntil: "networkidle" });
60
137
  if (!result.ok) {
61
138
  context.errors.push(result.error);
139
+ const panel = await fetchPlacePanel(placeId);
140
+ if (panel) {
141
+ return {
142
+ html: context.active.content,
143
+ links: context.active.links,
144
+ method: "kakao_map_place_panel",
145
+ resolvedUrl: targetUrl,
146
+ hydrated: true,
147
+ panel,
148
+ };
149
+ }
62
150
  return {
63
151
  html: context.active.content,
64
152
  links: context.active.links,
@@ -84,16 +172,17 @@ export const kakaoMapProvider = {
84
172
  const html = hydrated.html;
85
173
  const lines = htmlToLines(html);
86
174
  const joined = lines.join(" ");
175
+ const panel = hydrated.panel;
87
176
  const canonicalUrl = extractMetaProperty(html, "og:url") || hydrated.resolvedUrl || canonicalPlaceUrl(placeId) || context.resolvedUrl || context.url;
88
- const title = cleanTitle(lineAfter(lines, /^장소명$/u) || extractMetaProperty(html, "og:title") || extractTitleFromHtml(html));
89
- const category = lineAfter(lines, /^장소 카테고리$/u);
177
+ const title = cleanTitle(lineAfter(lines, /^장소명$/u) || panel?.title || extractMetaProperty(html, "og:title") || extractTitleFromHtml(html));
178
+ const category = lineAfter(lines, /^장소 카테고리$/u) || panel?.category || "";
90
179
  const rating = extractFloat(joined, /별점\s*([0-9.]+)/u);
91
180
  const reviewCount = extractCount(joined, /후기\s*([0-9][0-9,]*)\s*개?/u);
92
181
  const hours = firstLine(lines, /영업\s*(?:중|종료|전)|24시간/u);
93
- const website = lineAfter(lines, /^URL$/u);
94
- const address = cleanAddress(lineAfter(lines, /^주소$/u));
182
+ const website = lineAfter(lines, /^URL$/u) || panel?.website || "";
183
+ const address = cleanAddress(lineAfter(lines, /^주소$/u) || panel?.address || "");
95
184
  const transit = lineAfter(lines, /^출구정보$/u);
96
- const phone = cleanPhone(lineAfter(lines, /^전화$/u) || (joined.match(/전화\s*(\d{2,4}-\d{3,4}-\d{4})/u)?.[0] || ""));
185
+ const phone = cleanPhone(lineAfter(lines, /^전화$/u) || panel?.phone || (joined.match(/전화\s*(\d{2,4}-\d{3,4}-\d{4})/u)?.[0] || ""));
97
186
  const facilities = sectionAfter(lines, /^시설정보$/u, [/^태그$/u, /^시간별 방문자 데이터/u, /^전체 후기\/평점$/u, /^후기 목록$/u, /^이 지역 친구공유 랭킹$/u], 8);
98
187
  const tags = sectionAfter(lines, /^태그$/u, [/^시간별 방문자 데이터/u, /^전체 후기\/평점$/u, /^후기 목록$/u, /^이 지역 친구공유 랭킹$/u], 6)
99
188
  .flatMap((line) => line.match(/#[^\s#]+/gu) || []);
@@ -134,6 +223,8 @@ export const kakaoMapProvider = {
134
223
  ...(tags.length > 0 ? { tags } : {}),
135
224
  ...(image ? { image } : {}),
136
225
  ...parseCoordinates(html),
226
+ ...(panel?.latitude !== undefined ? { latitude: panel.latitude } : {}),
227
+ ...(panel?.longitude !== undefined ? { longitude: panel.longitude } : {}),
137
228
  status: title || address || phone ? "ok" : "blocked_or_unavailable",
138
229
  };
139
230
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"kakao-map.js","sourceRoot":"","sources":["../../../src/smartfetch/providers/kakao-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kakao-map.js","sourceRoot":"","sources":["../../../src/smartfetch/providers/kakao-map.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.31.0",
4
+ "version": "0.33.0",
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",
@@ -37,6 +37,7 @@
37
37
  "build": "rm -rf dist && tsc -p tsconfig.json && node scripts/ensure-bin-executable.mjs",
38
38
  "benchmark:providers": "node scripts/provider-benchmark.mjs",
39
39
  "benchmark:providers:measure": "node scripts/provider-benchmark.mjs --run-measurements",
40
+ "benchmark:providers:compare": "node scripts/provider-benchmark.mjs --run-measurements --compare-external",
40
41
  "benchmark:providers:json": "node scripts/provider-benchmark.mjs --run-measurements --json",
41
42
  "benchmark:providers:json-file": "node scripts/provider-benchmark.mjs --run-measurements --json-file reports/provider-benchmark.json",
42
43
  "benchmark:providers:report": "node scripts/provider-benchmark.mjs --run-measurements --report-file reports/provider-benchmark.md",
@@ -56,6 +57,7 @@
56
57
  "benchmark:smartsearch": "node --import tsx scripts/smartsearch-quality-benchmark.mjs",
57
58
  "benchmark:smartsearch:json": "node --import tsx scripts/smartsearch-quality-benchmark.mjs --json",
58
59
  "watchdog:no-secret": "node scripts/no-secret-surface-watchdog.mjs --json",
60
+ "watchdog:no-secret:live": "npm run benchmark:providers:live:no-secret:gaps && npm run watchdog:no-secret",
59
61
  "watchdog:partial-handoff": "npm run build && node scripts/partial-handoff-watchdog.mjs --json",
60
62
  "benchmark:providers:trend": "node scripts/provider-benchmark.mjs --run-measurements --trend-file reports/provider-benchmark.ndjson",
61
63
  "changelog:generate": "node scripts/generate-changelog-entry.mjs",