smart-web-mcp 1.6.26 → 1.7.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 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
+ * Pin the immutable release directory before scanning, copying and linking dependencies for a hot-loaded MCP request. An atomic `current` switch during snapshot creation can no longer mix implementation and dependency versions; verified by a controlled mid-snapshot swap regression.
9
+ * Allow the existing `smart-web-dev` stdio entrypoint to read implementation modules from a managed absolute release-dist path. An atomic `current` symlink switch refreshes fetch/search/crawl modules between calls without replacing the host MCP connection; retained snapshots and version-pinned dependency links protect in-flight reads. Tool registration, browser actions and verticals still require a host MCP reconnect for changed behavior or schemas.
8
10
  * Authenticate to the MCP Registry only after the exact npm version becomes visible. Metadata validation stays unauthenticated; the short-lived OIDC credential no longer ages during propagation and can be obtained afresh on an immutable-tag recovery run.
9
11
  * Recover a requested numeric comment permalink when an owned discussion row keeps its canonical ID on a nested element rather than the outer render wrapper. Require one unambiguous inner identity and its own body; retain parent links and declared-versus-delivered coverage. A measured public thread changes from zero structured comments to four source-bound replies through approved-browser continuation; absent and ambiguous IDs remain partial.
10
12
  * Treat a numeric generic `#comment-`, `#discussioncomment-`, `#post-` or Lobsters-style `#c_` reply permalink as a request for that exact source-bound comment even without a separate comments flag. Missing rows remain partial; ordinary section fragments and non-generic providers keep their existing behavior.
@@ -437,6 +439,20 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
437
439
  - Korean public API helpers now validate outbound URLs and redirects before fetching, blocking localhost, private, and reserved targets unless `network.allowPrivateHosts` is explicitly enabled.
438
440
  - 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.
439
441
 
