sealclaw 2026.9.3 → 2026.9.4

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.
@@ -5,6 +5,7 @@ import { u as readConfigFileSnapshot } from "../io-BxiHiRkU.js";
5
5
  import { u as resolveStorePath } from "../paths-2ywAyPqE.js";
6
6
  import { n as isActiveKnowledgeIngestJob } from "../ingest-jobs-_ompHJg_.js";
7
7
  import { a as inside, c as readJson, d as BACKUP_FORMAT_VERSION, f as BACKUP_LIMITS, i as exists, l as safeRelative, n as checkSpace, o as privateDirectory, p as BACKUP_SCHEMA_VERSION, r as copyChecked, s as publishArchive, t as assertNoLinks, u as writeJson } from "../files-BygC9C9t.js";
8
+ import { fileURLToPath, pathToFileURL } from "node:url";
8
9
  import { createReadStream } from "node:fs";
9
10
  import os from "node:os";
10
11
  import path from "node:path";
@@ -199,7 +200,31 @@ function remapDataPaths(value, mappings, sourcePlatform = process.platform, targ
199
200
  */
200
201
  function remapTextPaths(text, mappings, sourcePlatform = process.platform, targetPlatform = process.platform) {
201
202
  if (!text || typeof text !== "string") return text;
202
- backupPath(sourcePlatform);
203
+ return text.split(/(file:\/\/[^\s"'<>`]+)/giu).map((part, index) => index % 2 === 0 ? remapPlainTextPaths(part, mappings, targetPlatform) : remapFileUrl(part, mappings, sourcePlatform, targetPlatform)).join("");
204
+ }
205
+ function remapFileUrl(text, mappings, sourcePlatform, targetPlatform) {
206
+ let end = text.length;
207
+ for (const [open, close] of [["(", ")"], ["[", "]"]]) {
208
+ let extra = text.split(close).length - text.split(open).length;
209
+ while (extra > 0 && text[end - 1] === close) {
210
+ end--;
211
+ extra--;
212
+ }
213
+ }
214
+ try {
215
+ const url = new URL(text.slice(0, end));
216
+ const originalPath = fileURLToPath(url, { windows: sourcePlatform === "win32" });
217
+ const remapped = remapDataPaths({ filePath: originalPath }, mappings, sourcePlatform, targetPlatform);
218
+ if (remapped.filePath === originalPath) return text;
219
+ const targetUrl = pathToFileURL(remapped.filePath, { windows: targetPlatform === "win32" });
220
+ targetUrl.search = url.search;
221
+ targetUrl.hash = url.hash;
222
+ return targetUrl.href + text.slice(end);
223
+ } catch {
224
+ return text;
225
+ }
226
+ }
227
+ function remapPlainTextPaths(text, mappings, targetPlatform) {
203
228
  const targetPath = backupPath(targetPlatform);
204
229
  const sortedMappings = [...mappings].sort((left, right) => right.source.length - left.source.length);
205
230
  let result = text;
@@ -576,7 +601,7 @@ async function prepareRestore(context, source) {
576
601
  targets,
577
602
  warnings: [...manifest.warnings, ...manifest.platform !== process.platform ? [
578
603
  "这是跨操作系统还原:工作区、会话索引和知识空间中的受支持路径将自动转换为本机路径。",
579
- "平台专用程序、插件依赖及未包含在备份中的外部路径需要在本机重新安装或配置;历史消息中的路径原文保留。",
604
+ "平台专用程序、插件依赖及未包含在备份中的外部路径需要在本机重新安装或配置;历史消息中备份范围内的路径和文件链接将自动转换。",
580
605
  ...manifest.platform === "win32" && process.platform !== "win32" ? ["Windows 文件将按本机私有权限恢复;以 #! 开头的脚本会获得执行权限,脚本解释器与换行格式请按本机环境确认。"] : []
581
606
  ] : []]
582
607
  };
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.9.3",
2
+ "version": "2026.9.4",
3
3
  "commit": "7891076040f566b4407ea5efe0225586b3866949",
4
- "builtAt": "2026-09-14T09:40:41.839Z"
4
+ "builtAt": "2026-09-14T09:57:25.234Z"
5
5
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "channelCatalogSignature": "701dd1d3ff65f80e219795873d85a623b7af5361",
19
19
  "rootHelpBundleSignature": "4f87cc59722410102ab2288b7e78025e6aa44c11",
20
- "rootHelpText": "\n🦞 SealClaw 2026.9.3 (7891076) — If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.\n\nUsage: openclaw [options] [command]\n\nOptions:\n --container <name> Run the CLI inside a running Podman/Docker container\n named <name> (default: env OPENCLAW_CONTAINER)\n --dev Dev profile: isolate state under ~/.openclaw-dev, default\n gateway port 19001, and shift derived ports\n (browser/canvas)\n -h, --help Display help for command\n --log-level <level> Global log level override for file + console\n (silent|fatal|error|warn|info|debug|trace)\n --no-color Disable ANSI colors\n --profile <name> Use a named profile (isolates\n OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n ~/.openclaw-<name>)\n -V, --version output the version number\n\nCommands:\n Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n acp * Agent Control Protocol tools\n agent Run one agent turn via the Gateway\n agents * Manage isolated agents (workspaces, auth, routing)\n approvals * Manage exec approvals (gateway or node host)\n backup * Create and verify local backup archives for OpenClaw\n state\n capability * Run provider-backed inference commands (fallback alias:\n infer)\n channels * Manage connected chat channels (Telegram, Discord, etc.)\n clawbot * Legacy clawbot command aliases\n commitments * List and manage inferred follow-up commitments\n completion Generate shell completion script\n config * Non-interactive config helpers\n (get/set/unset/file/validate). Default: starts guided\n setup.\n configure Interactive configuration for credentials, channels,\n gateway, and agent defaults\n crestodian Run a ring-zero setup or repair request\n cron * Manage cron jobs via the Gateway scheduler\n daemon * Gateway service (legacy alias)\n dashboard Open the Control UI with your current token\n devices * Device pairing + token management\n directory * Lookup contact and group IDs (self, peers, groups) for\n supported chat channels\n dns * DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n docs Search the live OpenClaw docs\n doctor Health checks + quick fixes for the gateway and channels\n exec-policy * Show or synchronize requested exec policy with host\n approvals\n gateway * Run, inspect, and query the WebSocket Gateway\n health Fetch health from the running gateway\n help Display help for command\n hooks * Manage internal agent hooks\n infer * Run provider-backed inference commands\n logs Tail gateway file logs via RPC\n mcp * Manage OpenClaw MCP config and channel bridge\n memory Search, inspect, and reindex memory files\n message * Send, read, and manage messages\n migrate * Import state from another agent system\n models * Discover, scan, and configure models\n node * Run and manage the headless node host service\n nodes * Manage gateway-owned node pairing and node commands\n officecli-cli Install and run OfficeCLI\n onboard Interactive onboarding for gateway, workspace, and skills\n pairing * Secure DM pairing (approve inbound requests)\n plugins * Manage OpenClaw plugins\n proxy * Run the OpenClaw debug proxy and inspect captured traffic\n qr Generate mobile pairing QR/setup code\n reset Reset local config/state (keeps the CLI installed)\n sandbox * Manage sandbox containers for agent isolation\n secrets * Secrets runtime reload controls\n security * Security tools and local config audits\n sessions * List stored conversation sessions\n setup Initialize local config and agent workspace\n skills * List and inspect available skills\n status Show channel health and recent session recipients\n system * System events, heartbeat, and presence\n tasks * Inspect durable background task state\n uninstall Uninstall the gateway service + local data (CLI remains)\n update * Update OpenClaw and inspect update channel status\n webhooks * Webhook helpers and integrations\n\nExamples:\n openclaw models --help\n Show detailed help for the models command.\n openclaw channels login --verbose\n Link personal WhatsApp Web and show QR + connection logs.\n openclaw message send --target +15555550123 --message \"Hi\" --json\n Send via your web session and print JSON result.\n openclaw gateway --port 18789\n Run the WebSocket Gateway locally.\n openclaw --dev gateway\n Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n openclaw gateway --force\n Kill anything bound to the default gateway port, then start it.\n openclaw gateway ...\n Gateway control via WebSocket.\n openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n openclaw message send --channel telegram --target @mychat --message \"Hi\"\n Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli\n\n"
20
+ "rootHelpText": "\n🦞 SealClaw 2026.9.4 (7891076) — Give me a workspace and I'll give you fewer tabs, fewer toggles, and more oxygen.\n\nUsage: openclaw [options] [command]\n\nOptions:\n --container <name> Run the CLI inside a running Podman/Docker container\n named <name> (default: env OPENCLAW_CONTAINER)\n --dev Dev profile: isolate state under ~/.openclaw-dev, default\n gateway port 19001, and shift derived ports\n (browser/canvas)\n -h, --help Display help for command\n --log-level <level> Global log level override for file + console\n (silent|fatal|error|warn|info|debug|trace)\n --no-color Disable ANSI colors\n --profile <name> Use a named profile (isolates\n OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n ~/.openclaw-<name>)\n -V, --version output the version number\n\nCommands:\n Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n acp * Agent Control Protocol tools\n agent Run one agent turn via the Gateway\n agents * Manage isolated agents (workspaces, auth, routing)\n approvals * Manage exec approvals (gateway or node host)\n backup * Create and verify local backup archives for OpenClaw\n state\n capability * Run provider-backed inference commands (fallback alias:\n infer)\n channels * Manage connected chat channels (Telegram, Discord, etc.)\n clawbot * Legacy clawbot command aliases\n commitments * List and manage inferred follow-up commitments\n completion Generate shell completion script\n config * Non-interactive config helpers\n (get/set/unset/file/validate). Default: starts guided\n setup.\n configure Interactive configuration for credentials, channels,\n gateway, and agent defaults\n crestodian Run a ring-zero setup or repair request\n cron * Manage cron jobs via the Gateway scheduler\n daemon * Gateway service (legacy alias)\n dashboard Open the Control UI with your current token\n devices * Device pairing + token management\n directory * Lookup contact and group IDs (self, peers, groups) for\n supported chat channels\n dns * DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n docs Search the live OpenClaw docs\n doctor Health checks + quick fixes for the gateway and channels\n exec-policy * Show or synchronize requested exec policy with host\n approvals\n gateway * Run, inspect, and query the WebSocket Gateway\n health Fetch health from the running gateway\n help Display help for command\n hooks * Manage internal agent hooks\n infer * Run provider-backed inference commands\n logs Tail gateway file logs via RPC\n mcp * Manage OpenClaw MCP config and channel bridge\n memory Search, inspect, and reindex memory files\n message * Send, read, and manage messages\n migrate * Import state from another agent system\n models * Discover, scan, and configure models\n node * Run and manage the headless node host service\n nodes * Manage gateway-owned node pairing and node commands\n officecli-cli Install and run OfficeCLI\n onboard Interactive onboarding for gateway, workspace, and skills\n pairing * Secure DM pairing (approve inbound requests)\n plugins * Manage OpenClaw plugins\n proxy * Run the OpenClaw debug proxy and inspect captured traffic\n qr Generate mobile pairing QR/setup code\n reset Reset local config/state (keeps the CLI installed)\n sandbox * Manage sandbox containers for agent isolation\n secrets * Secrets runtime reload controls\n security * Security tools and local config audits\n sessions * List stored conversation sessions\n setup Initialize local config and agent workspace\n skills * List and inspect available skills\n status Show channel health and recent session recipients\n system * System events, heartbeat, and presence\n tasks * Inspect durable background task state\n uninstall Uninstall the gateway service + local data (CLI remains)\n update * Update OpenClaw and inspect update channel status\n webhooks * Webhook helpers and integrations\n\nExamples:\n openclaw models --help\n Show detailed help for the models command.\n openclaw channels login --verbose\n Link personal WhatsApp Web and show QR + connection logs.\n openclaw message send --target +15555550123 --message \"Hi\" --json\n Send via your web session and print JSON result.\n openclaw gateway --port 18789\n Run the WebSocket Gateway locally.\n openclaw --dev gateway\n Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n openclaw gateway --force\n Kill anything bound to the default gateway port, then start it.\n openclaw gateway ...\n Gateway control via WebSocket.\n openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n openclaw message send --channel telegram --target @mychat --message \"Hi\"\n Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli\n\n"
21
21
  }
@@ -6,7 +6,7 @@ import { m as triggerInternalHook, n as createInternalHookEvent } from "./intern
6
6
  import path from "node:path";
7
7
  import fs from "node:fs/promises";
8
8
  //#region src/auto-reply/reply/commands-reset-hooks.ts
9
- const routeReplyRuntimeLoader = createLazyImportLoader(() => import("./route-reply.runtime.js"));
9
+ const routeReplyRuntimeLoader = createLazyImportLoader(() => import("./route-reply.runtime-CFPYYI7u.js"));
10
10
  function loadRouteReplyRuntime() {
11
11
  return routeReplyRuntimeLoader.load();
12
12
  }
@@ -103,11 +103,11 @@ function resolveReplyRoutingDecision(params) {
103
103
  }
104
104
  //#endregion
105
105
  //#region src/auto-reply/reply/dispatch-from-config.ts
106
- const routeReplyRuntimeLoader = createLazyImportLoader(() => import("./route-reply.runtime.js"));
107
- const getReplyFromConfigRuntimeLoader = createLazyImportLoader(() => import("./get-reply-from-config.runtime.js"));
108
- const abortRuntimeLoader = createLazyImportLoader(() => import("./abort.runtime.js"));
106
+ const routeReplyRuntimeLoader = createLazyImportLoader(() => import("./route-reply.runtime-CFPYYI7u.js"));
107
+ const getReplyFromConfigRuntimeLoader = createLazyImportLoader(() => import("./get-reply-from-config.runtime-BTEpLCj2.js"));
108
+ const abortRuntimeLoader = createLazyImportLoader(() => import("./abort.runtime-BpZlq5WF.js"));
109
109
  const ttsRuntimeLoader = createLazyImportLoader(() => import("./tts.runtime-CZ34S5Qa.js"));
110
- const runtimePluginsLoader = createLazyImportLoader(() => import("./runtime-plugins.runtime.js"));
110
+ const runtimePluginsLoader = createLazyImportLoader(() => import("./runtime-plugins.runtime-BsyVMi1X.js"));
111
111
  const replyMediaPathsRuntimeLoader = createLazyImportLoader(() => import("./reply-media-paths.runtime-y4xyXCpX.js"));
112
112
  function loadRouteReplyRuntime() {
113
113
  return routeReplyRuntimeLoader.load();
@@ -458,7 +458,7 @@ function resolveAcpInlineImageAttachments(images) {
458
458
  }
459
459
  //#endregion
460
460
  //#region src/auto-reply/reply/dispatch-acp-delivery.ts
461
- const routeReplyRuntimeLoader = createLazyImportLoader(() => import("./route-reply.runtime.js"));
461
+ const routeReplyRuntimeLoader = createLazyImportLoader(() => import("./route-reply.runtime-CFPYYI7u.js"));
462
462
  const dispatchAcpTtsRuntimeLoader$1 = createLazyImportLoader(() => import("./dispatch-acp-tts.runtime.js"));
463
463
  const channelPluginRuntimeLoader = createLazyImportLoader(() => import("./plugins-BIy_npqJ.js"));
464
464
  const messageActionRuntimeLoader = createLazyImportLoader(() => import("./message-action-runner-BFlh1cAO.js"));
@@ -1 +1 @@
1
- 2026-09-14T09:40:41.134Z
1
+ 2026-09-14T09:57:24.305Z
@@ -9,7 +9,6 @@
9
9
  "dist/abort.runtime-BpZlq5WF.js",
10
10
  "dist/abort.runtime-CKviLU0L.js",
11
11
  "dist/abort.runtime-DX6vo4yJ.js",
12
- "dist/abort.runtime.js",
13
12
  "dist/access-groups-C9KusDFC.js",
14
13
  "dist/account-action-gate-B-LK8qSx.js",
15
14
  "dist/account-configured-ids-C72xOCBJ.js",
@@ -1041,7 +1040,6 @@
1041
1040
  "dist/get-reply-from-config.runtime-BTEpLCj2.js",
1042
1041
  "dist/get-reply-from-config.runtime-BzFAggVK.js",
1043
1042
  "dist/get-reply-from-config.runtime-uABrvCZ-.js",
1044
- "dist/get-reply-from-config.runtime.js",
1045
1043
  "dist/get-reply-inline-actions-CuYiNa5G.js",
1046
1044
  "dist/get-reply-TNhWhnG0.js",
1047
1045
  "dist/git-commit-CRN9QrAS.js",
@@ -6013,7 +6011,6 @@
6013
6011
  "dist/route-reply.runtime-CFPYYI7u.js",
6014
6012
  "dist/route-reply.runtime-D4PGzijU.js",
6015
6013
  "dist/route-reply.runtime-uzaOjbd1.js",
6016
- "dist/route-reply.runtime.js",
6017
6014
  "dist/routing-CGxy1uf9.js",
6018
6015
  "dist/rpc-CGCVIjsz.js",
6019
6016
  "dist/rpc.runtime-Dj4Zz4XI.js",
@@ -6098,7 +6095,6 @@
6098
6095
  "dist/runtime-plugins.runtime-BsyVMi1X.js",
6099
6096
  "dist/runtime-plugins.runtime-CNAfmQRG.js",
6100
6097
  "dist/runtime-plugins.runtime-fLHuT7Vs.js",
6101
- "dist/runtime-plugins.runtime.js",
6102
6098
  "dist/runtime-policy-session-key-C9qKk7Lw.js",
6103
6099
  "dist/runtime-prepare.runtime-CHgQRXph.js",
6104
6100
  "dist/runtime-prepare.runtime.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sealclaw",
3
- "version": "2026.9.3",
3
+ "version": "2026.9.4",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/openclaw/openclaw#readme",
@@ -1 +0,0 @@
1
- export * from "./abort.runtime-BpZlq5WF.js";
@@ -1 +0,0 @@
1
- export * from "./get-reply-from-config.runtime-BTEpLCj2.js";
@@ -1 +0,0 @@
1
- export * from "./route-reply.runtime-CFPYYI7u.js";
@@ -1 +0,0 @@
1
- export * from "./runtime-plugins.runtime-BsyVMi1X.js";