442
+ ## [1.7.1](https://github.com/jojo-labs/smart-web/compare/v1.7.0...v1.7.1) (2026-10-04)
443
+
444
+
445
+ ### Bug Fixes
446
+
447
+ * pin atomic MCP release snapshots to one immutable root ([#796](https://github.com/jojo-labs/smart-web/issues/796)) ([795bbc4](https://github.com/jojo-labs/smart-web/commit/795bbc4a1943c41910952a87d423f752e3f811c5))
448
+
449
+ ## [1.7.0](https://github.com/jojo-labs/smart-web/compare/v1.6.26...v1.7.0) (2026-10-04)
450
+
451
+
452
+ ### Features
453
+
454
+ * hot-load staged smart-web release modules in active MCP sessions ([#792](https://github.com/jojo-labs/smart-web/issues/792)) ([8bda3a6](https://github.com/jojo-labs/smart-web/commit/8bda3a66a3c4259447aceb5b900c879ecb376a5c))
455
+
440
456
  ## [1.6.26](https://github.com/jojo-labs/smart-web/compare/v1.6.25...v1.6.26) (2026-10-04)
441
457
 
442
458
 
@@ -1,7 +1,9 @@
1
1
  import type { SmartWebRuntime } from "./mcp-server.js";
2
2
  type LoaderOptions = {
3
3
  importer?: (href: string) => Promise<Record<string, unknown>>;
4
+ beforeSnapshot?: () => Promise<void>;
4
5
  };
6
+ export declare function resolveReleaseRuntimeDir(installedDistDir: string, env?: NodeJS.ProcessEnv): string;
5
7
  export declare function createVersionedModuleLoader(baseDir: string, options?: LoaderOptions): (relativePath: string) => Promise<Record<string, unknown>>;
6
8
  export declare function createReloadingRuntime(baseDir: string): SmartWebRuntime;
7
9
  export {};
@@ -1,7 +1,15 @@
1
- import { copyFile, mkdtemp, mkdir, readdir, rm, stat, symlink, writeFile } from "node:fs/promises";
1
+ import { copyFile, mkdtemp, mkdir, readdir, realpath, stat, symlink, writeFile } from "node:fs/promises";
2
2
  import { join, relative, resolve, dirname } from "node:path";
3
3
  import { pathToFileURL } from "node:url";
4
4
  import { resolveSmartWebTempRoot } from "./runtime-temp.js";
5
+ export function resolveReleaseRuntimeDir(installedDistDir, env = process.env) {
6
+ const managed = env.SMART_WEB_RUNTIME_DIST_DIR;
7
+ if (!managed)
8
+ return installedDistDir;
9
+ if (!managed.startsWith("/"))
10
+ throw new Error("SMART_WEB_RUNTIME_DIST_DIR must be an absolute path");
11
+ return managed;
12
+ }
5
13
  async function collectRuntimeFiles(rootDir, currentDir = rootDir) {
6
14
  const entries = await readdir(currentDir, { withFileTypes: true });
7
15
  const files = [];
@@ -39,9 +47,8 @@ async function createSnapshot(rootDir, files) {
39
47
  const projectRoot = resolve(rootDir, "..");
40
48
  const dependencyRoots = ["node_modules"];
41
49
  for (const dependencyRoot of dependencyRoots) {
42
- const source = resolve(projectRoot, dependencyRoot);
43
50
  try {
44
- await stat(source);
51
+ const source = await realpath(resolve(projectRoot, dependencyRoot));
45
52
  await symlink(source, resolve(snapshotDir, dependencyRoot), "junction");
46
53
  }
47
54
  catch {
@@ -54,12 +61,16 @@ export function createVersionedModuleLoader(baseDir, options) {
54
61
  const importer = options?.importer || (async (href) => import(href));
55
62
  let snapshot;
56
63
  return async function load(relativePath) {
57
- const files = await collectRuntimeFiles(baseDir);
58
- const fingerprint = await fingerprintRuntime(baseDir, files);
64
+ // Resolve the immutable release before scanning: the current symlink may
65
+ // switch while the snapshot copies files and links its dependency tree.
66
+ const releaseDir = await realpath(baseDir);
67
+ const files = await collectRuntimeFiles(releaseDir);
68
+ const fingerprint = `${releaseDir}|${await fingerprintRuntime(releaseDir, files)}`;
59
69
  if (!snapshot || snapshot.fingerprint !== fingerprint) {
60
- const dir = await createSnapshot(baseDir, files);
61
- if (snapshot)
62
- await rm(snapshot.dir, { recursive: true, force: true }).catch(() => { });
70
+ await options?.beforeSnapshot?.();
71
+ const dir = await createSnapshot(releaseDir, files);
72
+ // A previous request may still import siblings from its captured module tree.
73
+ // Keep immutable snapshots until the process exits; the managed temp root prunes them.
63
74
  snapshot = { fingerprint, dir, modules: new Map() };
64
75
  }
65
76
  const modulePath = resolve(snapshot.dir, relativePath);
@@ -1 +1 @@
1
- {"version":3,"file":"dev-runtime.js","sourceRoot":"","sources":["../src/dev-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-runtime.js","sourceRoot":"","sources":["../src/dev-runtime.ts"],"names":[],"mappings":"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"}
package/dist/dev.js CHANGED
@@ -3,14 +3,14 @@ import { readFileSync } from "node:fs";
3
3
  import { dirname } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
- import { createReloadingRuntime } from "./dev-runtime.js";
6
+ import { createReloadingRuntime, resolveReleaseRuntimeDir } from "./dev-runtime.js";
7
7
  import { createSmartWebServer } from "./mcp-server.js";
8
8
  import { sanitizeSmartWebTempEnv } from "./runtime-temp.js";
9
9
  const packageVersion = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version;
10
10
  const distDir = dirname(fileURLToPath(import.meta.url));
11
11
  sanitizeSmartWebTempEnv();
12
12
  async function main() {
13
- const runtime = createReloadingRuntime(distDir);
13
+ const runtime = createReloadingRuntime(resolveReleaseRuntimeDir(distDir));
14
14
  const server = createSmartWebServer(`${packageVersion}-dev`, runtime);
15
15
  const transport = new StdioServerTransport();
16
16
  await server.connect(transport);
package/dist/dev.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAiB,CAAA;AACtH,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACvD,uBAAuB,EAAE,CAAA;AAEzB,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,cAAc,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAiB,CAAA;AACtH,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACvD,uBAAuB,EAAE,CAAA;AAEzB,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,sBAAsB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,cAAc,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
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.6.26",
4
+ "version": "1.7.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",