From 93902ce851b851ae4bbb942eb3ebd22fb4cba516 Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 14:33:53 +0800 Subject: [PATCH 01/10] Speed up Linux message updates and verify current chat before actions --- Dockerfile | 2 +- docs/workspace-validation.md | 28 +- docs/workspace.md | 31 +- root/scripts/workspace/desktop.py | 26 +- root/scripts/workspace/harness-proxy.mjs | 68 +- root/scripts/workspace/server.py | 13 +- root/scripts/workspace/session_identity.py | 325 + root/usr/local/bin/weharbor-capture-key | 9 + runtime/harness/README.md | 24 +- runtime/harness/package-lock.json | 10130 +++++++++++-------- runtime/harness/package.json | 100 +- scripts/smoke-test.sh | 49 +- tests/test_harness_proxy.py | 123 + tests/test_session_identity.py | 131 + tests/test_workspace.py | 11 +- versions.lock.json | 12 +- 16 files changed, 6816 insertions(+), 4266 deletions(-) create mode 100644 root/scripts/workspace/session_identity.py create mode 100644 tests/test_harness_proxy.py create mode 100644 tests/test_session_identity.py diff --git a/Dockerfile b/Dockerfile index 0554a09..d84a4eb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN npm ci --no-audit --no-fund \ && rm -rf /opt/weharbor/analysis/frontend /opt/weharbor/analysis/data /opt/weharbor/analysis/output /opt/weharbor/analysis/.git COPY runtime/harness/package*.json /opt/weharbor/harness/ WORKDIR /opt/weharbor/harness -RUN npm ci --legacy-peer-deps --omit=dev --no-audit --no-fund \ +RUN npm ci --omit=dev --no-audit --no-fund \ && node node_modules/@deepseek-ai/dsh-subprocess-local/scripts/ensure-spawn-helper.mjs \ && node -e "require('node-pty'); require('koffi')" diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index 7a13902..79e9ea8 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -2,10 +2,34 @@ Validated on an amd64 Linux NAS with an existing WeHarbor profile. Test output contains counts and status only; keys, chat contents and account identities are -not committed. The locally deployed image is +not committed. The preceding baseline image was `sha256:5e7b6ef5b43e12e135251d23f51076e6b81a540c507a43e2c59584f67ceb5d7c`. -## October 20 update +## October 20 event-sync and Harness update + +- Analysis fork pinned to `fd61b10d24ba2aaabc08f39f53a2cbb7486668cd`: Linux + DB/WAL notifications debounce for 150 ms, with a two-second fallback scan. + Revision SSE checks run every 200 ms. The target is 1–3 seconds after a + stable database write; decryption duration still limits actual latency. +- Passed 69 targeted analysis tests and 91 integration/source tests. The + filesystem test exercises writes and rename replacement, while existing + tests cover authenticated decryption, WAL recovery and publication failures. +- DSH `0.2.1-rc.2` was the official npm latest on October 20, 2026. A fresh + local DSH profile successfully initialized the NAS MCP server and discovered + twelve tools, including send preparation. No tool call or model request was + made. The proxy now supports signed browser sessions, scoped cookies and + the current settings RPC while preserving foreign-origin rejection. +- Current-chat proof derives the session-name field from the installed + original WeChat ELF metadata and handler code. It reads process memory + without attaching a debugger or writing memory. Only an exact first-two- + component version match is eligible; unsupported layouts fail closed. Live + QObject ownership, unique page, stable reads, account, username and visible + title are checked before UI actions. +- The production desktop still asks for phone confirmation and exposes no + Send control. No test message has been sent. Real delivery and newly received + message latency require an unlocked account and the selected authorized chat. + +## October 20 earlier baseline - Analysis fork pinned to `9ba2b71dc1b8018ab7feb59b028713beeb314f1b`. Linux snapshots publish revisions only after validated database replacement; diff --git a/docs/workspace.md b/docs/workspace.md index 32d7d47..91d66a3 100644 --- a/docs/workspace.md +++ b/docs/workspace.md @@ -11,13 +11,16 @@ The pinned fork is `fliaping/WeChatDataAnalysis`; the source revision and archiv checksum are in `versions.lock.json`. The Linux adapter first uses existing account-specific WeFlow keys, verifies decrypted SQLite/WAL snapshots, and verifies image AES/XOR keys against actual V2 images. Original encrypted files -are never overwritten. Refresh runs every 30 seconds and can be triggered in -the UI or through MCP. Decrypted copies and verified keys remain under +are never overwritten. A serialized Linux DB/WAL watcher refreshes changed +files, with a two-second recovery scan; refresh can also be triggered in the +UI or through MCP. Decrypted copies and verified keys remain under `/config/.local/share/weharbor/analysis`, with private permissions. Linux chat auto-update uses snapshot revision events over SSE: after a validated sync, the page refreshes sessions and the selected conversation. Reconnecting -also refreshes the page data. This is periodic synchronization (roughly 30 seconds -plus decryption time), not a native WCDB connection; imported archives remain +also refreshes the page data. Linux uses inotify with a 150 ms debounce and +SSE revision checks every 200 ms, targeting 1–3 seconds after source writes. +This is validated snapshot synchronization, not a native WCDB connection; +decryption, busy files and host load can delay it. Imported archives remain static. Unchanged sync attempts do not trigger repeated chat refreshes. If no usable key exists, the Linux source card offers an explicit wcdb-key-tool @@ -59,11 +62,16 @@ auth. Foreign browser Origin headers are rejected. ## AI and Actions -Official `@deepseek-ai/dsh` is pinned through npm's integrity lock. The web +Official `@deepseek-ai/dsh` 0.2.1-rc.2 (npm `latest`, checked 2026-10-20) is +pinned through npm's integrity lock. The web launcher adds the local WeHarbor MCP client, and the assistant workspace contains the portable skill. Configure your model credentials in Harness's own setup UI; WeHarbor does not copy Alpha/WeFlow credentials into Harness. Its state is `/config/.local/share/weharbor/harness`. +The loopback proxy exchanges DSH's process-scoped launch token on the server +and scopes its signed HttpOnly cookie to `/assistant/`. The token is redacted +from logs. Original browser origins are checked before forwarding HTTP and +WebSocket traffic; the external browser authentication remains required. Read, search, summarize and suggest replies use message MCP tools. Sending is a separate prepare/commit action with an exact username, idempotency key, context @@ -71,9 +79,16 @@ revision, desktop checks and persistent receipt. Scheduling uses the same checks and requires the selected target chat to remain ready at the due time. Preparation alone never schedules a send: commit activates a future action. The independent AT-SPI driver does not patch WeChat or copy Qibox code/offsets. -It verifies the open account from process file descriptors and binds the visible -chat using unique DB contact names plus an ID or recent message fingerprints. -Unsupported or ambiguous layouts fail closed. Existing drafts and manual input +It verifies the open account from process file descriptors. A fixed root helper +reads the original WeChat process without writing or injecting code. Qt metadata +in the installed ELF identifies the session-loaded handler and derives the +current session-name field; a live QObject backlink, runtime code checks and +stable reads reject stale or racing heap data. Exactly one live typed chat page +must resolve the requested username, and its visible title must uniquely match +the database contact. Account and session are checked again before submission. +Version eligibility compares the first two numeric components, without a major +version ceiling; it never replaces structural validation. No external offset +table is copied. Unsupported or ambiguous layouts fail closed. Existing drafts and manual input are preserved; an interrupted submission is never retried automatically. A `sent` receipt means the new self-message appeared in the database, not diff --git a/root/scripts/workspace/desktop.py b/root/scripts/workspace/desktop.py index b1bc2a8..c1c8a89 100644 --- a/root/scripts/workspace/desktop.py +++ b/root/scripts/workspace/desktop.py @@ -1,5 +1,7 @@ """Independent AT-SPI WeChat driver. No app patching or proprietary offsets.""" import os +import json +import subprocess import time from pathlib import Path @@ -86,6 +88,19 @@ def _subtree(self, chat): queue.extend(n.get_child_at_index(i) for i in range(min(n.get_child_count(), 300))) return subtree + def _identity(self, binding): + try: + result = subprocess.run( + ['sudo', '-n', '/usr/local/bin/weharbor-capture-key'], + input=json.dumps({'mode': 'session', 'account': binding['account']}), + text=True, capture_output=True, check=True, timeout=20) + evidence = json.loads(result.stdout) + except (OSError, subprocess.SubprocessError, ValueError): + raise DesktopError('CHAT_IDENTITY_UNAVAILABLE: current-session memory could not be verified') from None + if (not isinstance(evidence, dict) or evidence.get('verified') is not True or evidence.get('account') != binding['account'] + or evidence.get('username') != binding['username']): + raise DesktopError('CHAT_IDENTITY_UNVERIFIED: unlock WeChat and open the exact target chat') + def _controls(self, binding): self._account(binding['account']) nodes = self.nodes() @@ -95,9 +110,10 @@ def _controls(self, binding): sends = [n for n in nodes if n.get_name() in ['发送', 'Send'] and n.get_role_name() in ['button', 'push button'] and self._visible(n)] if len(editors) != 1 or len(sends) != 1: raise DesktopError('CHAT_CONTROLS_AMBIGUOUS') + self._identity(binding) # Use the chat pane containing the editor, not the contact sidebar or - # invisible cached Qt widgets. DB uniqueness plus visible message - # fingerprints bind a display name to the exact database username. + # invisible cached Qt widgets. The read-only Qt session identity must + # match the exact account/username as well as a unique visible DB title. pane = editors[0].get_parent() for _ in range(8): if pane is None or pane.get_role_name() in ['application', 'frame']: @@ -105,13 +121,11 @@ def _controls(self, binding): subtree = self._subtree(pane) names = {n.get_name().strip() for n in subtree if self._visible(n) and n.get_name()} title = any(name in names for name in binding['names']) - identity = any(v and (v in names or '微信号:'+v in names or 'WeChat ID: '+v in names) for v in [binding['username'], binding.get('alias')]) - fingerprints = sum(text in names for text in binding['messages']) - if sends[0] in subtree and title and (identity or fingerprints >= 2): + if sends[0] in subtree and title: self._foreground(editors[0]) return editors[0], sends[0] pane = pane.get_parent() - raise DesktopError('CHAT_IDENTITY_UNVERIFIED: open the target chat; a unique contact title and exact ID or two matching recent messages are required') + raise DesktopError('CHAT_IDENTITY_UNVERIFIED: the verified session needs its unique contact title in the visible chat pane') def _foreground(self, editor): from Xlib import X, display diff --git a/root/scripts/workspace/harness-proxy.mjs b/root/scripts/workspace/harness-proxy.mjs index 999b98d..abbacb6 100644 --- a/root/scripts/workspace/harness-proxy.mjs +++ b/root/scripts/workspace/harness-proxy.mjs @@ -9,10 +9,15 @@ const rawArgs = process.argv.slice(2); let listenHost = "127.0.0.1"; let listenPort = 3080; const dshArgs = []; +const launcherArgs = []; for (let index = 0; index < rawArgs.length; index += 1) { const arg = rawArgs[index]; - if (arg === "--host" && rawArgs[index + 1]) { + if (arg === "--patch" && rawArgs[index + 1]) { + launcherArgs.push(arg, rawArgs[++index]); + } else if (arg.startsWith("--patch=")) { + launcherArgs.push(arg); + } else if (arg === "--host" && rawArgs[index + 1]) { listenHost = rawArgs[index + 1]; index += 1; } else if (arg.startsWith("--host=")) { @@ -48,6 +53,38 @@ const publicPrefix = ( process.env.DSH_WEB_PROXY_PREFIX || `/proxy/${String(listenPort)}` ).replace(/\/$/u, ""); const dshBin = process.env.DSH_BIN || "/config/.npm-global/bin/dsh"; +let launchToken; + +// DSH 0.2 prints a process-scoped launch URL. Keep its token inside this +// loopback proxy; browsers receive only DSH's signed HttpOnly session cookie. +function relayStartup(stream, output) { + let pending = ""; + function line(value) { + const match = value.match(/^dsh web: (http:\/\/[^\s]+)$/u); + if (match) { + const url = new URL(match[1]); + if (url.origin === `http://${upstreamHost}:${upstreamPort}` && + url.pathname === "/" && /^[A-Za-z0-9_-]+$/u.test(url.searchParams.get("token") || "")) { + launchToken = url.searchParams.get("token"); + } + } + output.write(value.replace(/([?&]token=)[^\s&]+/gu, "$1[redacted]") + "\n"); + } + stream.setEncoding("utf8"); + stream.on("data", (chunk) => { + pending += chunk; + let end; + while ((end = pending.indexOf("\n")) !== -1) { + line(pending.slice(0, end)); + pending = pending.slice(end + 1); + } + if (pending.length > 1024 * 1024) { + pending = ""; + output.write("[deepseek-harness-proxy] oversized startup line omitted\n"); + } + }); + stream.on("end", () => { if (pending) line(pending); }); +} function trustedRequest(request) { if (request.headers["sec-fetch-site"] === "cross-site") return false; @@ -115,7 +152,9 @@ const child = spawn( [ "--expose-internals", dshBin, + "--profile", "web", + ...launcherArgs, ...dshArgs, "--host", upstreamHost, @@ -125,9 +164,11 @@ const child = spawn( { cwd: process.env.DSH_WORKSPACE || "/config/Workspace", env: process.env, - stdio: "inherit", + stdio: ["inherit", "pipe", "pipe"], }, ); +relayStartup(child.stdout, process.stdout); +relayStartup(child.stderr, process.stderr); child.once("error", (error) => { console.error(`[deepseek-harness-proxy] failed to start dsh: ${error.message}`); @@ -152,16 +193,33 @@ const server = http.createServer((request, response) => { const headers = upstreamHeaders(request); headers["accept-encoding"] = "identity"; + function forward(path, bootstrap = false) { const proxyRequest = http.request( { host: upstreamHost, port: upstreamPort, method: request.method, - path: upstreamPath(request.url), + path, headers, }, (proxyResponse) => { + // Only a trusted initial index navigation can establish a browser + // session. APIs and WebSockets must present the resulting cookie. + if (!bootstrap && request.method === "GET" && path === "/" && + proxyResponse.statusCode === 401 && launchToken) { + proxyResponse.resume(); + forward(`/?token=${encodeURIComponent(launchToken)}`, true).end(); + return; + } const responseHeaders = { ...proxyResponse.headers }; + if (Array.isArray(responseHeaders["set-cookie"])) { + responseHeaders["set-cookie"] = responseHeaders["set-cookie"].map( + (value) => value.replace(/; Path=\/;/u, `; Path=${publicPrefix}/;`), + ); + } + if (responseHeaders.location === "./") { + responseHeaders.location = `${publicPrefix}/`; + } else if ( typeof responseHeaders.location === "string" && responseHeaders.location.startsWith("/") @@ -196,7 +254,9 @@ const server = http.createServer((request, response) => { } response.end(`DeepSeek Harness is starting: ${error.message}\n`); }); - request.pipe(proxyRequest); + return proxyRequest; + } + request.pipe(forward(upstreamPath(request.url))); }); server.on("upgrade", (request, socket, head) => { diff --git a/root/scripts/workspace/server.py b/root/scripts/workspace/server.py index c167462..7e5a38d 100644 --- a/root/scripts/workspace/server.py +++ b/root/scripts/workspace/server.py @@ -41,22 +41,13 @@ async def reconnect(): await asyncio.sleep(30) await network.start() connector = asyncio.create_task(reconnect()) - async def refresh_local(): - while True: - try: - await reader.sync() - except Exception: - pass - await asyncio.sleep(30) - refresh = asyncio.create_task(refresh_local()) + # The analysis service owns its DB/WAL watcher and bounded fallback. + # Starting a second polling loop here duplicates expensive decryptions. yield task.cancel() - refresh.cancel() connector.cancel() with contextlib.suppress(asyncio.CancelledError): await task - with contextlib.suppress(asyncio.CancelledError): - await refresh with contextlib.suppress(asyncio.CancelledError): await connector await network.close() diff --git a/root/scripts/workspace/session_identity.py b/root/scripts/workspace/session_identity.py new file mode 100644 index 0000000..7dfd8e8 --- /dev/null +++ b/root/scripts/workspace/session_identity.py @@ -0,0 +1,325 @@ +"""Read-only current-chat evidence derived from the installed Linux WeChat ELF. + +No injection, debugger, app patch, external offset table or memory writes. Qt +metadata identifies ChatMessagePage and its session-loaded handler; that handler +identifies the libc++ session-name field it compares with its string argument. +Unrecognized metadata/code, multiple live pages and inconsistent reads fail closed. +""" +import json +import mmap +import os +from pathlib import Path +import pwd +import re +import struct +import subprocess +import time + +EXE = Path('/opt/wechat/wechat') +LOCK = Path('/usr/share/weharbor/versions.lock.json') +CACHE = Path('/run/weharbor-session') +CLASS = b'mmui::ChatMessagePage' +SLOT = 'OnNewSessionDataLoaded' + +class IdentityError(RuntimeError): + pass + +def require(value, reason='SESSION_LAYOUT_UNSUPPORTED'): + if not value: + raise IdentityError(reason) + +def version_pair(value): + match = re.fullmatch(r'(\d+)\.(\d+)(?:[.][0-9]+)*(?:[-+][A-Za-z0-9.+~-]+)?', value.strip()) + require(match, 'SESSION_VERSION_INVALID') + return tuple(map(int, match.groups())) + +class Elf: + def __init__(self, data): + self.data = data + require(data[:6] == b'\x7fELF\x02\x01' and self.unpack(' 5 else '', int(fields[2], 16))) + bases = {low - offset for low, _, _, path, offset in self.maps if path == str(EXE)} + # Different LOAD segments have different virtual/file deltas. The + # mapping at file offset zero is the actual ELF load bias. + roots = [low for low, _, _, path, offset in self.maps if path == str(EXE) and offset == 0] + require(len(roots) == 1 and bases, 'SESSION_PROCESS_UNVERIFIED') + self.base = roots[0] + self.fd = os.open(f'/proc/{pid}/mem', os.O_RDONLY | os.O_CLOEXEC) + + def close(self): + os.close(self.fd) + + def read(self, address, size): + require(0 <= size <= 4 * 1024 * 1024 + 128 and any( + low <= address and address + size <= high and mode[0] == 'r' + for low, high, mode, _, _ in self.maps), 'SESSION_MEMORY_INVALID') + value = os.pread(self.fd, size, address) + require(len(value) == size, 'SESSION_MEMORY_CHANGED') + return value + + def word(self, address): + return struct.unpack('> 1 + require(0 < length <= 22 and header[1 + length] == 0, 'SESSION_STRING_INVALID') + raw = header[1:1 + length] + require(re.fullmatch(rb'[A-Za-z0-9_@.:-]{1,256}', raw), 'SESSION_STRING_INVALID') + require(self.read(address, 24) == header, 'SESSION_MEMORY_CHANGED') + return raw.decode('ascii') + + def page(self, address, layout): + require(self.word(address) - self.base in layout['vtables']) + private = self.word(address + 8) + require(self.word(private + 8) == address) # live QObjectData.q_ptr, not freed heap residue + fn = self.word(self.word(address)) - self.base + require(fn in layout['functions']) + code = self.read(self.base + fn, 23) + require(code[15:18] == b'\x48\x8d\x05' and code[22] == 0xc3) + require(fn + 22 + struct.unpack('=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, "node_modules/@aws-sdk/client-bedrock-runtime": { - "version": "3.1048.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", - "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", + "version": "3.1127.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1127.0.tgz", + "integrity": "sha512-IDl/lrPb90aH+pZFHGNDmgH9nAUQj5PlZH1sJ3w7RikctyjHSnY3oNjZhrLoaBoQn/rNK0zsP6OHEqEhj2tdLA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.11", - "@aws-sdk/credential-provider-node": "^3.972.42", - "@aws-sdk/eventstream-handler-node": "^3.972.16", - "@aws-sdk/middleware-eventstream": "^3.972.12", - "@aws-sdk/middleware-websocket": "^3.972.19", - "@aws-sdk/token-providers": "3.1048.0", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.2", - "@smithy/fetch-http-handler": "^5.4.2", - "@smithy/node-http-handler": "^4.7.2", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.977.9", + "@aws-sdk/credential-provider-node": "^3.972.82", + "@aws-sdk/eventstream-handler-node": "^3.972.34", + "@aws-sdk/middleware-eventstream": "^3.972.29", + "@aws-sdk/middleware-websocket": "^3.972.52", + "@aws-sdk/token-providers": "3.1127.0", + "@aws-sdk/types": "^3.974.5", + "@smithy/core": "^3.33.3", + "@smithy/fetch-http-handler": "^5.7.2", + "@smithy/node-http-handler": "^4.11.3", + "@smithy/types": "^4.17.2", "tslib": "^2.6.2" }, "engines": { @@ -204,15 +65,15 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.978.3", - "resolved": "https://registry.npmmirror.com/@aws-sdk/core/-/core-3.978.3.tgz", - "integrity": "sha512-nslpzUCTI9b2IQMWSd6mSAXldBexPc8rr0d3dXUutXYFLFaTdsHa2GD7sJdsn3PhyjK0O5K8ypd6zi+RXXPVlg==", + "version": "3.978.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.4.tgz", + "integrity": "sha512-JvGp6y9sPX8FSs2K/EmFMZcUfdkHxqGE45+oxwGC75OIh50j2e4cbx7zcR3BwNs2DSGqJdBja5h6Vy89iIDmRQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.6", "@aws-sdk/xml-builder": "^3.972.41", "@aws/lambda-invoke-store": "^0.3.0", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", "bowser": "^2.11.0", @@ -223,14 +84,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.74", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.74.tgz", - "integrity": "sha512-rsRJcW2iFUhCgclyD6OSbMEaPl8Eu0qSeRZb2uuCK1ViZ66hl5wOe/p6Vr6MO3b+ydyKgFeqza2p6tZThvILlw==", + "version": "3.972.75", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.75.tgz", + "integrity": "sha512-nc8Epg98PcYoKNx0VFlwtmZSCP+tuJ1FLWqpslET/gp4h/WYuULSJqtxppM6ywKKDdzNJPvLD7ceRfmxm3Qdxw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -239,14 +100,14 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.76", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.76.tgz", - "integrity": "sha512-pnKdh0Br7OJPj+7qKjzgTfDTFW0RhEMKXNDR2jv9CAM4oHuG/4z3hRh8KtutLfpmItuRtDbKBmwWkDqHwwAWXw==", + "version": "3.972.77", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.77.tgz", + "integrity": "sha512-KkYFdIQwuw9IOHfEzK78slxmVWuhcm1w6YgE3V3WVxAeRRj9q5J9jlwzpY/oszWxd4SD96FTFkDdRGBdMFF2Mw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -256,36 +117,22 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": { - "version": "4.12.1", - "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz", - "integrity": "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.33.3", - "@smithy/types": "^4.18.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.973.19", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.19.tgz", - "integrity": "sha512-kcjvAxqQEV8yuwkX58RelNn3ne65o7JgRWf3Z/gVvbi7Xuw1qSDLJlatrLD76+40cmRxmNkLxBoyp/vAQChQ5g==", + "version": "3.973.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.20.tgz", + "integrity": "sha512-OSl2R/0zLkoeKEIy6oP2tu/bsSdY+DGgro2eOffMD2CcP8POv7rS14FY5Jzc5bjnqB1G9wv/aM1akHC2mdlhZw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/credential-provider-env": "^3.972.74", - "@aws-sdk/credential-provider-http": "^3.972.76", - "@aws-sdk/credential-provider-login": "^3.972.81", - "@aws-sdk/credential-provider-process": "^3.972.74", - "@aws-sdk/credential-provider-sso": "^3.973.18", - "@aws-sdk/credential-provider-web-identity": "^3.972.80", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/credential-provider-env": "^3.972.75", + "@aws-sdk/credential-provider-http": "^3.972.77", + "@aws-sdk/credential-provider-login": "^3.972.82", + "@aws-sdk/credential-provider-process": "^3.972.75", + "@aws-sdk/credential-provider-sso": "^3.973.19", + "@aws-sdk/credential-provider-web-identity": "^3.972.81", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" @@ -295,15 +142,15 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.81", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.81.tgz", - "integrity": "sha512-CeQHSbE2CnVdaHIJ/NayRaCecIER+Pm9faUPkmRATO54rCoMTEPSbVieGHzEwvm1dZM2HIs6qQZCznhayNTWJQ==", + "version": "3.972.82", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.82.tgz", + "integrity": "sha512-8jyDPtf1WPxeQ/5xlNpyxAD6P7YKwkYeNk8B2vFEDwkPWDvb7c3tQJG5/jbNWbF2yTMIH9tDTueBkdfovYIAPw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -312,19 +159,19 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.86", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.86.tgz", - "integrity": "sha512-WNttSyr6e8innPtBSty//CdnqJcgZN6eAbtw3v/CR2IObz6MYZEo8eusdtuCHJ2ujwFqC2bSPHVyhXGHx8HruQ==", + "version": "3.972.87", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.87.tgz", + "integrity": "sha512-TKj2C0x4IMPSSOAlmeryX8fCPvvPS2pFJz2ikV9IGqyh6Ehsg4leMalCTVfV2rvMTrlGAe7X7nK0HZ3P0KZR9g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.74", - "@aws-sdk/credential-provider-http": "^3.972.76", - "@aws-sdk/credential-provider-ini": "^3.973.19", - "@aws-sdk/credential-provider-process": "^3.972.74", - "@aws-sdk/credential-provider-sso": "^3.973.18", - "@aws-sdk/credential-provider-web-identity": "^3.972.80", + "@aws-sdk/credential-provider-env": "^3.972.75", + "@aws-sdk/credential-provider-http": "^3.972.77", + "@aws-sdk/credential-provider-ini": "^3.973.20", + "@aws-sdk/credential-provider-process": "^3.972.75", + "@aws-sdk/credential-provider-sso": "^3.973.19", + "@aws-sdk/credential-provider-web-identity": "^3.972.81", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/credential-provider-imds": "^4.5.2", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" @@ -334,14 +181,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.74", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.74.tgz", - "integrity": "sha512-Yj6kZFJQdbR+PygTkqdVLPHHpdDpOS9GCYVcDCuweCRRig9LF24ELQBMfyUw1vspvrZJUfnOGVyMjhaL094ahw==", + "version": "3.972.75", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.75.tgz", + "integrity": "sha512-ZNm8T/HJNhpS8MikDVAsym8QyUSUuOUGiCkmI3TTya7G6xhOgfRLd2iK91HhQQyvRM36eo6Xm845hHVyfToA2w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -350,16 +197,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.973.18", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.18.tgz", - "integrity": "sha512-FnpPhdY4qUGtX/8X6eKxh+uD+9Y19i9FYibgk4SBe0M935s9vocHkHzaxaMNk+YkHmvzgdu8cHA5SCoeU+kkew==", + "version": "3.973.19", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.19.tgz", + "integrity": "sha512-qHGDAGesyWtRw3BapyFkYSUzVNrC1CWPS6+S2lf/MLMEkWB2gR3Bl6imVHy1nhImXKS+gcuUDzbu39BnsHJc1Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", - "@aws-sdk/token-providers": "3.1150.0", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", + "@aws-sdk/token-providers": "3.1153.0", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -368,15 +215,15 @@ } }, "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.1150.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.1150.0.tgz", - "integrity": "sha512-wDU36ofhabZYu+d2KSriyDbwzxNoaOp+4dG0p3qkabk7HeALR5nIWyQbjoyJZLn3iqWkv/xNdyUfbfevDVDzzg==", + "version": "3.1153.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1153.0.tgz", + "integrity": "sha512-6bKJ2OfLboxhzeJ3hBDeB8L6emCYf9DfdrjBAharLrY42J1RV/6jA6G8jvfNghzID8Yb40BdSY7jQMtWx9Ot0Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -385,15 +232,15 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.80", - "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.80.tgz", - "integrity": "sha512-TJF25Ndwy2HxcVj6oxMgp8qVlJAawlExHYBXqhuC6Zt2m+A7WpdkjBD6QglNbiArlteYljZHEY3R7KKmno6ISA==", + "version": "3.972.81", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.81.tgz", + "integrity": "sha512-nHkgkMIC6NHgqfI6UAQq5cCS4bUkNxkT+r9fXCq/X4IKfX/DHGZ8UM3T4b78OXpWK5OlzEzN4kxwyax0W/MUCA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", - "@aws-sdk/nested-clients": "^3.997.48", + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/nested-clients": "^3.997.49", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -402,13 +249,13 @@ } }, "node_modules/@aws-sdk/eventstream-handler-node": { - "version": "3.972.36", - "resolved": "https://registry.npmmirror.com/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.36.tgz", - "integrity": "sha512-HFaKXA6ugPVvpR7W/3UT3hylWIPndqGMwduwNVrmGsRT5+OESHN8/ven4eeofraQF5Kxp8A8QgGVrv7iQsTRKQ==", + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.37.tgz", + "integrity": "sha512-vU0v4d6anhLqBCpPq7Q7hD2Av3/5qOR5O30Ze8ALLysgB3iMQTPHQ/P2aTgfrY2ZjnVJUCi7NiTSNqa1mDF+5w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -417,13 +264,13 @@ } }, "node_modules/@aws-sdk/middleware-eventstream": { - "version": "3.972.31", - "resolved": "https://registry.npmmirror.com/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.31.tgz", - "integrity": "sha512-4yvdTVwPGKCnrwuwlYEmwLqQXKwk0unx3f/FvBi4FA9ruK/WGoPJyqfK7hOYurheIyQL44FR0ovgOHqvkfdpAQ==", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.32.tgz", + "integrity": "sha512-D3ayeW/K2lTQI8+SyzDvAKfM3N4SFJjfgqeHbS3DOZmmQebZyve6WUyJiqOKqeOxmIcFxTzpSdsijnRF035J3g==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/types": "^4.19.0", "tslib": "^2.6.2" }, @@ -432,14 +279,14 @@ } }, "node_modules/@aws-sdk/middleware-websocket": { - "version": "3.972.56", - "resolved": "https://registry.npmmirror.com/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.56.tgz", - "integrity": "sha512-32d9EnnNM5UMwjVp/qnL0K4XYiZv+YlSbULI3BaoBdJvebAS6cD0bKfPJ7lzovN0qrelvmSh5jo/3tk0KoTuGQ==", + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.57.tgz", + "integrity": "sha512-mPNUOedufUwZXISOEySSP7l7owyY0Ypp1ajsd1GsB4E5Vpaf8NtfmmNygyPPeGPsRZ1sOcS90aAhQ03yPy/pFg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/signature-v4": "^5.7.4", "@smithy/types": "^4.19.0", @@ -450,15 +297,15 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.48", - "resolved": "https://registry.npmmirror.com/@aws-sdk/nested-clients/-/nested-clients-3.997.48.tgz", - "integrity": "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ==", + "version": "3.997.49", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.49.tgz", + "integrity": "sha512-zjqIqzTYLRKhT7TPJDUreK9vG9PjhmnfLCaTaqArkRT7j+Ogl0tuXB7MpSd8rlRfRT+xTOeyNFWaOfyNcf51hg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.978.3", + "@aws-sdk/core": "^3.978.4", "@aws-sdk/signature-v4-multi-region": "^3.996.48", "@aws-sdk/types": "^3.974.6", - "@smithy/core": "^3.35.2", + "@smithy/core": "^3.36.0", "@smithy/fetch-http-handler": "^5.8.0", "@smithy/node-http-handler": "^4.12.1", "@smithy/types": "^4.19.0", @@ -468,23 +315,9 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { - "version": "4.12.1", - "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz", - "integrity": "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.33.3", - "@smithy/types": "^4.18.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.48", - "resolved": "https://registry.npmmirror.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.48.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.48.tgz", "integrity": "sha512-cFDXfEbXaGwbnpvR/DyqfxfjxpjXVRVthQLgkwvcfDS5u3+8G9WSj1X1Ag/pTRg/QOeOno1Tq3ycEdrKsCUcOA==", "license": "Apache-2.0", "dependencies": { @@ -498,16 +331,16 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1048.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", - "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", + "version": "3.1127.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1127.0.tgz", + "integrity": "sha512-Dv2TMWBshJ+tF6ahs2Sy5bh4Iabsd4GAQqVvE9XZmYmnoaVbpS2QKIKE/HRacc7bTtbjEEvP+laGzHvHlf1CiQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.11", - "@aws-sdk/nested-clients": "^3.997.9", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.2", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.977.9", + "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/types": "^3.974.5", + "@smithy/core": "^3.33.3", + "@smithy/types": "^4.17.2", "tslib": "^2.6.2" }, "engines": { @@ -516,7 +349,7 @@ }, "node_modules/@aws-sdk/types": { "version": "3.974.6", - "resolved": "https://registry.npmmirror.com/@aws-sdk/types/-/types-3.974.6.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.974.6.tgz", "integrity": "sha512-v/clNZzZnDxGyvpHMOGpJKVXFAExJzUNAAjaWGdcx8QAcXLGwTaOkw33p5SHAi0YAioK32xB3hWwOekRVfmfKg==", "license": "Apache-2.0", "dependencies": { @@ -527,21 +360,9 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.10", - "resolved": "https://registry.npmmirror.com/@aws-sdk/util-locate-window/-/util-locate-window-3.965.10.tgz", - "integrity": "sha512-ycwH6Zd2GhuSqdXX9ihbCjeGTB6xOJs+O3+Jb8/zDG9978XU80qs75dfkPJRMNKe5MvBZPuNeFpd4JZKPoUF4g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/xml-builder": { "version": "3.972.41", - "resolved": "https://registry.npmmirror.com/@aws-sdk/xml-builder/-/xml-builder-3.972.41.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.41.tgz", "integrity": "sha512-ctjVSyCMegrWfXlx6VqzSBFI6UqmQ5ZlnfMhdLIiWmhoH8UAQxSCP5N3OpG7X3k4LnS7ou74C4mt20+bfTW2aQ==", "license": "Apache-2.0", "dependencies": { @@ -554,7 +375,7 @@ }, "node_modules/@aws/lambda-invoke-store": { "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.3.0.tgz", "integrity": "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==", "license": "Apache-2.0", "engines": { @@ -563,7 +384,7 @@ }, "node_modules/@babel/code-frame": { "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.7.tgz", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "license": "MIT", "dependencies": { @@ -577,7 +398,7 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "license": "MIT", "engines": { @@ -586,7 +407,7 @@ }, "node_modules/@babel/runtime": { "version": "7.29.10", - "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.29.10.tgz", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", "license": "MIT", "engines": { @@ -594,20 +415,20 @@ } }, "node_modules/@deepseek-ai/cordis": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cordis/-/cordis-4.0.1.tgz", - "integrity": "sha512-YBdskTU2Po1kru3GgcUWUbkTsPMA9LkSQDAY8rBkFJeajdgcQad3QPJZE26JyK99Xb6HaASvoXg2DSUTeN/0Nw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/cordis/-/cordis-4.0.5.tgz", + "integrity": "sha512-Sktq5axy0owk9PdnivBRNOJjHEVEibCt0+TDDZcv0+UH2KS1M910fX4kn5y45YFsrpZIi1mJf/1s5VzywMUnyg==", "license": "MIT", "dependencies": { - "@deepseek-ai/cosmokit": "^1.8.2", + "@deepseek-ai/cosmokit": "~1.8.6", "@standard-schema/spec": "^1.1.0" }, "bin": { "cordis": "bin.js" }, "peerDependencies": { - "@deepseek-ai/cordis-plugin-include": "^1.0.6", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2" + "@deepseek-ai/cordis-plugin-include": "~1.0.10", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-include": { @@ -619,57 +440,42 @@ } }, "node_modules/@deepseek-ai/cordis-plugin-group": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cordis-plugin-group/-/cordis-plugin-group-1.0.1.tgz", - "integrity": "sha512-E1NThkFB3jn3TCqa6Oc++1zQHqLejF3W2wDwv2BlL3UEmgtBXL1K1j1koc+j676RuiOXtJkUJlPcOntRGKLWBQ==", - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2" - } - }, - "node_modules/@deepseek-ai/cordis-plugin-hmr": { - "version": "1.0.16", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cordis-plugin-hmr/-/cordis-plugin-hmr-1.0.16.tgz", - "integrity": "sha512-S7VHfylDg1+Y5O6fdYYZu0KFRAj/snHywcFPnX3KmQYa/qv2Q8IXi4zAt9ABq0BJYqhNoqRlbpGMfIjabgXjKA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/cordis-plugin-group/-/cordis-plugin-group-1.0.5.tgz", + "integrity": "sha512-PGYqImAydmAjmy5fl1Js6qDmk0Ivt1fipa3fOj1KyyRd0tZ9i61a2rhzHc7LaSeBb/spJ1LF4k3Pcppaq+w8fw==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@deepseek-ai/cosmokit": "^1.8.2", - "@deepseek-ai/schemastery": "^3.18.1", - "chokidar": "^4.0.3", - "picomatch": "^4.0.3" - }, + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-timer": "^1.1.3" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6" } }, "node_modules/@deepseek-ai/cordis-plugin-include": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cordis-plugin-include/-/cordis-plugin-include-1.0.6.tgz", - "integrity": "sha512-i1VXrZCbv6tk/iUgedCNjrxxArbWT3IvRZGB5sdqJ3ectnihivXXQbRZ8JJ73DSmAPvlMGmrbtjFAfm10yvXRg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@deepseek-ai/cordis-plugin-include/-/cordis-plugin-include-1.0.10.tgz", + "integrity": "sha512-Rdo6Uqf9WfDbfN3dsYkYj/EW+SGuWCSfthz1PoOtZYUr6qrRpqD7ND4Gj3nUYj8XhSGIo8E3xpsck6J5nM5BYQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/cosmokit": "^1.8.2", + "@deepseek-ai/cosmokit": "~1.8.6", "js-yaml": "^4.1.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6" } }, "node_modules/@deepseek-ai/cordis-plugin-loader": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cordis-plugin-loader/-/cordis-plugin-loader-1.0.2.tgz", - "integrity": "sha512-RIW9hoVyhYDWdCI9BsvtZccPde1ECLC4OAxupwowGTak78vwVTVdb3HezTSOK1Y1/Ax3Ru0LA1pYOB04CnTxIQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@deepseek-ai/cordis-plugin-loader/-/cordis-plugin-loader-1.0.6.tgz", + "integrity": "sha512-fr011A782oEjkJXCY4pePt2qaPpkGvem7Rmst6Rhwgg6icgwI4eN9QBRb6S/q9XOYGVQUdvL0wXUWyNxO8WipA==", "license": "MIT", "dependencies": { - "@deepseek-ai/cosmokit": "^1.8.2" + "@deepseek-ai/cosmokit": "~1.8.6", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "node-addon-require-builtin": "^0.1.4" + "@deepseek-ai/cordis": "~4.0.5", + "node-addon-require-builtin": "^0.1.9" }, "peerDependenciesMeta": { "node-addon-require-builtin": { @@ -678,2535 +484,4126 @@ } }, "node_modules/@deepseek-ai/cordis-plugin-timer": { - "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cordis-plugin-timer/-/cordis-plugin-timer-1.1.3.tgz", - "integrity": "sha512-IOkey1VNmJwYa5U8bksyMOnM7mtirqjjbWLr3xA8QybLMK0sMooG3a6iJwtvd8P3MFwo3FQibEg+JPixp37MEw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@deepseek-ai/cordis-plugin-timer/-/cordis-plugin-timer-1.1.7.tgz", + "integrity": "sha512-i83gGA1WfL1kA7RMWvLLDw5KhKar3cdvGyl7E9ByrsFv3gb64XDf5b5sFxj+cgv9ZGaYc1YwGWAjwgS2f3OGNw==", "license": "MIT", "dependencies": { - "@deepseek-ai/cosmokit": "^1.8.2" + "@deepseek-ai/cosmokit": "~1.8.6" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1" + "@deepseek-ai/cordis": "~4.0.5" } }, "node_modules/@deepseek-ai/cosmokit": { "version": "1.8.6", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/cosmokit/-/cosmokit-1.8.6.tgz", + "resolved": "https://registry.npmjs.org/@deepseek-ai/cosmokit/-/cosmokit-1.8.6.tgz", "integrity": "sha512-ZSD/fN52L498LBIOYwjIOlaLv5veY6ZEwI2yzvZUKQtctn0QAPqu8tKdJ+OF5+Tv6NBq1U+wJWH+QI6OGy5EvQ==", "license": "MIT" }, "node_modules/@deepseek-ai/dsh": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh/-/dsh-0.1.1-rc.2.tgz", - "integrity": "sha512-UP1UIh6q3Gme/yXRn/QL2P8IsVlv8Shpg22TRJIZPsCRWLm4CBiA1MUvXmJAfsOEETBMLAl+xWPtFw6ICsN3wg==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-hmr": "^1.0.16", - "@deepseek-ai/cordis-plugin-include": "^1.0.6", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/cordis-plugin-timer": "^1.1.3", - "@deepseek-ai/dsh-agent-instructions": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-tool-presentation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-app-boot": "^0.1.1-rc.2", - "@deepseek-ai/dsh-base": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-cordis": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cmdline": "^0.1.1-rc.2", - "@deepseek-ai/dsh-command-compact": "^0.1.1-rc.2", - "@deepseek-ai/dsh-command-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction-basic": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal-round-driver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-headless": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-mcp-client": "^0.1.1-rc.2", - "@deepseek-ai/dsh-persona": "^0.1.1-rc.2", - "@deepseek-ai/dsh-plan-mode": "^0.1.1-rc.2", - "@deepseek-ai/dsh-pwsh-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-schedule": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "^0.1.1-rc.2", - "@deepseek-ai/dsh-terminal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-terminal-bash": "^0.1.1-rc.2", - "@deepseek-ai/dsh-time-context": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tmux-context": "^0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-ask-user": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-bash": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-cordis": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-pwsh-persistent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-ralph": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-todo": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-web": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-workflow": "^0.1.1-rc.2", - "@deepseek-ai/dsh-web-app": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workflow-worker-thread": "^0.1.1-rc.2", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh/-/dsh-0.2.1-rc.2.tgz", + "integrity": "sha512-tvY+yhfKRifthbqPe/OK0AYxM5ZkvqfYq/jMYgJcEUxiRRL1Vwra3Ti5TB6AXgSWQdiPHYh/Vp6SJa9yHwMNuw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-include": "~1.0.10", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/cordis-plugin-timer": "~1.1.7", + "@deepseek-ai/dsh-acp-app": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-tool-presentation": "0.2.1-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.1-rc.2", + "@deepseek-ai/dsh-base": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-cordis": "0.2.1-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-rc.2", + "@deepseek-ai/dsh-cordis-client-runner": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-agent-team-profile": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-auto-review": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-badge-skill-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-cot-translation-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-inspector-profile": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-plugin-market-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-ralph-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-session-search": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-session-titles-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-terminal-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-tool-worktree": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-voice-input-bundle": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal-round-driver": "0.2.1-rc.2", + "@deepseek-ai/dsh-headless": "0.2.1-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-http-proxy": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-mcp-client": "0.2.1-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.1-rc.2", + "@deepseek-ai/dsh-persona": "0.2.1-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.1-rc.2", + "@deepseek-ai/dsh-pwsh-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-pwsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.1-rc.2", + "@deepseek-ai/dsh-sdk-app": "0.2.1-rc.2", + "@deepseek-ai/dsh-sdk-minimal": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-reference": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill-office": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-time-context": "0.2.1-rc.2", + "@deepseek-ai/dsh-tmux-context": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-ask-user": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-cordis": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-present": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-schedule": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-str-replace-editor": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-workspace-dependencies": "0.2.1-rc.2", + "@deepseek-ai/dsh-web-app": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", "commander": "^15.0.0", - "js-yaml": "^4.2.0", - "node-addon-require-builtin": "^0.1.4" + "js-yaml": "^4.3.2", + "node-addon-require-builtin": "^0.1.9" }, "bin": { "dsh": "lib/bin.js" } }, + "node_modules/@deepseek-ai/dsh-acp": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-acp/-/dsh-acp-0.2.1-rc.2.tgz", + "integrity": "sha512-lcc7zQWk5u9l3nGB8IFdyOCwKM8zTk7+QqPWOt6JUoNBVzLVZVAvHdwJQ8fyKrVvemJLXRoJexFOy+ldrJvIhQ==", + "license": "MIT", + "dependencies": { + "@agentclientprotocol/sdk": "1.4.0", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-mcp-client": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-token-meter": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-acp-app": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-acp-app/-/dsh-acp-app-0.2.1-rc.2.tgz", + "integrity": "sha512-RWZePfOPO6cI+7EzZwtZlRgri83AzHpobaPEVGek0NEujGkLlxteCwqLtA+HzlkLZeEfwIQ7ccMCNtlsf94/kA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-acp": "0.2.1-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.1-rc.2", + "commander": "^15.0.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, "node_modules/@deepseek-ai/dsh-agent": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent/-/dsh-agent-0.1.1-rc.2.tgz", - "integrity": "sha512-cC7lnJe7JgPFcreNXxcxLMxQd78LnpVO9ZXROjZsGRQN1zGH6i/DduI892F1am85IfzzO+XTxMwwUHmfwamb0g==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent/-/dsh-agent-0.2.1-rc.2.tgz", + "integrity": "sha512-e96Tnq8g/RNCDDUW7kAypY/4cho5QxjLHMhk86BGGIEu9b31XEkSFqwqQIwtYXQez3cDR5z7LZpAM8Uqx9Y8KA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-workspace": { + "optional": true + } } }, "node_modules/@deepseek-ai/dsh-agent-default-model": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-default-model/-/dsh-agent-default-model-0.1.1-rc.2.tgz", - "integrity": "sha512-Pv+4p20Eol7Ds/n0OS0vjtChCWfFTJAMThxugXcEcLKEJ9WAtpI4mzWfLgjmeVXnwD2yvp6HlLKDrrQV9PIkww==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-default-model/-/dsh-agent-default-model-0.2.1-rc.2.tgz", + "integrity": "sha512-tM6hJOoV4O2ryezD7QxGQYueH7HurKUHgiGqMW961B4pxAfgJ+nF8+E5s9Y+5BLO3DiLf2VNb9xLrIFlh6nMNA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-config-editor": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-instructions": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-instructions/-/dsh-agent-instructions-0.1.1-rc.2.tgz", - "integrity": "sha512-a3xKsOsqmlWZaGxXfIr97ULJlXSI1clZt0DCSjCaULW4Z1y67DzG8w/kRsb+/Z1pksRMrJE7faLMC/i9S5Y2Ew==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-instructions/-/dsh-agent-instructions-0.2.1-rc.2.tgz", + "integrity": "sha512-a1VQsocz34VvkwYMNc/zolMXrLXWIClhZ62kb3pi8hYd/8MSgjuE09YcoqX6ZmU8i4tmaroC9W1PdUEIksSgiQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-loop": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-loop/-/dsh-agent-loop-0.1.1-rc.2.tgz", - "integrity": "sha512-2uJZ6kjJ3IYLRGn6/NhiZgD576ABcbERB/nkReR9TEUMO2zWkz6OuKtVwLyFCFSni2T25Jv+clKQWt7D4MhU3A==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-loop/-/dsh-agent-loop-0.2.1-rc.2.tgz", + "integrity": "sha512-dM0tvxTywkTPtXGCQS/FMhigW37JS4g4ChjQFiaBqrMYet8FDbQbMJb8uFFPPpcRnQufzdq7NqJziYwpsaQBOw==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-agent-loop/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-agent-presets": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-presets/-/dsh-agent-presets-0.1.1-rc.2.tgz", - "integrity": "sha512-88r3jkrbdwTgcP3MZLIUX458Ecu8JcLmZa7PtPszwf33yFoWlZvZmgjyn5ETHV55plNQ8gKMRm9a0RwzGGmzCw==", + "node_modules/@deepseek-ai/dsh-agent-preset": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-preset/-/dsh-agent-preset-0.2.1-rc.2.tgz", + "integrity": "sha512-WxvxpdBG2k9lBSaichkFctuc3n6gp01nuf5pE1rzksnHEjx+zgsUIzj/D6W3oU8qMkag8k1t+tHy4H4ZUuoO9Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "js-yaml": "^4.1.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-include": "^1.0.6", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-atomic-write": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-agent-tool-presentation": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-tool-presentation/-/dsh-agent-tool-presentation-0.1.1-rc.2.tgz", - "integrity": "sha512-l1C7Z+erWcfj6Ak5EQbcCAPW/0+na4iOXwGknozHgKILLCK2C9CWcrTK0LwozvUPdqh0gFUucSOhi68HQ61srg==", + "node_modules/@deepseek-ai/dsh-agent-preset-registry": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-preset-registry/-/dsh-agent-preset-registry-0.2.1-rc.2.tgz", + "integrity": "sha512-EOqmmIhmHl4usjmH1IuYqsza3D5vkmNhTq4fVTMI3MkX0Au6RujfcdqPvJv9/ePTvy2sRZA4L+lFhoyvhTmAPg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "js-yaml": "^4.3.2", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-include": "~1.0.10", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-settings": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-anonymous-user-id": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-anonymous-user-id/-/dsh-anonymous-user-id-0.1.1-rc.2.tgz", - "integrity": "sha512-ZQBsDhI0VuFwoDnq75VT2gPJdMPmBYfWM3EBDmUkwHM0E2dmyr+iLGXxp33a7M64r79x7kN+81KOTEL5LS0E8A==", + "node_modules/@deepseek-ai/dsh-agent-preset-registry/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-api-gateway": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-gateway/-/dsh-api-gateway-0.1.1-rc.2.tgz", - "integrity": "sha512-i/e/Ecg1QCjMePUFHBfjRQU3NbDV0IdORwQbQD6RpiirzyvAIm4vvZgmW/FfgkO2XYJHHIVjo3i1i0YaHPcQag==", + "node_modules/@deepseek-ai/dsh-agent-tool-presentation": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-tool-presentation/-/dsh-agent-tool-presentation-0.2.1-rc.2.tgz", + "integrity": "sha512-m/AaZwUmjKLKnoqSAhy3G7AuaQM5GkdJ2WMSdinJimdFGyZoLv0q4rN2mDwsHsvjh/m5YBQBWzwK1ZRA4TjJTg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-registry": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-api-remotes": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-remotes/-/dsh-api-remotes-0.1.1-rc.2.tgz", - "integrity": "sha512-mtmMxA0TZwTjy46E2DF0kmsPCXVq6RBhrwEHWXBaRzc0DLjnYqmJODrZ0X+XwXOkwFZtDxWSv/uheiIsXf8now==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-api-gateway": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-message-feedback": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-registry": "^0.1.1-rc.2" + "node_modules/@deepseek-ai/dsh-anonymous-user-id": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-anonymous-user-id/-/dsh-anonymous-user-id-0.2.1-rc.2.tgz", + "integrity": "sha512-jZByDUrdFqDrn91rZMjpPOH0iQu8qkF9RVFHtxJa2tt6uHnyFHlfmsAIH7iExQWpztqodzM+v9Hd1V0SprHjDw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-app-boot": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-app-boot/-/dsh-app-boot-0.1.1-rc.2.tgz", - "integrity": "sha512-eynZWb0oNPKc4OO3HPokqFfz4b5sUEq+EjqhKE2TUWsUsOTgFO43l2Ai3LibqLu6XTpYeHCTbsRLM4Aqg0deBQ==", + "node_modules/@deepseek-ai/dsh-api-account-controller": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-account-controller/-/dsh-api-account-controller-0.2.1-rc.2.tgz", + "integrity": "sha512-WeK4+dye6UkLKkfCkaeQeS8lxIB9mifYYXqHuwDxK0FYrSkpEgeZ1aBjKSLxphRvf98OV2EBTPmhyMLj7FTprg==", "license": "MIT", "dependencies": { - "js-yaml": "^4.2.0" + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-group": "^1.0.1", - "@deepseek-ai/cordis-plugin-hmr": "^1.0.16", - "@deepseek-ai/cordis-plugin-include": "^1.0.6", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" - }, - "peerDependenciesMeta": { - "@deepseek-ai/cordis-plugin-hmr": { - "optional": true - } + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-atomic-write": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-atomic-write/-/dsh-atomic-write-0.1.1-rc.2.tgz", - "integrity": "sha512-QqNSF0+Ddn6qWY480dlilwEy6FLv3JKEWx1UQgoNJrxD4y54SDRzqBQB9yDXWKOoOGyC+05TN6/Px10GNIzMWA==", + "node_modules/@deepseek-ai/dsh-api-account-controller/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-attachment": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-attachment/-/dsh-attachment-0.1.1-rc.2.tgz", - "integrity": "sha512-rCYAt8QsawP1yfDCU7XxNwYT/XWvyFsxYrkwhLLkdfW83QVD0CQHizSkTQE7RFX74nKUD1z3sTLfnLr7xneArw==", + "node_modules/@deepseek-ai/dsh-api-gateway": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-gateway/-/dsh-api-gateway-0.2.1-rc.2.tgz", + "integrity": "sha512-45bWpB/MFBvYf2a3iQx+BIOkv41yg0Be8nJ844CpiXWte6H+GPVwUYmGMSgjQqRlxNaHEWO9kp01JuMBNVKqFw==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-deque": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "ws": "^8.21.3" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-attachment-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-attachment-local/-/dsh-attachment-local-0.1.1-rc.2.tgz", - "integrity": "sha512-bU24CZc2ElJ7JPUUeWLcibRsiuXjsj9dVuUu8yx6t2vensjbqo70kzAIA4eh9q6ai4CeU1/9cRnKLcMQbgNxMQ==", + "node_modules/@deepseek-ai/dsh-api-job-controller": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-job-controller/-/dsh-api-job-controller-0.2.1-rc.2.tgz", + "integrity": "sha512-6CsGzXjKKnW2AsEBgfHOQdWFL/3s+jwTQc1LQ+gmUHCa+VVzMSsTOWPU832o04asGkH0zB9UT42caqDAgpd7/Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "sharp": "^0.35.3" + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-authorization": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-authorization/-/dsh-authorization-0.1.1-rc.2.tgz", - "integrity": "sha512-+ye7d4XzenQ4kpfY2nMIlUhoIbcprotL9fmkTBahafIPDhyyph0JzmUVhz1AGnkIqZc8TltjGzX2ssald+f+3A==", + "node_modules/@deepseek-ai/dsh-api-job-controller/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2" - } - }, - "node_modules/@deepseek-ai/dsh-base": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-base/-/dsh-base-0.1.1-rc.2.tgz", - "integrity": "sha512-DT1kSaseoTZ0b8pwZ5biRkqez2K8AnsLataRiCPsn3uUuxupZOjM1e8x9W+kpkWWFykWy1mbCPhzDRVJ+pLCbg==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/cordis-plugin-hmr": "^1.0.16", - "@deepseek-ai/cordis-plugin-timer": "^1.1.3", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-default-model": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-instructions": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-loop": "^0.1.1-rc.2", - "@deepseek-ai/dsh-api-gateway": "^0.1.1-rc.2", - "@deepseek-ai/dsh-attachment-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-bash-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-command-compact": "^0.1.1-rc.2", - "@deepseek-ai/dsh-command-feedback": "^0.1.1-rc.2", - "@deepseek-ai/dsh-command-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction-basic": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs-observation-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal-round-driver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm-deepseek": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm-pi-ai": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm-retry": "^0.1.1-rc.2", - "@deepseek-ai/dsh-permission-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-plan-mode": "^0.1.1-rc.2", - "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-repeat-tool-reminder": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-query-sqlite": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-telemetry-otel": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title-first-prompt-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings-file": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell-env": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill-badge": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "^0.1.1-rc.2", - "@deepseek-ai/dsh-spill-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-spill-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent-fork-in-process": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent-spawn-in-process": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-bash": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-call-timeout-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-ralph": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-subagent-report": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-todo": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-web": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-workflow": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-loader": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-registry": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-questions": "^0.1.1-rc.2", - "@deepseek-ai/dsh-web": "^0.1.1-rc.2", - "@deepseek-ai/dsh-web-search-deepseek": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workflow-worker-thread": "^0.1.1-rc.2" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-bash-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-bash-local/-/dsh-bash-local-0.1.1-rc.2.tgz", - "integrity": "sha512-GAjYTVsJKXkAptjO767xqt0otMufZRtj2qvOAvkx5Bfusd5R6+mMUkSbcx2K2A8WMbltyCbjwhZf4Tu4xyJAdw==", + "node_modules/@deepseek-ai/dsh-api-remote-access": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-remote-access/-/dsh-api-remote-access-0.2.1-rc.2.tgz", + "integrity": "sha512-/R5RYFJTdwDiZcXFNEqr7jqplayyA2/4FX26/Edf/6eJ1f5ItEFxbT/eOv2P2lGktWyWE2TtgubU4ceEPsBbIg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-bash-sandbox": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-bash-sandbox/-/dsh-bash-sandbox-0.1.1-rc.2.tgz", - "integrity": "sha512-bagZDMZ73C1dVDBjFCn1flNZ8aOEel4dsmDJTfmagqeYPXfIJDFKPhDc3lWjc+o6jMNfmumeUJ62dwhHkjJHKA==", + "node_modules/@deepseek-ai/dsh-api-remote-access/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-bash-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-brand": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-brand/-/dsh-brand-0.1.1-rc.2.tgz", - "integrity": "sha512-8vXsAXoUdzKAgvd/E9DgyT6HKmR6ZM4rtJ3fs/XoJ6n2kBk4tWil8Lv+jxCMWJeMOnTJF55gu2+NWQ3ECFPtJw==", + "node_modules/@deepseek-ai/dsh-api-remotes": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-remotes/-/dsh-api-remotes-0.2.1-rc.2.tgz", + "integrity": "sha512-QVAh5IlTGBZr1muKdc2SWDmCBDu2rVl4dsu+XOY94rET7SArzHBbBGWYlO8Tp8znU0uqh8A3v9V28KH848XD0g==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-deque": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-connection": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-connection/-/dsh-client-connection-0.1.1-rc.2.tgz", - "integrity": "sha512-YX2WLA/aZdDQsien4Zo7IHTEfYVJ+4QhRXbgA6BrRUM23NSP/+V3K00dQYyQVsF3ZwocE5uyvlZvbYeg1Iz4ug==", + "node_modules/@deepseek-ai/dsh-api-session-controller": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-session-controller/-/dsh-api-session-controller-0.2.1-rc.2.tgz", + "integrity": "sha512-AvYB5Seza/91BAKzataRn/5UYUqxNHU6W9ryH0JL0gslWkcURbGFFhvkRe9SXNo6DO0Jlv66NbBHME2t0XRPKA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "ws": "^8.21.0" + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-deque": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "mime-types": "^3.0.2", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-gateway": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-file-upload": "0.2.1-rc.2", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-settings": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-time": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-workspace-path": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2" }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-apiproxy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "peerDependenciesMeta": { + "@deepseek-ai/dsh-session-persistence": { + "optional": true + }, + "@deepseek-ai/dsh-session-projection-cache": { + "optional": true + }, + "@deepseek-ai/dsh-settings": { + "optional": true + } } }, - "node_modules/@deepseek-ai/dsh-client-hmr": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-hmr/-/dsh-client-hmr-0.1.1-rc.2.tgz", - "integrity": "sha512-q2YqCvIWXfVQBh+AWLQFDF2cMu2ZabgahGKrWXHqQ5q1dY0ae9CvDV+bCMf8+EwQgz1axSOXWQ35+SSKPGwGlw==", + "node_modules/@deepseek-ai/dsh-api-session-controller/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-client-modules": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-locale": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-locale/-/dsh-client-locale-0.1.1-rc.2.tgz", - "integrity": "sha512-AMoR4FwMPLmt6WlYd4m0PCoxXj4qqMhpElBQZSc3r3NyGCZIuleU8tCG1xphGtr/w9mA1Y0kUX7Ftdmf7yV4FQ==", + "node_modules/@deepseek-ai/dsh-api-settings-controller": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-settings-controller/-/dsh-api-settings-controller-0.2.1-rc.2.tgz", + "integrity": "sha512-ctnEfYYqgaYssEgWkB1habUa7/ruwzuW7jRqSGGbzUv1hRTyz969XAzBTDDfhxGIJxkZebdrQ4SDciYlQzzwvw==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-settings": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-modules": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-modules/-/dsh-client-modules-0.1.1-rc.2.tgz", - "integrity": "sha512-D0vRgJJpMeTB4ExJTGHk9ay01kLxfK5zvp6bgFjYGlk9sBJgCE3qsOGBFNqD369ylJx4W2oyExAH9lOZGNk3Rw==", + "node_modules/@deepseek-ai/dsh-api-settings-controller/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-runtime": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-runtime/-/dsh-client-runtime-0.1.1-rc.2.tgz", - "integrity": "sha512-o1FH7Rlns0Xaxh4SBOWZ1wpa0ViGw6DXWNm5NFpsBTGYD94RGdIrud3QxgrfzmQKLzu33gvS8JL/IjqbzWyYsg==", + "node_modules/@deepseek-ai/dsh-api-terminal-controller": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-terminal-controller/-/dsh-api-terminal-controller-0.2.1-rc.2.tgz", + "integrity": "sha512-PP2OyVTVnhSzllzIv3qpOQWdklvYzbmzeOY+41V5/aZRadPSbsh1aCOC2r1qZyVt8bte299pWANUytsj+Qr31w==", "license": "MIT", "dependencies": { - "immer": "^10.1.1", - "zustand": "~4.4.7" + "@deepseek-ai/dsh-deque": "0.2.1-rc.2", + "@deepseek-ai/dsh-lazy-require": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "@xterm/addon-serialize": "^0.14.0", + "@xterm/headless": "^6.0.0", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-apiproxy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm-retry": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-registry": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-agent-preset": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-agent-preset/-/dsh-client-ui-agent-preset-0.1.1-rc.2.tgz", - "integrity": "sha512-U8iT0+jQSbIdPPF4rYYEhmFaTyewryOgL/ye3322UhuFXFapjQcPTBkchvZYYWnTJ/SGB2CpKXLQqiVSjsN2tA==", + "node_modules/@deepseek-ai/dsh-api-terminal-controller/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-ui-attachment": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-attachment/-/dsh-client-ui-attachment-0.1.1-rc.2.tgz", - "integrity": "sha512-c3tLJL7Qhok4NzVTE/OomBAsNSLbryT0UndqLaxx/9hcS4W7A984SD0iOF9VuZT4dgZ6dQjMse9eIe9M7Kg08Q==", + "node_modules/@deepseek-ai/dsh-api-workspace-controller": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-workspace-controller/-/dsh-api-workspace-controller-0.2.1-rc.2.tgz", + "integrity": "sha512-v1ZxPEY5suajD8dqCE7TjYzPllK/JS8LT1aCKGksiBqvgpzruG5YpPzw9JnY3Z3yJSrgwUYHlKpuHReG3Kbfvw==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/dsh-deque": "0.2.1-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-api-gateway": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-directory-picker": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-brand-official": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-brand-official/-/dsh-client-ui-brand-official-0.1.1-rc.2.tgz", - "integrity": "sha512-ORrj3w92n5tif0ecKQy/xGd6vlHPkK3XZCxT0+7JUeA1GRo4TW/wc5ljm0/6hM4FcqKf2x7ndW+OdWfZ2Rwfdg==", + "node_modules/@deepseek-ai/dsh-api-workspace-controller/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-ui-commands": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-commands/-/dsh-client-ui-commands-0.1.1-rc.2.tgz", - "integrity": "sha512-k7gIeD/+zRF2jtGPi5tG2vZMUkgVnS9HYPA2yzwB0ilB1NhvL/Xbne1Y9vO4aBAakFE1Be1/1RMIKW4PMv0fkA==", + "node_modules/@deepseek-ai/dsh-api-workspace-files": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-workspace-files/-/dsh-api-workspace-files-0.2.1-rc.2.tgz", + "integrity": "sha512-CEglo4kidisxlDi8+9+kwcOZEM0Nr58HZXdv28Fdo3yOkGYJZnE1A4kmYwCl9x0IUFYxSMPQtP+HyNIuEpkYjg==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/dsh-deque": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-conversation": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-conversation/-/dsh-client-ui-conversation-0.1.1-rc.2.tgz", - "integrity": "sha512-5PCyHw2Y7nz9geEUT23et3h2XghJm7/3iWDAKa1/4ldIfCnjfxiZ5ZNRdZ9Xxpj32tBmh2lc6yxIJwrtepIyTg==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm-retry": "^0.1.1-rc.2", - "@deepseek-ai/dsh-permission-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-plan-mode": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-stats": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-todo": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "node_modules/@deepseek-ai/dsh-api-workspace-files/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-ui-cordis": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-cordis/-/dsh-client-ui-cordis-0.1.1-rc.2.tgz", - "integrity": "sha512-zUtgUW1N9m+rnyGxVI1uXmXxWA11JxK0/W5sI3ZiwhIzYJNvIMtkMyBjsoNVOVpgd3krwViBxFfbFpP20ew4pA==", + "node_modules/@deepseek-ai/dsh-app-boot": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-app-boot/-/dsh-app-boot-0.2.1-rc.2.tgz", + "integrity": "sha512-kMS4f6AGOPjGsTz3UXWihl5l2Vnm8y9dIayXIF9EafV6F73vgGR+uoBAq4p8qxSq72QfUSGx2yuDP2Hjw4ktlg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-atomic-write": "0.2.1-rc.2", + "@deepseek-ai/dsh-package-manifest": "0.2.1-rc.2", + "@eslint-community/regexpp": "^4.12.2", + "ajv": "^8.20.0", + "js-yaml": "^4.3.2", + "node-addon-require-builtin": "^0.1.9", + "resolve.exports": "^2.0.3", + "semver": "^7.8.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-group": "~1.0.5", + "@deepseek-ai/cordis-plugin-include": "~1.0.10", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-atomic-write": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-atomic-write/-/dsh-atomic-write-0.2.1-rc.2.tgz", + "integrity": "sha512-yCvLoL55Uoaxsi06I8hOcPgvMOhIt7w8vE/FLe3iGzvGq5OfrqkanAmt++apq069Jo6R/fP552XOhBlW8S3utg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-deliverables": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-deliverables/-/dsh-client-ui-deliverables-0.1.1-rc.2.tgz", - "integrity": "sha512-VA6tXDGTgHUvudrbPqgvUCnZcuJOc49OTm4k2tGrazm3uUdO7W5uO/VeuAVD8eEA9afS/0IBqqs0WHc3Q8Cojw==", + "node_modules/@deepseek-ai/dsh-attachment": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-attachment/-/dsh-attachment-0.2.1-rc.2.tgz", + "integrity": "sha512-VtSSPYq6cOTZ3kLUAHkjIRq6SOjecfZ4p3lzn1dBU1EcUFJ5fOcN1pM2CLVec4ZYrvMxiB5XwtMeFDQPQ7jgpw==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-directory-picker-browse/-/dsh-client-ui-directory-picker-browse-0.1.1-rc.2.tgz", - "integrity": "sha512-O4fd87GB6Pt0+FgiiygbV/5+DmLI+sPHEBOWouyWqkDKZ19pgRZ541FpYNOmxf6Hjhf8wiG+Zpy3CYi9+n0+vw==", + "node_modules/@deepseek-ai/dsh-attachment-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-attachment-local/-/dsh-attachment-local-0.2.1-rc.2.tgz", + "integrity": "sha512-LW4zfDwzWZqMG21E27b0B+jC8vzW4KYRyPfnNp/WGoOnlfp5Jxp/2YzciYj42fjImSlP9SOhlS9jLZfM0ds1Kw==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/dsh-lazy-require": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "sharp": "0.35.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-directory-picker-native/-/dsh-client-ui-directory-picker-native-0.1.1-rc.2.tgz", - "integrity": "sha512-ubC7861LSIIKLR8AU/vR/V79tOffQE7bhzaKbGl1A0IPruCZCFZiyYD5J8P0RPvWPSaePXjF/P49or5bF//tdg==", + "node_modules/@deepseek-ai/dsh-authorization": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-authorization/-/dsh-authorization-0.2.1-rc.2.tgz", + "integrity": "sha512-5zagVBk/p1SOWvUsT4CvHPGHRxMNVl/ClAbkIyIH43cTq0NR24EuXciWLJ7MHIDCNU+a3h+P3rm3E/WjZWp+PQ==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-goal": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-goal/-/dsh-client-ui-goal-0.1.1-rc.2.tgz", - "integrity": "sha512-nyoloPDya2sdsTSn4cFJmJBZWpr2EVgJ+oWAkwIrDGWpDTkQXaX2G44bDmMZas8dY6F2uODfLIBp/rYe4ZdPOQ==", - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "node_modules/@deepseek-ai/dsh-base": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-base/-/dsh-base-0.2.1-rc.2.tgz", + "integrity": "sha512-aejv6yKXcDzu7XVVgl+tcbKSxbkWZ+qv2KGd6SvqfegPRwc3xdUNEJy3xFI/LYUZZfrUKQ9OnEOyvrZpCJ7g/Q==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/cordis-plugin-timer": "~1.1.7", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-loop": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-gateway": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-remote-access": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-authorization": "0.2.1-rc.2", + "@deepseek-ai/dsh-bash-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-image-offload": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-rc.2", + "@deepseek-ai/dsh-config-editor": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-account-platform": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs-observation-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal-round-driver": "0.2.1-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-deepseek-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-pi-ai": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.1-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.1-rc.2", + "@deepseek-ai/dsh-otel": "0.2.1-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.1-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.2.1-rc.2", + "@deepseek-ai/dsh-ptc-runtime-node": "0.2.1-rc.2", + "@deepseek-ai/dsh-pwsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-repeat-tool-reminder": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-checkpoint-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-log-deepseek": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query-sqlite": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-telemetry-otel": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-settings": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.1-rc.2", + "@deepseek-ai/dsh-spill-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-spill-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage-json": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent-fork-in-process": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-call-timeout-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-present": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-working-directory": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-loader": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.1-rc.2", + "@deepseek-ai/dsh-web": "0.2.1-rc.2", + "@deepseek-ai/dsh-web-deepseek-api": "0.2.1-rc.2", + "@deepseek-ai/dsh-web-fetch-http": "0.2.1-rc.2", + "@deepseek-ai/dsh-web-search-deepseek": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-input-trigger": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-input-trigger/-/dsh-client-ui-input-trigger-0.1.1-rc.2.tgz", - "integrity": "sha512-jro0WgcJdi/ClpyKGWg+/0nEq9mmcda1KIoMsB+o9lLqebDUce/enxdEP0UtIEpQVOJ6EMMDY5Bsn+WtrdJNhg==", + "node_modules/@deepseek-ai/dsh-bash-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-bash-local/-/dsh-bash-local-0.2.1-rc.2.tgz", + "integrity": "sha512-B8NunknFEBqqZK8hc7kWM+Qh6IMX03pydwKone4ZfxjtlcHctoeCewm8XAvYBcBMlXJycnM7ZOBw01fFZTZIqw==", "license": "MIT", + "peer": true, "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-jobs": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-jobs/-/dsh-client-ui-jobs-0.1.1-rc.2.tgz", - "integrity": "sha512-G2yJqYpvfEvqSSJ8Rl61gSfoCcX2v3yGEidKzN5InbS0mcewMqLUfn8RihV2fDKu6UG3nggDGN6aahg0csq93Q==", + "node_modules/@deepseek-ai/dsh-bash-sandbox": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-bash-sandbox/-/dsh-bash-sandbox-0.2.1-rc.2.tgz", + "integrity": "sha512-haOfQf2OYoniyPdPmE9EIJw+lrJPbsPICZmz9rpzikFeFWvdHicOATSR0ymUp8ns4xQxMie0XC8/AJf0cUebng==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-bash-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-layout": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-layout/-/dsh-client-ui-layout-0.1.1-rc.2.tgz", - "integrity": "sha512-y7xSQyQYGuahLyJcSXpB+JbH1F5lGEc3L9K8cjLy5vd/L9N6gLFLWyeGdlGxxM4jxRt1+rAHDDZ/zl7b8GC5zQ==", + "node_modules/@deepseek-ai/dsh-brand": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-brand/-/dsh-brand-0.2.1-rc.2.tgz", + "integrity": "sha512-T2kcygikRS8rv8cKjgho2x381EgGprv5yQmvHl4/iYbuHE19OW+SLGtHWbV27PGdSHz5U8CJxasYzFosKW4e2A==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-message-feedback": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-message-feedback/-/dsh-client-ui-message-feedback-0.1.1-rc.2.tgz", - "integrity": "sha512-ABh9GhtUmwUXtBMQg/rMrTgyEXrCIuv7gK2UGJ2waurhblSrw2br7EYqTcIsZbVdFIec9+sHHVCmowqJf3lGog==", + "node_modules/@deepseek-ai/dsh-chunked-list": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-chunked-list/-/dsh-chunked-list-0.2.1-rc.2.tgz", + "integrity": "sha512-4F2tjWi+afGEqUcHCbhoY9CzVZQli164lq4bnm7yneixv7+nBVjoBHS8zASJ+ASuccbOoeI9oMhBqaFwkH/7Ug==", "license": "MIT", + "dependencies": { + "zod": "4.4.3" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-message-feedback": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-model-selection": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-model-selection/-/dsh-client-ui-model-selection-0.1.1-rc.2.tgz", - "integrity": "sha512-CEFpGeEL6gtz0jTRWEpHcEH1cBIwzY9023vWmgyjjcFDOcaKv3G324n+IXweHDttbWGSKdtxfpi4FMOu14W3Og==", + "node_modules/@deepseek-ai/dsh-chunked-list/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-client-connection": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-connection/-/dsh-client-connection-0.2.1-rc.2.tgz", + "integrity": "sha512-CcbFL0H7GwYxXwd2sENXYVRR98p8URDM4sPAosXmnRAIIjFhT/t4f88X+U6R+b/XHtniojoNsVfh7SQnGZkprw==", "license": "MIT", "dependencies": { - "clsx": "^2.1.1" + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-client-ui-permission-presets": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.1.1-rc.2.tgz", - "integrity": "sha512-dR+7VNod6b1OU3NF8eeAC8if1K+Aj8Z80gj/ly5sBcfV2ezRuhWMwiazFrQfFum5k/EDuoKTL5lOt3pciWEu5w==", + "node_modules/@deepseek-ai/dsh-client-connection/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-permission-presets": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-ui-plan": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-plan/-/dsh-client-ui-plan-0.1.1-rc.2.tgz", - "integrity": "sha512-1kMI5AgyX3LPdXNEr75CaLwC40SIpYUCxWkyVO0xcoZ5VIXuB/E9jmBXTkEXS5US6IzSHWvam5Pm9PahPwX/dA==", + "node_modules/@deepseek-ai/dsh-client-file-upload": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-file-upload/-/dsh-client-file-upload-0.2.1-rc.2.tgz", + "integrity": "sha512-gLrn7EIxv59e/IBcxOv3x/1AMzkoBdjWAIAGnMLQOnPLl1HLddF1X1gLUAJ73XqhyPp4ePWmz/nReNOluTDN9A==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "zod": "4.4.3" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-plan-mode": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-reference": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-reference/-/dsh-client-ui-reference-0.1.1-rc.2.tgz", - "integrity": "sha512-45Fsle7tGJsIjODdFFESK5PvO0Uk505UgRAy8vKUz36VGUl4v5WpofW562hFSaDBkUztbJQ6/UpCeEQnWs4bjw==", + "node_modules/@deepseek-ai/dsh-client-file-upload/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-client-ui-renderer": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-renderer/-/dsh-client-ui-renderer-0.1.1-rc.2.tgz", - "integrity": "sha512-yCpJWKrA4DLd9lwHuUUIdId8H9Vcoq6xtQoNh3UxOYy4KDeoKbcMsRpOOShlnkxdJYGKOoRk3GpRaDw5RPlrwA==", + "node_modules/@deepseek-ai/dsh-client-hmr": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-hmr/-/dsh-client-hmr-0.2.1-rc.2.tgz", + "integrity": "sha512-DVUtooBYF2AISGZB0/qRloXv4uRmf7AAtCNaqDo7T/S3csTjS94unb3hYfPGWgURnaG92lY8vQ8i8iw2EdrDBg==", "license": "MIT", "dependencies": { - "use-sync-external-store": "1.2.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-settings": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings/-/dsh-client-ui-settings-0.1.1-rc.2.tgz", - "integrity": "sha512-WqEQkyjW467leTJoA31BgqM+nALI3JnrvN1IXDhJuKd8E9nXhTLJcRgDrovEUkh2cjbHF8g8gQJ5Qafg9PzJiQ==", + "node_modules/@deepseek-ai/dsh-client-locale": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-locale/-/dsh-client-locale-0.2.1-rc.2.tgz", + "integrity": "sha512-TeNrG6Gpj83AZdTJblHixtBnPqu6++8XLv96r0bwRrGBD28rqysUU+xvf009YVnBlz0c8g8sdhNZK+WAfJPQ2Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-settings-general": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-general/-/dsh-client-ui-settings-general-0.1.1-rc.2.tgz", - "integrity": "sha512-0hXnCb+nKBdlNPgblzhckUQNVrUsfhwDWsexYWs2wFoSWcfALfwjwgN9ZMwS5dj9LLvl/rWib8w9a4miuhFENw==", + "node_modules/@deepseek-ai/dsh-client-modules": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-modules/-/dsh-client-modules-0.2.1-rc.2.tgz", + "integrity": "sha512-6JN2EJgR2Dt0+oLxper1m+WC1lfHppv1QnOHfb9ARsmExcQoxzGPj+Cgzs9zoz57yMb4T2w1xZs+5iDN6j1vHA==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "clsx": "^2.0.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-settings-models": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-models/-/dsh-client-ui-settings-models-0.1.1-rc.2.tgz", - "integrity": "sha512-LfGTsbJpCNG0nhT9nBzUucVxnJ5tlY78i5JmlUEb3fwEFUM2cq9pmhv5sXWFdn3LOAnGr0QcyTm+08iBubc6zQ==", + "node_modules/@deepseek-ai/dsh-client-product-analytics": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-product-analytics/-/dsh-client-product-analytics-0.2.1-rc.2.tgz", + "integrity": "sha512-LQ2CwytB8xOX3RTJ8K8nbtayV5DUUeLv4qkY5jJB+ThLREnmBwdPJTl/I4xXwRqcypTNdRMNfn1Ixntyl0+KUg==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/-/dsh-client-ui-settings-plugin-inventory-0.1.1-rc.2.tgz", - "integrity": "sha512-HSxcn/UbifCGsVSYPxd2dHlURTOqRQ0a907rmQ5TMdPCabEauD+yc0m910XcL+3rRlyTsfW/Vy6AjpNK8cAeJQ==", + "node_modules/@deepseek-ai/dsh-client-product-analytics/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-client-resources": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-resources/-/dsh-client-resources-0.2.1-rc.2.tgz", + "integrity": "sha512-Ymcigi24Qwis/2hWDnacEqzf1pj1GXJv/lZ7Wy9IN7q6HVoDGZvtkkIbubiNAvyu9GSH2GBiCYksABMZVGok7g==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-settings-plugins": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-plugins/-/dsh-client-ui-settings-plugins-0.1.1-rc.2.tgz", - "integrity": "sha512-NspsecIb4YdvE54jmaGBW/MjFyuu/MwUjQeM/I9iAgMOpLO+jOsoCOT4M8Su1Nfy1bxokgks9XcBJOcNGjN4Vg==", + "node_modules/@deepseek-ai/dsh-client-shortcuts": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-shortcuts/-/dsh-client-shortcuts-0.2.1-rc.2.tgz", + "integrity": "sha512-10H9nWokwokZ3JsFnHB6ZG78bdglteKkmZbsJqZPzEEDxAvzT1JQ8e+14a1ga7Gxpc0/nzq2omAffkwF1Qyong==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/dsh-util-crypto": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-sidebar": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar/-/dsh-client-ui-sidebar-0.1.1-rc.2.tgz", - "integrity": "sha512-UCilyaNPwMO54JYtpCW5leLL+ecwtoRd4sHNVNG94aPQAqZOrqH+hqrBBsuolDJ9d0cKG9K5Mtew0fPz/hByZA==", + "node_modules/@deepseek-ai/dsh-client-ui-agent-preset": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-agent-preset/-/dsh-client-ui-agent-preset-0.2.1-rc.2.tgz", + "integrity": "sha512-Tp3CI/LpwykU3ttjG7MfLHk+5jep/qgwL982MAyYuoRHItuj/zvGLH/fXX0X8VAWW9OtRyv7gs/yFffkfXZ5dQ==", "license": "MIT", - "dependencies": { - "clsx": "^2.0.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-skill": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-skill/-/dsh-client-ui-skill-0.1.1-rc.2.tgz", - "integrity": "sha512-LMpSKA/QIqsv6uGawiMUOY0wgdCzoohBm2Dg7+DGvMmbxdHiUkp0N6HM1SbgO35sS/KP3qBmyDmDrvHrye2EDA==", + "node_modules/@deepseek-ai/dsh-client-ui-approval": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-approval/-/dsh-client-ui-approval-0.2.1-rc.2.tgz", + "integrity": "sha512-aH77mdxJ1IgpOJ6cTPop/MAxyjC3vj27bfgZX/GyiiysytRGfI4ExxRVQbSkZO7DwDkiL6ro/Hs1ctURJ7VYuA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-subagent": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-subagent/-/dsh-client-ui-subagent-0.1.1-rc.2.tgz", - "integrity": "sha512-YvlWV2GpDVKR/0Ay4rn9whgPx1o0cLBV1TsOzGAp1yQbm2nKjJ3fUJgwcq2Tf6LAZLpJqGxmg8ji0upmkLBjUg==", + "node_modules/@deepseek-ai/dsh-client-ui-attachment": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-attachment/-/dsh-client-ui-attachment-0.2.1-rc.2.tgz", + "integrity": "sha512-zbigTmjzNTqhR2wMWHcKUleZB1t6/uC7Cd+4S9oD1HFc5J05URIC9r6HbqzP3c9EW0gp7ctlahU46ZLvFt0skw==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-theme": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-theme/-/dsh-client-ui-theme-0.1.1-rc.2.tgz", - "integrity": "sha512-gRKI92D+EZtOy7UBkRfNvyL4e/3HikZ7exQSfgGpLEJ278/aXMvStNbL5ZgWVC41+MSZsBUk3dZAfbXNjelz2g==", + "node_modules/@deepseek-ai/dsh-client-ui-brand-official": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-brand-official/-/dsh-client-ui-brand-official-0.2.1-rc.2.tgz", + "integrity": "sha512-LCTTprrINF9/kt6pzBCYg0qjJ6qP2oDoT2iG7sIsKE9h9IjEbZy454w9e5t2fW7/QrE8hccIh5rImyAD+9IeFg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "clsx": "^2.0.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-tool": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-tool/-/dsh-client-ui-tool-0.1.1-rc.2.tgz", - "integrity": "sha512-JLLkipHwhpjJsUTECuS7jMq8z1YD9CVYS5ZRZvIYvOd0OxgvBB/ga/CJ5MIIBQhCj8/gLvseAOiqV3wm2OF2Hw==", + "node_modules/@deepseek-ai/dsh-client-ui-chat": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-chat/-/dsh-client-ui-chat-0.2.1-rc.2.tgz", + "integrity": "sha512-ZDT17V3+LoavO3CJZ5alZf6edoh3+Qnllb3Y2DKOSmJYfpbPvR45uWl2DYxcnU4EAW2XvT8/k6KkbklFR1ZV8Q==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-trajectory": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-trajectory/-/dsh-client-ui-trajectory-0.1.1-rc.2.tgz", - "integrity": "sha512-8w8klclVCsqqVM6shVWe0vXtfs6pfEfviKHXPLtX70J+yW042wrRkOqcNh61W14QR+OCfq75TIJZbNPDiIf+2Q==", + "node_modules/@deepseek-ai/dsh-client-ui-commands": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-commands/-/dsh-client-ui-commands-0.2.1-rc.2.tgz", + "integrity": "sha512-IcP9698+qENCBIU0XQk45PtKOX0KSMj68de2rf/GtddkQr2vwyEB3g9U4E9mA5sgToRpGUm6C7LoQGdg5yYPlA==", "license": "MIT", - "dependencies": { - "@tanstack/react-virtual": "^3.14.9", - "diff": "^9.0.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-user-questions": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-user-questions/-/dsh-client-ui-user-questions-0.1.1-rc.2.tgz", - "integrity": "sha512-rIyokmmWzOvT5W4zBRlPEs84PtcUXKleGW3oABHaAyIidCcWylT868xzXtUiPBh19Wkr734sZT3rYppoC9fqmQ==", + "node_modules/@deepseek-ai/dsh-client-ui-conversation": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-conversation/-/dsh-client-ui-conversation-0.2.1-rc.2.tgz", + "integrity": "sha512-ER7x0so7Owcfgs5ok8WTv3PYcuHUbwUbv9IV2kP6PbxwB+SxCAXtSRRCKlnkTt3WFd+KbwbluVfWBByLJEl9hQ==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-workflow-run": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-workflow-run/-/dsh-client-ui-workflow-run-0.1.1-rc.2.tgz", - "integrity": "sha512-XuAZStSyy834UdX3jcobv4ZleLXcuwGsn9BVk4/SSi6GKOG1wzsVgxJFi7IhaKGURxuCpheUQKe8+TuE1ScePQ==", + "node_modules/@deepseek-ai/dsh-client-ui-cordis": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-cordis/-/dsh-client-ui-cordis-0.2.1-rc.2.tgz", + "integrity": "sha512-vuNoRF1MVLk5aHSC5v+KUJ/+sWnfJ19XUZhNqqwRYcLogtZY2ITUtQR5GMW0pYBaSDsNbLO6MIimSOWc7+Wwew==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tool-workflow": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workflow": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-client-ui-workspace": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-workspace/-/dsh-client-ui-workspace-0.1.1-rc.2.tgz", - "integrity": "sha512-k/jB5ke2e+oNyNKzu4/PBlriwCHKVg5bY3kn7Co3MtWZdqbJ42hfwZkRNMnn+nmziQXCVXWRzuiHZt0xNTAveA==", + "node_modules/@deepseek-ai/dsh-client-ui-deepseek-model-label-1017": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-deepseek-model-label-1017/-/dsh-client-ui-deepseek-model-label-1017-0.2.1-rc.2.tgz", + "integrity": "sha512-OPL944XMW6693Uooj9hiC1iGpoz8ogXipqb5htwOFOC5BIh0Xax6cgzQO+pPMiWnuMdqaQQllhHVas4lgHYKIA==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-client-ui-deliverables": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-deliverables/-/dsh-client-ui-deliverables-0.2.1-rc.2.tgz", + "integrity": "sha512-HKD7BQKRL/euLbKBTpHJ34UFlhAvf5eCKHZbKqlyBq1LOzkK9n34mUR9iiXFq90cK2MYertaFeW113PRBfDAbg==", "license": "MIT", "dependencies": { - "clsx": "^2.0.0" + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-cmdline": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cmdline/-/dsh-cmdline-0.1.1-rc.2.tgz", - "integrity": "sha512-0/dEVUm7Xy0aBo0DBqC5F3kxC5ahzKcmHOF+Q6E1lBqTwN2xytGYTh0TSfj+6rS31jDqxeIvWxy35bLl83n/Sg==", + "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-directory-picker-browse/-/dsh-client-ui-directory-picker-browse-0.2.1-rc.2.tgz", + "integrity": "sha512-/zzayLZ7EnwmpnmPRzmZ7ZTFStBgbqOZfiLtjWithSPpai12SoCtXRcjVwqKOrojX4unVYlymaOqstch9cjFEg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-code-runtime": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-code-runtime/-/dsh-code-runtime-0.1.1-rc.2.tgz", - "integrity": "sha512-SgFresqH5UABzRQZ7tOfqzOLMHF7089VeH+mfcwNQH5peOavgEKrAGOYz/9RnISH0XmMrj/x177t8gfO8Uvo/w==", + "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-directory-picker-native/-/dsh-client-ui-directory-picker-native-0.2.1-rc.2.tgz", + "integrity": "sha512-ADOtgSNx05CiGRCBEE+/KUravwRhf50sq1TSSe/r6V08oJhKLSfh++ht34pohJBu51KVsoH6sBuL1IX+YCBzow==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-code-runtime-worker-thread": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-code-runtime-worker-thread/-/dsh-code-runtime-worker-thread-0.1.1-rc.2.tgz", - "integrity": "sha512-wE+6x4yGsyg4kntVQFOcb5PiAg2Wb3gs1UNY7SHWC7WOcWCAbREZRfqaoAAxO7AZuqlFhBou7wWc6dZqtGENkw==", + "node_modules/@deepseek-ai/dsh-client-ui-goal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-goal/-/dsh-client-ui-goal-0.2.1-rc.2.tgz", + "integrity": "sha512-Mj7s2RUqOmdbcwK+/UwGjOWgLGVBTIAwBIap6z/Sd21uRZOE9bOgR3cpssuW5TVfPcEsJV+hVzO7xGul5uW7ag==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-code-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-command-compact": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-compact/-/dsh-command-compact-0.1.1-rc.2.tgz", - "integrity": "sha512-rLNBnq5jo9nm4Etw5PrVtcYlFDTM8IQt8w5aL+7CQiEpC6OevP7QzvGrIbJ2VTG2GX9yN6fJosPd0Ky18EQuYQ==", + "node_modules/@deepseek-ai/dsh-client-ui-input-trigger": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-input-trigger/-/dsh-client-ui-input-trigger-0.2.1-rc.2.tgz", + "integrity": "sha512-FhSxRyoveLPZ92bLgom+5jvIgyaGJmwk52bgCTzBj9ssif1zIG9KlfKVHX/u8LkEzX4fAYpaDlzKBQkkTStDyw==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-command-feedback": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-feedback/-/dsh-command-feedback-0.1.1-rc.2.tgz", - "integrity": "sha512-0i0EDLFP0h1UpeWq1KrrUXKJFBK7aoCFfzcWnrrD9Lj36I09XfjNDJIm4kcYNTkbOFb4o3MWNw01FKC5rNJjXA==", + "node_modules/@deepseek-ai/dsh-client-ui-jobs": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-jobs/-/dsh-client-ui-jobs-0.2.1-rc.2.tgz", + "integrity": "sha512-sUJS0Ri5o8V7Wr7eN+JJDq4psT5BsUqAMKA/+EBIpBLaIKHj8UbMWUzfs3uLAkCwM+k7v9w14NBr+o4EhglChg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-anonymous-user-id": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-telemetry": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-command-goal": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-goal/-/dsh-command-goal-0.1.1-rc.2.tgz", - "integrity": "sha512-AfiBUOd2QjM2PW73nwQJtSDUri8RtEB6l3XVlznUrfY3VFu5tF7GcFUXffTxgtroWrvaqETs/vQJc/zsn8tGwQ==", + "node_modules/@deepseek-ai/dsh-client-ui-layout": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-layout/-/dsh-client-ui-layout-0.2.1-rc.2.tgz", + "integrity": "sha512-9/uJTKfhRX3wnUXFdLlL2ZdOL2LtONkDvVhhm+OXe7owbWIfN9WnIUsaNNDERgZLvzQbR33rgWIn6ESGBSG0uw==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-commands": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-commands/-/dsh-commands-0.1.1-rc.2.tgz", - "integrity": "sha512-BOIe4Sht9rmMv1a6b3GWjWBbeWr7PtHlAy41vgpaymvUUuzOapOIA648ZMGCI/crRIt72Umev2FHtSwCNSbYZg==", + "node_modules/@deepseek-ai/dsh-client-ui-message-feedback": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-message-feedback/-/dsh-client-ui-message-feedback-0.2.1-rc.2.tgz", + "integrity": "sha512-5ocmS/R/S/T7brYC/e+WNo1jPhI/B5MWTcLToIA2BSguAJlFNUMMaxw7nYEVnCp7uv46Fc89d/t2nQFfn2Bmbg==", "license": "MIT", - "dependencies": { - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-compaction": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction/-/dsh-compaction-0.1.1-rc.2.tgz", - "integrity": "sha512-LV5GAIx7GO8DCRivnN2bmLmuucsYDG+ifG18BaXBqsVKdrzmaIu5o+CBxQAI2bX1N6mfBenLxmvCnROkyumLTg==", + "node_modules/@deepseek-ai/dsh-client-ui-model-selection": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-model-selection/-/dsh-client-ui-model-selection-0.2.1-rc.2.tgz", + "integrity": "sha512-vQ/MfeWbhR8kEjKDxWnJ9Wf5RgltngVnq+8TAnfx5cA/4PDlUD/Fm4K3/KWAgUMz7pS+x4yno4ri3SHSsksb5g==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-compaction-basic": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-basic/-/dsh-compaction-basic-0.1.1-rc.2.tgz", - "integrity": "sha512-qNg4JqWlZ5NvlFmaVZtJ+RuvJUtYFgdS7xXlhhBGSHbMZi4sHgB63Mo+9Y0Rl8glLSxLjo2reMMPlECN+duUuw==", + "node_modules/@deepseek-ai/dsh-client-ui-open-in-app": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-open-in-app/-/dsh-client-ui-open-in-app-0.2.1-rc.2.tgz", + "integrity": "sha512-Xm3P18urNWhpUIS0fdFmQ7uKAZbNUgv+lMG5F7NmoWhtnHZVDtAwVXZjG9H9cGAsgQdbhhOrH7oo3N/9MsUQjg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2" - }, - "peerDependenciesMeta": { - "@deepseek-ai/dsh-compaction-tool-result-pruner": { - "optional": true - } + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-tool-result-pruner/-/dsh-compaction-tool-result-pruner-0.1.1-rc.2.tgz", - "integrity": "sha512-HUS95EsuveR8fuzaZW0qSv90mVWbv6aj7W9zfWPbr5BmLJsmomQlw6jFX3GodN1Iv8qWtrzFkMuxDHk4ZTHcAA==", + "node_modules/@deepseek-ai/dsh-client-ui-permission-presets": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.2.1-rc.2.tgz", + "integrity": "sha512-J0rszlpKCWqTwNZUO84E8SkEFrXOp48t117sXCYgqrc3Xym3DXLbPDIFoi6vtl7Fk2EX0vFu6vu1zcrepGC3FA==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-cordis-client-runner": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cordis-client-runner/-/dsh-cordis-client-runner-0.1.1-rc.2.tgz", - "integrity": "sha512-4/DNA4fCSa1nIb52mbRT3TV8wpsnDzjMRJfPbffk8+Fv/bj50jaeQY5yMgUXsUYWX98/RlekXTK4u4LdjtyHKQ==", + "node_modules/@deepseek-ai/dsh-client-ui-plan": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-plan/-/dsh-client-ui-plan-0.2.1-rc.2.tgz", + "integrity": "sha512-GI8O1OE77BDHCTfVnZJDC02T7J66orjNPaZHR9080Ho6VOwCgcm8pE20NemMPRtHbikaEiiF8dRMH9r4EZzy4g==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-modules": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-cordis-host-runner": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cordis-host-runner/-/dsh-cordis-host-runner-0.1.1-rc.2.tgz", - "integrity": "sha512-+AQGegPy+gdtcjTTPxDDYwAFUn6BB1J/MFFbmpPr+WIqJoDyVsuCDe8Rr8mCJmxs12CmTZXXSOE03LW203W8fA==", + "node_modules/@deepseek-ai/dsh-client-ui-plugin-manager": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-plugin-manager/-/dsh-client-ui-plugin-manager-0.2.1-rc.2.tgz", + "integrity": "sha512-T/FfDjKRwjFIdBQTtN9BHSVquuMJ970ICzE//oKqaa5ZU0bRG0RVllwVatL6FIKu7F1M1wzgt3tW+b6vstd2eg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-credentials": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-credentials/-/dsh-credentials-0.1.1-rc.2.tgz", - "integrity": "sha512-aeVBaH07rox7NuSNbSqbz8g0eNb2IIhNbrZngj/VxUsr/TR9TXOq7lm1CL6SBUDlstGw3vNWeXyhim/DmA5iSQ==", + "node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-credentials-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-credentials-local/-/dsh-credentials-local-0.1.1-rc.2.tgz", - "integrity": "sha512-xlDyX9BrfT579qv6ilh4EsqtMs4A4oYsuCYHvK8UWQ6YRflxC4GiXDU44iNfosQo5BQwzJzUlBmwHy9id3e71g==", + "node_modules/@deepseek-ai/dsh-client-ui-plugin-market": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-plugin-market/-/dsh-client-ui-plugin-market-0.2.1-rc.2.tgz", + "integrity": "sha512-vxf6BzUqEA8YRemGJRGC5lcP8vU9xlSjO92wSACMPHYHcbJdJmUybPLJH5lu4/ZU2UNXvD4K/NxNnpWyecuJzw==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "chokidar": "^4.0.3", - "yaml": "^2.9.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-atomic-write": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-file-reference": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-file-reference/-/dsh-file-reference-0.1.1-rc.2.tgz", - "integrity": "sha512-8Pd4SNHhV6OlbwfV5K4qmFb709I0Z68qgaUQJ7zM4BTjClNe1/dktQnETtWPfqbPTx/2sNKXM1rz4WXuROrIfQ==", + "node_modules/@deepseek-ai/dsh-client-ui-reference": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-reference/-/dsh-client-ui-reference-0.2.1-rc.2.tgz", + "integrity": "sha512-jRZCoaEpmvka/0c0u7gscTFf8k5zt/2XPW1uTITBq+Q+/rXpJwPebl1Dm9d00LmF+HtwNwfGXlQX6Y9x8C+okg==", "license": "MIT", - "dependencies": { - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-file-reference-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-file-reference-local/-/dsh-file-reference-local-0.1.1-rc.2.tgz", - "integrity": "sha512-aFOn9vsRfjWJYJyBLLD/kItD/KxAzxLNpKTUlxy8mSBMPUM5HEpUkAopgOg265OsjfvKdAVSt+eY1snrURXNgA==", + "node_modules/@deepseek-ai/dsh-client-ui-renderer": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-renderer/-/dsh-client-ui-renderer-0.2.1-rc.2.tgz", + "integrity": "sha512-HYS0vcreOjVEyizEbPJdbH42w9RU+zWtVXdhrGdPAUdQKTgiX7K12WITv64/w8T2efbO+g94SBTswWjfxGKXoQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-fs": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs/-/dsh-fs-0.1.1-rc.2.tgz", - "integrity": "sha512-8j+6MffvCHATLQrhAVfc9rKyunKu/O7mjjJzmdsUSdID7V4iUYMwqPamhlAyI+tfohZu/vcforKzCRIZGmCYug==", + "node_modules/@deepseek-ai/dsh-client-ui-schedule": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-schedule/-/dsh-client-ui-schedule-0.2.1-rc.2.tgz", + "integrity": "sha512-Sj656VAqJc5lBEufkTSdgFggLEECHOFcEgAvGlsehk6kie7Fc9Ifchqred4hbuw3As0MFG0o6cj/4NLmbb63mg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-fs-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-local/-/dsh-fs-local-0.1.1-rc.2.tgz", - "integrity": "sha512-jvn1MsAMqCmt5SjRNkPjmpc+RIWrZQrBVtf/OpmKr2PaBEGqSbCkPApWDE9iSMhcuQg6k5evScOXwAsduzKOLA==", + "node_modules/@deepseek-ai/dsh-client-ui-secret-mask": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-secret-mask/-/dsh-client-ui-secret-mask-0.2.1-rc.2.tgz", + "integrity": "sha512-tiwFF8aRCBl7eeyGCxHyo0Ay6oo+WDbQa4AMnY1oQaPMUCAtt2V4b4Fn8fjNFUswYj4EeiCS5SsffKTM4gTe9A==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "koffi": "^3.1.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-fs-observation-policy": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-observation-policy/-/dsh-fs-observation-policy-0.1.1-rc.2.tgz", - "integrity": "sha512-rlq7yu4xavkKK1Oa1/aNCOeUW7t/3OXJJOfOcZXuUgJn5f8G0AbpTDpp2CeuL1cHlKpbunGhEkKQ2N/dv7ZR9w==", + "node_modules/@deepseek-ai/dsh-client-ui-session": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-session/-/dsh-client-ui-session-0.2.1-rc.2.tgz", + "integrity": "sha512-PCmgTWSgzT7bIRzPkTFjX/zaWM/E/V8/Y1wFK5HPVcIDFffEaRttv7jvrHIG4JrCQSXAN36KxPbVBfhimqNWgg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-fs-sandbox": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-sandbox/-/dsh-fs-sandbox-0.1.1-rc.2.tgz", - "integrity": "sha512-PI65uLZ3ARkfVV/PXvACS1HEXggoOaXgYQzXQFdLOfm7AiHOdZWZccUAXBetpZhcNYIOKsVoLnfZkXcHByqecQ==", + "node_modules/@deepseek-ai/dsh-client-ui-settings": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings/-/dsh-client-ui-settings-0.2.1-rc.2.tgz", + "integrity": "sha512-oU8f/0+DsdbgF0XhM+Po7W4PDJmTbhifQVwIoAcKfj29JN/4tLxKqIKS0IRcMbIGD39BGFITne78KIMgrGJy3Q==", "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-goal": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-goal/-/dsh-goal-0.1.1-rc.2.tgz", - "integrity": "sha512-lSHTh4vfS6eRb9to/y+bjRf2+0QkNpY3tHJ29HMTewR9fJYZsEVVu4Hc+GPhPEjF7RpiD35/sKx+akijtDasyg==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-account": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-account/-/dsh-client-ui-settings-account-0.2.1-rc.2.tgz", + "integrity": "sha512-zOVB0l0/Hddn7jPwm1d/EG09R3vdpwFl32YqJmOT7gfTyeeptXDykobNyFI5gsSguaaBkPg1hEeTL5HI3AbOEw==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-goal-round-driver": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-goal-round-driver/-/dsh-goal-round-driver-0.1.1-rc.2.tgz", - "integrity": "sha512-pWipAFKx0l+ai/gJvNQNNk+ukHkb5Rb85llAhJVwyk7YfXLC2G8lIfnG7ln58M3vfUKuLxQLE/GL1Qbr7FQuyQ==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-agent-loop": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-agent-loop/-/dsh-client-ui-settings-agent-loop-0.2.1-rc.2.tgz", + "integrity": "sha512-rT3MWsy/oIu6negzZEHsQ+fsr6cjKbWzsbwG3LfCaUrBj6WAztBEwmYCyzYnvSYrwnwW5927KF6gxlwhLhLJfg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-headless": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-headless/-/dsh-headless-0.1.1-rc.2.tgz", - "integrity": "sha512-Pk50xwmUUehOxNe8DJ2/tThj7Aw1MmJQeUkfAQh9miF7Tm+WOOxiOOei/H4wjH9cf+FuqtbLDw6jrHmGotfhjw==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-general": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-general/-/dsh-client-ui-settings-general-0.2.1-rc.2.tgz", + "integrity": "sha512-3wwd8JwR8WX9eydEcHmUtIicNa1+ft8MA/QSleq0VAWqM7bBOXIzSLSpD8H9izyNKW0XnW1UWOR3zoDTsVQ4Vg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-cmdline": "^0.1.1-rc.2", - "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.1-rc.2", - "@deepseek-ai/schemastery": "^3.18.1", - "commander": "^15.0.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-default-model": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-home-paths": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-home-paths/-/dsh-home-paths-0.1.1-rc.2.tgz", - "integrity": "sha512-lGsP7sbnu20AiRAb+gxYiKx9oa9r1D/8Fr6BwWHXpaPx6ZE4Qg0+ybh5SZVfGQ+XhLcQisu3nwWemEjtTJGiig==", - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" - } - }, - "node_modules/@deepseek-ai/dsh-host-apiproxy": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-apiproxy/-/dsh-host-apiproxy-0.1.1-rc.2.tgz", - "integrity": "sha512-dplRnGGXXsQYFQ1KMHymAM0iaxuE9Z153JHYcGEgOwXNkS3HA20gSi3yMt6fz+zi/cMHYXvY1JQhS54BTc761A==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-default-model": "^0.1.1-rc.2", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-native-command": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-query": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-questions": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workspace": "^0.1.1-rc.2", - "@deepseek-ai/schemastery": "^3.18.1", - "fflate": "^0.8.2", - "zod": "^4.4.3" + "node_modules/@deepseek-ai/dsh-client-ui-settings-models": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-models/-/dsh-client-ui-settings-models-0.2.1-rc.2.tgz", + "integrity": "sha512-tjxvP66xh+i3h4Qf7h1tv7cEWVVtNAONDEN2ZM+Sv7Z2Z6P+hnr+mlXIjQdC+ovfsYQdg6TMXRle3cRr9x3Vug==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-directory-picker": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker/-/dsh-host-directory-picker-0.1.1-rc.2.tgz", - "integrity": "sha512-m3puwS+bvJQ1eASdpEEwlQqKa9znhBSgtoSSI0GZN5VMynZVl7E31HMltENz3QC2Nd+C3bh7vNjrJFtumUDsLQ==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/-/dsh-client-ui-settings-plugin-inventory-0.2.1-rc.2.tgz", + "integrity": "sha512-kybMS3EavS/0NdUg4tYpocBqcYj0eK/ZEPxbvi8s9b57RQpFVMw4ATzaldi10HL/+xiiObducQzZpxwrb28aJQ==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-directory-picker-auto": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-auto/-/dsh-host-directory-picker-auto-0.1.1-rc.2.tgz", - "integrity": "sha512-YW79cegRtVJ3zeVEvYPCpyfIGZV8l5iXUfdm2DI2lwUZsbQ0ZH09AeeLyy6fREmbtuy99l9MExKG1KYWl9No4Q==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-plugins": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-plugins/-/dsh-client-ui-settings-plugins-0.2.1-rc.2.tgz", + "integrity": "sha512-iUBZYxUjYZRl2udD7aXAKRrfGD55/67E2RLzak4N9LdhaTaBNFHktpJIYlg6pyyy7nwYkjzoegK9gOyI8hG3BA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-directory-picker-browse": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-browse/-/dsh-host-directory-picker-browse-0.1.1-rc.2.tgz", - "integrity": "sha512-iLIXqO2fWDsItbtiNPE2Yv2KK0u5A4W5xDbNgd9jpLvzB9vg0NLv4wG9zI4azQ0zf0XgmfPt7BK7UpMM8iStKA==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-session-log": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-session-log/-/dsh-client-ui-settings-session-log-0.2.1-rc.2.tgz", + "integrity": "sha512-et4jNkxFDS0iVqEEf4VQP6F/8h6ryjDmol+Cjtm9tEdzGd3RjQqWMBl8/kA/ENGpPwigK7un7M/hvErsJxRzwA==", "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-host-directory-picker": "^0.1.1-rc.2", - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-directory-picker-native": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-native/-/dsh-host-directory-picker-native-0.1.1-rc.2.tgz", - "integrity": "sha512-EvCe+NWYCMvJM1FCZCqrT9ggwcQjCGfnI+9t9F1ZIXbjmnhTD1X9K9xt0Ber61lO7ZN20h98Hls8gkzWbHt42A==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-shell": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-shell/-/dsh-client-ui-settings-shell-0.2.1-rc.2.tgz", + "integrity": "sha512-V6WcQS0DFuQpVajKq4D8mPDHBJGKEyN7qCYgSEYQMa09LCrryypp7Sb7nWU3xOLmfSyabIZpKJnvBf5l+4Mhpg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-host-directory-picker": "^0.1.1-rc.2", - "@deepseek-ai/dsh-native-command": "^0.1.1-rc.2", - "koffi": "^3.1.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-frontend-static": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-frontend-static/-/dsh-host-frontend-static-0.1.1-rc.2.tgz", - "integrity": "sha512-KmdcBiprbRPuCK2d5e6VmXbXmT6fwd6nwGtqU6iOxh/Tl3/1V3c/lg7dvJu1LeOmyw8epXFbzgEQNw5ATJtaBA==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-subagent": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-subagent/-/dsh-client-ui-settings-subagent-0.2.1-rc.2.tgz", + "integrity": "sha512-WuUD+MnefgRm13aPzQZi9LRf3R4mMVGsNQB3WUJ2pLFwUhSLQqVIO9+XgQHCP00z5RdKBI4vwHe9F+e6LuhwyQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-plugin-inventory": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-plugin-inventory/-/dsh-host-plugin-inventory-0.1.1-rc.2.tgz", - "integrity": "sha512-Hud9ezW0bexWfhX7C+c5rdUDX1xzbEGDzj1lGQyj/QxdrxHYHjGrJq3tLRyvN6K4FSmEdG2IBKdQGCOLVrIthA==", + "node_modules/@deepseek-ai/dsh-client-ui-settings-web-search": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-web-search/-/dsh-client-ui-settings-web-search-0.2.1-rc.2.tgz", + "integrity": "sha512-UWkz80ifSE/S2LsZwCR91y1HLZajMdhjB5sIUPjCcjFMy4XQzXqIVidW2b4cLbaL0lWKajWkBb3cZefLCj1WmA==", "license": "MIT", - "dependencies": { - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-host-webserver": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-webserver/-/dsh-host-webserver-0.1.1-rc.2.tgz", - "integrity": "sha512-t9MrjC65QHiiWhG9V8UZxgfE/aWYhJHHrIM0kbTvtXxg4tLGIKo/upHp7iiag65F3HTkVLrH/DUyPMi4v2ZA7g==", + "node_modules/@deepseek-ai/dsh-client-ui-shortcuts": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-shortcuts/-/dsh-client-ui-shortcuts-0.2.1-rc.2.tgz", + "integrity": "sha512-RbyycgDBNhb6pbt9zwLVICdGjGc52ii0uypNfBzKEQ4X5RT9nwEDwPrQAP67sKfrwKToMujM9Gyo/Qsu5xJqiA==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-invariants": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-invariants/-/dsh-invariants-0.1.1-rc.2.tgz", - "integrity": "sha512-l+1Om/EDFyMjhgSuEx2WDLLA2fia/+ga9mBTCoT/MMslsnWaK5G0/lWwbwlTBSaJ6OfmYc3DuBgox8DbgIGHRQ==", + "node_modules/@deepseek-ai/dsh-client-ui-sidebar": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar/-/dsh-client-ui-sidebar-0.2.1-rc.2.tgz", + "integrity": "sha512-nm/JKDUL/GNjwlTT9AQ4QnWU7hTgG81Ib6yNa0NOwCrC5TFRAb+3WhpvshCqcS6ofwhdXMjN5KB+zWuOrZdQRg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-jobs": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-jobs/-/dsh-jobs-0.1.1-rc.2.tgz", - "integrity": "sha512-SXvDJMvcUrGrlzIyE7j8/lI4Pj1nDe/UOR8C05Zagp+/0R8p46n6KylySvZdPAFENV5t8WX3Fw3eOaS4No0+wQ==", + "node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar-browser/-/dsh-client-ui-sidebar-browser-0.2.1-rc.2.tgz", + "integrity": "sha512-Jn5H6feCWeadAQAbLlc/M09K26UVgccupedyNLKLwoIbRSapTR65IkmU2sR5q4gDt2uSNOWK16mtlEVz6frjkg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-jobs-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-jobs-local/-/dsh-jobs-local-0.1.1-rc.2.tgz", - "integrity": "sha512-26lg7mi9RKnu8IP8SWLbY+uZenbqF2AkAZvgZaLDlw1z58NtBsbgKgh6FNC8JXEyknAwYc6auQQKF+nLTlEjCw==", + "node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/-/dsh-client-ui-sidebar-documentpreview-0.2.1-rc.2.tgz", + "integrity": "sha512-F3nMaxmKxwF7snb0xOI48pL75FYiubQ5u74l4qqx1MoQkU+MNajHIe1MnJ/+D47+VQAdUqSttB9hR5Zy+SHEtQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" - } - }, - "node_modules/@deepseek-ai/dsh-launch-environment": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-launch-environment/-/dsh-launch-environment-0.1.1-rc.2.tgz", - "integrity": "sha512-LIjPUPwaZ2cIiz98Oqxn9TDKXhWlp+0EGmUhk4RerBAkqRVtDl0B/leK1pSZLLIR+qcr+VAwLGJagY8Xm9XWvw==", - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-llm": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm/-/dsh-llm-0.1.1-rc.2.tgz", - "integrity": "sha512-ASJfjIdZbIXvLwi3rGo+eZb/GxMVV/WO5/XVD3B96mT8EIzrlw3+nMR6/CvmJVzcycKQ2XN0wj7jD6TasPRySA==", + "node_modules/@deepseek-ai/dsh-client-ui-sidebar-files": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar-files/-/dsh-client-ui-sidebar-files-0.2.1-rc.2.tgz", + "integrity": "sha512-LOIH7CCr9PpIXP48x/zxCakPIYomv7Nci6rexxL4FqGX6dXeWL6PtW7urZJ5CX89GChN0X2qgu8dkKCoc8CvlQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-llm-deepseek": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek/-/dsh-llm-deepseek-0.1.1-rc.2.tgz", - "integrity": "sha512-GH9AukC2kozv6Q8/9DDhACHSe7fpTG7o0iWGUEN/m7/qajCJ8abySOFi3N7otdVmolR6Mvz2GZDTn2HdHqkWWg==", + "node_modules/@deepseek-ai/dsh-client-ui-sidebar-right": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar-right/-/dsh-client-ui-sidebar-right-0.2.1-rc.2.tgz", + "integrity": "sha512-dz+fxvl17UP4iHKzQj1taKrLmHtQ4HjgAjxJONXjV7HqmfIRlVm1Goyxxe8Y3gm4t17Yd+oP7ykwGPRgMT2flQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "eventsource-parser": "^3.1.0" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-anonymous-user-id": "^0.1.1-rc.2", - "@deepseek-ai/dsh-atomic-write": "^0.1.1-rc.2", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-llm-pi-ai": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.1.1-rc.2.tgz", - "integrity": "sha512-/02zlUjTHlJkme5+eM6VFtuiK6TacI5rxwIWMaxItp/s8rz91grzWir+qxRsPrz6XIrmKXagyvi3m/tuRCtk5A==", + "node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar-terminal/-/dsh-client-ui-sidebar-terminal-0.2.1-rc.2.tgz", + "integrity": "sha512-tMaVRci5IcqpJaBp/KFZHICJ9ff3nL5Z4m/7yeB31o0YqhhYhJO4LFRkkwSnzW9+EKOgPfMVoV032PgXQdK+Gg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "@earendil-works/pi-ai": "^0.82.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-authorization": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-llm-retry": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-retry/-/dsh-llm-retry-0.1.1-rc.2.tgz", - "integrity": "sha512-a13Fpmn8HFy8LCjl6gljaNPxcVjO/R+/uMPDl0QLjwQcHWVyGW38ZA8jP5iRuFgdyNNXpyxLWuZXi/0VOH00tA==", + "node_modules/@deepseek-ai/dsh-client-ui-skill": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-skill/-/dsh-client-ui-skill-0.2.1-rc.2.tgz", + "integrity": "sha512-2TYWWge+ocdAH1m9iqJ/Vtzda2/O+MfBe06HDC1K3sYhWD83+h2/H19V6D415vdN5Ux5/gqohuC9PkBVplSStw==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-mcp-client": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-mcp-client/-/dsh-mcp-client-0.1.1-rc.2.tgz", - "integrity": "sha512-oxNes59UTkXuTmOqQr6+GhZW7u2JtqSYiI5eZyBQ6K+yjPEQESa3/rYnRI+gHGAtx8EFgn6hsdOS5uoEwtFuXg==", + "node_modules/@deepseek-ai/dsh-client-ui-subagent": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-subagent/-/dsh-client-ui-subagent-0.2.1-rc.2.tgz", + "integrity": "sha512-X9CEAM0omLUAWzaYoaIHtgeJCLh0sXmRbrB4ZQ23uwxcH9/FIJnpcyE76q3kml6DBoL9ZeKy9VnnukX3do/yEQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "@modelcontextprotocol/sdk": "^1.12.0", - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-message-feedback": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-message-feedback/-/dsh-message-feedback-0.1.1-rc.2.tgz", - "integrity": "sha512-GzxDiNvyUVs/bbbm+Hr3MfuU3wM8ErRF5z9XadnSGPYZvipZDAMrvrS5v6JgOUaZt6ApBpEMJ4xVgIel1VnGYQ==", + "node_modules/@deepseek-ai/dsh-client-ui-theme": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-theme/-/dsh-client-ui-theme-0.2.1-rc.2.tgz", + "integrity": "sha512-WO9hMC9BnxhkOnJNoEHi28DHlDimAoQsykWu5I+1rjkap7U/TgkSEPshzMg6nagUxJ4eFotH//IIZVMacJMU1w==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage-domain": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-native-command": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-native-command/-/dsh-native-command-0.1.1-rc.2.tgz", - "integrity": "sha512-GIknPrwU7vZOUQ2o/ES7Z0uUhUrZGp/yigKP+RXEu41VI9tcybiXQAA8CEdDFmNQ11R2wfYQhr3WO5vy35akWg==", + "node_modules/@deepseek-ai/dsh-client-ui-tool": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-tool/-/dsh-client-ui-tool-0.2.1-rc.2.tgz", + "integrity": "sha512-661V8pHw7gBunPXKdMnDrabubtxbOC6P2Dd0DOjWqxmBKUAgLDtDcg0YRn8kRomK7dauJnCx7e6H1oy2DM+fRg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-output-retention": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-output-retention/-/dsh-output-retention-0.1.1-rc.2.tgz", - "integrity": "sha512-tCni+bTEp/FWokfz3fqn4p6SzHn6pkY6H3HkS9UY5PHrztUE1ESUQUp41kIVtwUhRmJU7yissqjxe6kLDB6t2Q==", + "node_modules/@deepseek-ai/dsh-client-ui-trajectory": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-trajectory/-/dsh-client-ui-trajectory-0.2.1-rc.2.tgz", + "integrity": "sha512-x0GcPvCS8gJQ5H56KDQf3fFxPz5fbvoypJ9QpI+sImYGEVrsB/pLDHiy03/0zeuKdX60hboVgxHWh0enxqxNuQ==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-permission-presets": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-permission-presets/-/dsh-permission-presets-0.1.1-rc.2.tgz", - "integrity": "sha512-k9hdF0lXV6dmVNBeWTmJpk0okaaH3hnvpQVRfUja8mlpJgPr482QMReuQsGJkY8ztzSE+JtzZndPSXjRrvLzSw==", + "node_modules/@deepseek-ai/dsh-client-ui-user-questions": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-user-questions/-/dsh-client-ui-user-questions-0.2.1-rc.2.tgz", + "integrity": "sha512-KLnuEYC1lTkRSRbsxnhQvAf1Yy9NnrneCUsBa6h1B7NyewZlx+/E4gYMhGkcnoG7X62fV27qVuztEYUE/4gYHw==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-persona": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-persona/-/dsh-persona-0.1.1-rc.2.tgz", - "integrity": "sha512-3pQjr8qSCVmGtExX9WzGNF9tNHKAFjtDyX6g/2HY3Br/hzANfQY13F/HqdjxufB3K0Rsu4CNkq78TyweXVUZew==", + "node_modules/@deepseek-ai/dsh-client-ui-workflow-run": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-workflow-run/-/dsh-client-ui-workflow-run-0.2.1-rc.2.tgz", + "integrity": "sha512-7fGswd+FlzWls4IEX4+XPncXn4Jk2bNlw0kXbgvmpLwaV+sgNFRLK4PlCLUc5x4mDUsKGeG6vX1+UnOCgSdnwg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-plan-mode": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plan-mode/-/dsh-plan-mode-0.1.1-rc.2.tgz", - "integrity": "sha512-jIQ71skseprYkwcIkZfS5jtClF6Z5oDC8JIwMN5ukGRDkkoKTT+uLWnw3AgArAOBi0CIy8j5Khy7GP7v+02F5g==", + "node_modules/@deepseek-ai/dsh-client-ui-workspace": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-workspace/-/dsh-client-ui-workspace-0.2.1-rc.2.tgz", + "integrity": "sha512-v3ov7wH9/0npaqpACSCAnVIgc5ho8NofeU2k06xGFNmZwxM3//KPeKzHd17/rzl32agw6G2NV2+FbxMx6l3xJw==", "license": "MIT", - "dependencies": { - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-questions": "^0.1.1-rc.2" - }, - "peerDependenciesMeta": { - "@deepseek-ai/dsh-commands": { - "optional": true - } + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-pwsh-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-pwsh-local/-/dsh-pwsh-local-0.1.1-rc.2.tgz", - "integrity": "sha512-MtX+IN0dN60n9F8A07ugz4+GptSaoj2Jyub1vkUFkgpdiph9lDAh+PVVG4EKrusu5YG8eXDCDDnb3S1UNtrNiw==", + "node_modules/@deepseek-ai/dsh-cmdline": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cmdline/-/dsh-cmdline-0.2.1-rc.2.tgz", + "integrity": "sha512-GPS+IOjJTRQjP6kHPF92SWLR1Gdxd4gwkGTCYSxZ4MeoWWD4hW/10yIhlX2gI27xXHWwTQNHLYa4INSTafXjGw==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6" } }, - "node_modules/@deepseek-ai/dsh-pwsh-sandbox": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-pwsh-sandbox/-/dsh-pwsh-sandbox-0.1.1-rc.2.tgz", - "integrity": "sha512-hBUTg5p8TTQifZrfstbimVlBFyUOb7JhNkWKc+n6UpTzoFRSkPAvrjGeXKDmFI6jXpL4nXzLJoaIssfYnRg7bw==", + "node_modules/@deepseek-ai/dsh-command-compact": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-compact/-/dsh-command-compact-0.2.1-rc.2.tgz", + "integrity": "sha512-5q6uBirptnLmxPEaVYGvzgjemaTEtXphv5+ORfssJpyB88sodPOoQUvrHwbrV1/RIBRe0qBxXaIdJ/yniXJYEA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-pwsh-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-repeat-tool-reminder": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-repeat-tool-reminder/-/dsh-repeat-tool-reminder-0.1.1-rc.2.tgz", - "integrity": "sha512-alDGjPdN1o7BVnBy2h4WZa+Zgb6yT76fyAQ7T7wN6K9jbnenSuvCjQyhoehhSFZUEl8ldRqaafFhS9ErGpVmDg==", + "node_modules/@deepseek-ai/dsh-command-feedback": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-feedback/-/dsh-command-feedback-0.2.1-rc.2.tgz", + "integrity": "sha512-dVN8l4/+8kaAdBKC14vOCv9skiAkl87XGVe0ov35kJ7B7gptdqypcJohZg2ThyH8xroLZv8yiGq3KRc2ghPecQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-anonymous-user-id": "0.2.1-rc.2", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-sandbox": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox/-/dsh-sandbox-0.1.1-rc.2.tgz", - "integrity": "sha512-rnO2RqZ+ycpwrXrXlMcrhWAICdui3ZVTjNQ8eZrOPE18hAbX3tw0nLFq26sBjMSnBfDQHNZ4VaFpt0p8qhkPWQ==", + "node_modules/@deepseek-ai/dsh-command-feedback/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-sandbox-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-local/-/dsh-sandbox-local-0.1.1-rc.2.tgz", - "integrity": "sha512-Sn1RTGRFLA3fB+thcBwyyfDRdpgXJ7/6qBz/piFh+emJ4IfGFlBEUz7H2QfuwOGAmzlOmncxf2brcM5SfAgJ2A==", + "node_modules/@deepseek-ai/dsh-command-goal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-goal/-/dsh-command-goal-0.2.1-rc.2.tgz", + "integrity": "sha512-0nl5/JTekzrjAqHb/CnnNtEYsU+e3cdjIpBg0odVlR/7BWvhZJqYfXcsQv7ertWrH8EeSBIMw7/Mw0/M7qtm/w==", "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-sandbox-windows-acl": "^0.1.1-rc.2", - "@deepseek-ai/node-addon-landlock-run": "^0.1.1", - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-sandbox-policy": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-policy/-/dsh-sandbox-policy-0.1.1-rc.2.tgz", - "integrity": "sha512-cpoIUxCzpZJDTMXVt9gS+qgWEDAWf6rIe715uY1NF0ROoiEXPlmToLsHLF+4pXTW3wWWzpGVswO0bPYEKrQr3g==", + "node_modules/@deepseek-ai/dsh-commands": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-commands/-/dsh-commands-0.2.1-rc.2.tgz", + "integrity": "sha512-wLeEVXHuTULr0WYVHcCf1djQTEql2oxNSkbckbyfzw/r381ki1y39CPHw3Xtt6D9eXKulxTzgZzDPnHdh29QkQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-util-crypto": "0.2.1-rc.2", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-sandbox-windows-acl": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-windows-acl/-/dsh-sandbox-windows-acl-0.1.1-rc.2.tgz", - "integrity": "sha512-DJ5jI8uzJA2VJiIgkUrqNDo1oKMJMaQ1Z8F7kFpxEkI3IMRSfMyqTur740ERBkX3pVc5uDLx6HNeEBx/JR43SQ==", + "node_modules/@deepseek-ai/dsh-commands/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "dependencies": { - "koffi": "^3.1.0" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-schedule": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-schedule/-/dsh-schedule-0.1.1-rc.2.tgz", - "integrity": "sha512-I/uuXlZv6gc71SdXoV5sGQhh95nNjhy0zJWfhttfapNvuQYxZEzQU0vTAOsQB5FtdZ/xvDZm86z01/E8+usLAA==", + "node_modules/@deepseek-ai/dsh-compaction": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction/-/dsh-compaction-0.2.1-rc.2.tgz", + "integrity": "sha512-rag79zVeoMWXqKfIB0uRyx/1RRXSvucXJVUMOxM+iJxBgHObCn61RTLiFrI8M5DabHnmy+ugCGAeL5HwD/JPVw==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-scope": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-scope/-/dsh-scope-0.1.1-rc.2.tgz", - "integrity": "sha512-Xy3ejL6dwVSluZL7XOWy76ya4pCw1uHwxodDK4O9XiQUiUV4FBXnt0aNJUtMeAFN0c1YujxxCmRniMvuuNn1Nw==", + "node_modules/@deepseek-ai/dsh-compaction-basic": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-basic/-/dsh-compaction-basic-0.2.1-rc.2.tgz", + "integrity": "sha512-nx3uY0auC4JP7dEQDlQ6bQAtsDgrcCu/gPPDqKy3iM9ZpJTi2BE7pObuqhIeRIUpIodByX4QHU0N9p7kFxi4Ng==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-compaction-tool-result-pruner": { + "optional": true + } } }, - "node_modules/@deepseek-ai/dsh-session": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session/-/dsh-session-0.1.1-rc.2.tgz", - "integrity": "sha512-4/cv6X9HPhm47eyRhCu/WZwzrtJKegk5J+0xaxcZ9i8S0smdxP57tqy8a0jkSshLQn7BzMFxneQrlYExrLrDhQ==", + "node_modules/@deepseek-ai/dsh-compaction-image-offload": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-image-offload/-/dsh-compaction-image-offload-0.2.1-rc.2.tgz", + "integrity": "sha512-mofQQ5sI09pt3m4y4FPGEkhhNtlwz/0Ffyr4jMqwr4UMYfy1Jb2+6HawovmdEY3Xcm64/ZX0Eitgo5MiHFf9+w==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-session-checkpoint-policy": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-checkpoint-policy/-/dsh-session-checkpoint-policy-0.1.1-rc.2.tgz", - "integrity": "sha512-VmnQBKuWEHD78CtK1W5Auhz9VayTiNQTpbsNFex4uD/9h0XglFxVN7G3/XVUDOp8VHxReV/Mh8F1RS9s/2yoxg==", + "node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-tool-result-pruner/-/dsh-compaction-tool-result-pruner-0.2.1-rc.2.tgz", + "integrity": "sha512-kasfV+W6V3BhikITyW8+i2G7CG2lJnPk8sFp5SzZClMbaIJQT5frf5WiyP4WVmGWFnC4tn+TwiUEol/ZeiEu5g==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-compaction": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-session-log-export": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-log-export/-/dsh-session-log-export-0.1.1-rc.2.tgz", - "integrity": "sha512-IQ0itJ5VsmvTkBZYNnwNIj7h2qaw7dlHrnKt7toUiAc5gC12tFwKouMFdBS5VtOSsxTuQLdnVNPa81XOy24opg==", + "node_modules/@deepseek-ai/dsh-config-editor": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-config-editor/-/dsh-config-editor-0.2.1-rc.2.tgz", + "integrity": "sha512-gVJAPbKUKMwMqLtfFufBZtidpcdhrGlRW3gcSTSOKTq3dulCcSqKDtsLhzzgP3aVfoFwrO/QaQ9XebSYx7kEhA==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-atomic-write": "0.2.1-rc.2", + "js-yaml": "^4.3.2", + "yaml": "^2.8.1" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-include": "~1.0.10", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-hmr": { + "optional": true + } } }, - "node_modules/@deepseek-ai/dsh-session-persistence": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-persistence/-/dsh-session-persistence-0.1.1-rc.2.tgz", - "integrity": "sha512-dxdYxRfmK5jWtiFFabqRNb/jGGjkXyF2djI7O8IIKmDVjhQiv170zpvhbAhRUuqClEdseCtbQpLBrRm2blzt3g==", + "node_modules/@deepseek-ai/dsh-cordis-client-runner": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cordis-client-runner/-/dsh-cordis-client-runner-0.2.1-rc.2.tgz", + "integrity": "sha512-nFUa05KwrZcI3kbL44lR/7T3Q8EPo6gp2nmNIr2MD6SPm3XT6R3o3X+LV3mOuUwXkxSWSrxmyBMw7X0PAsliKg==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-session-persistence-jsonl": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-persistence-jsonl/-/dsh-session-persistence-jsonl-0.1.1-rc.2.tgz", - "integrity": "sha512-1H+boST8tlc8fu5VVClcCRFGI18dH1EOAzfC+HsQZ+GiC7jhPN112oJWyzxKot1P07bmKdKev3un4VR2Chr/aw==", + "node_modules/@deepseek-ai/dsh-cordis-host-runner": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cordis-host-runner/-/dsh-cordis-host-runner-0.2.1-rc.2.tgz", + "integrity": "sha512-1Ue6/tv5HgXoEtpBuKdXrOCktUnpSR1/QfmXhvWqkpCUehRO4HxgeuO4olBqRCUNcj9z8a6MAKdTyrG/zp7d8Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "koffi": "^3.1.0" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-session-projection": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-projection/-/dsh-session-projection-0.1.1-rc.2.tgz", - "integrity": "sha512-SNaOrjRS4RMXocna6uL33TeS/uhcQ7jDJtJZ1HyDPL06mXUdAgje2MVt8OZCh6dH95xIiqpQQm+KjzeiQnhYSQ==", + "node_modules/@deepseek-ai/dsh-cordis-host-runner/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-credentials": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-credentials/-/dsh-credentials-0.2.1-rc.2.tgz", + "integrity": "sha512-9nCOCdjkW+puJB/ZZtnKN11BJv+TpiqnMFzfA35+yT7lL6fXXJTk3kGaajunmHqPdgKE6UFlL6mlrxP4FlbSdw==", "license": "MIT", "dependencies": { - "zod": "^4.4.3" + "@deepseek-ai/dsh-brand": "0.2.1-rc.2" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-session-projection-cache": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-projection-cache/-/dsh-session-projection-cache-0.1.1-rc.2.tgz", - "integrity": "sha512-UvCRpIb+LoQI/nCLof17xc2P2KuZoucU3VuzfAukfsF3dYZAy5OP7jrCRdVZIvjRfvFUd7G+awdS9sWbnjcolg==", + "node_modules/@deepseek-ai/dsh-credentials-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-credentials-local/-/dsh-credentials-local-0.2.1-rc.2.tgz", + "integrity": "sha512-KAdb9ig4Xw4QEf1b6wLtCtOPGMDT1pK3aOD83vZBJDTqqQpYfL+ucAhFhWExYUGUP2QNT42ofdMShX8SWIFDcQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/schemastery": "~3.18.5", + "chokidar": "5.0.0", + "yaml": "^2.9.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage-domain": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-atomic-write": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-session-query": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-query/-/dsh-session-query-0.1.1-rc.2.tgz", - "integrity": "sha512-QxQFRg/KnrZnYiO7fNtTJVTakuGs9ZFRkGGgYuNPzSz1pRqiohGNE/JZzBtq+HMv38RRTRZrM4aIOUV8OgqoXQ==", + "node_modules/@deepseek-ai/dsh-deepseek-account": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-deepseek-account/-/dsh-deepseek-account-0.2.1-rc.2.tgz", + "integrity": "sha512-dvD0Rw9Y1dNyaMbPVS30FTAtc9wEH6+EtYgDqrOFHc7i7TDKubEnPNnYVTW9J26rkfC2n6MZ2QUfIw6Qwqi3Eg==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" }, "peerDependenciesMeta": { - "@deepseek-ai/dsh-session-persistence": { + "@deepseek-ai/dsh-agent": { "optional": true } } }, - "node_modules/@deepseek-ai/dsh-session-query-sqlite": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-query-sqlite/-/dsh-session-query-sqlite-0.1.1-rc.2.tgz", - "integrity": "sha512-gZ9q3v+NdQC5jaArBMQfpX36wLXXvhtEfKK3zu3jOd9HopYxgNKnm/mUX8Ma9P42gR3Q+m5SGU42pow5vy34Cw==", + "node_modules/@deepseek-ai/dsh-deepseek-account-platform": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-deepseek-account-platform/-/dsh-deepseek-account-platform-0.2.1-rc.2.tgz", + "integrity": "sha512-dpYKt55cRAH5R2bvncLXRT1G+jmnR38SdMO20+kcs40cTjF8Xi3FVM/qXxonMI6QGoTSzF5zQ+Rnx2DUKXnbvg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-query": "^0.1.1-rc.2" - }, - "peerDependenciesMeta": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-authorization": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-deepseek-account-platform/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-deepseek-llm-api-extensions": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-deepseek-llm-api-extensions/-/dsh-deepseek-llm-api-extensions-0.2.1-rc.2.tgz", + "integrity": "sha512-Q9yR2MSPnbuk+lVDurYBxc1LanuGnta4xuoPrSS5WQOBU116wBOtRp1amaThBURX6H3Ris1SESgaGe9Kdhv9yw==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-deque": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-deque/-/dsh-deque-0.2.1-rc.2.tgz", + "integrity": "sha512-wwiNIY6Aq1yb2tn/jjEeAwwxJTUphXo0Xe6Igh1l5/6vhMAn1lnZ79GFYkROuoC9oRUb6y3c4zvi37mrb0ko8w==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-agent-team": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-agent-team/-/dsh-experimental-agent-team-0.2.1-rc.2.tgz", + "integrity": "sha512-cVOE7ucS693WuBFgwOEdHSqyoDeEJMAMKz94yvkg3vefArXDHWI7vUh1B7TntTogWyqfCBiS/V7DBI67P1eoVw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-agent-team-profile": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-agent-team-profile/-/dsh-experimental-agent-team-profile-0.2.1-rc.2.tgz", + "integrity": "sha512-KJFMFS1MZKOTyXG2LXtcvuRaSzfIQB1eRi/xsHka2Z3n5wAbli4ZOoivwpFg3GKIIJ3bEDQ/RovRS4Vmg3BdRg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-experimental-agent-team": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-client-ui-agent-team": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-tool-agent-team": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-agent-team/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-api-speech-to-text": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-api-speech-to-text/-/dsh-experimental-api-speech-to-text-0.2.1-rc.2.tgz", + "integrity": "sha512-PxqFP6wS2Jh4Z9dnAWaoewQeX6jGpDW9jsRteb6KgG5P8l9VduTYg+zu0lvN6wBnJtm5VpLbytxTZ7dr/oIHVQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-api-speech-to-text/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-auto-review": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-auto-review/-/dsh-experimental-auto-review-0.2.1-rc.2.tgz", + "integrity": "sha512-1YDy0eFHORJyLRNgoT8S173kHiYyqbkm0DbR1nzI5AmuVfYHkCTxtVyKIoUdm/LVtMI97dRo1uEX2z8vF34Uvg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-badge-skill-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-badge-skill-bundle/-/dsh-experimental-badge-skill-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-5qCU+Fj8GBfpBAFsyWVzUGRDqZIpffyM6+BuXIGMqeExeAVLpDZHUnCP1/pmm6y/4Sg5Plwx9NJ3qkE/J24Sdw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-skill-badge": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-client-ui-agent-team/-/dsh-experimental-client-ui-agent-team-0.2.1-rc.2.tgz", + "integrity": "sha512-PkNw1hKdbr/Xc3y+LxpDWXorupF8RHVqCJxySfK8nd2CG83MHBl8HomuhR2ljNBUQfrEZLPYsYOB+K5tz91rSg==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-client-ui-cot-translation": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-client-ui-cot-translation/-/dsh-experimental-client-ui-cot-translation-0.2.1-rc.2.tgz", + "integrity": "sha512-VrEhW51AlOyOsNHGBnVCxUse4CtXW90f/NxtJiE5qhmZ0zKY2xhubYcKIDeGWNkIZpwgeLNqLYfDq9W4StXc8Q==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "^4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-experimental-translator": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-client-ui-voice-input": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-client-ui-voice-input/-/dsh-experimental-client-ui-voice-input-0.2.1-rc.2.tgz", + "integrity": "sha512-F+WpUh6TSTiIs4Z7v8ZtFb8GSeD7ORIxaPVShuNtqRw8AhGEgKIDu9rVTAetZVehN3upW2Unzj4ye301kfqoaw==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-cot-translation-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-cot-translation-bundle/-/dsh-experimental-cot-translation-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-EqRksL4dyy/EAO7m7ZkJ6raWhfKCRpA0JFgu1s1+7CZD3sNLu/Hcyw4t9kX0HiQhNoEPGMU20OeDtuYltxZ1Iw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-experimental-client-ui-cot-translation": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-translator": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-inspector": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-inspector/-/dsh-experimental-inspector-0.2.1-rc.2.tgz", + "integrity": "sha512-DjvXaJWWR/A6iBipzJ60LkuefgilZ3AXr82jHRFfBqYmTsQ+v7r9FcHZrKiQC6K4eutTCgM+7sKYxDZqFlCgBg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "open": "^11.0.2", + "serve-static": "^2.2.1", + "ws": "^8.21.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-inspector-profile": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-inspector-profile/-/dsh-experimental-inspector-profile-0.2.1-rc.2.tgz", + "integrity": "sha512-wFEqfJo0uWgjBtLL46mAZsC8HpsNFkz+s124Yu1ZddNkazXy1pMaa6UO5Nxm5l/KtfCvSUxC8psAIox1vNRfgg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-experimental-inspector": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-session-inspector": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-plugin-market-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-plugin-market-bundle/-/dsh-experimental-plugin-market-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-B+3co/SXRSEg6yz7T8Gc2pYvS7ThVsnVz4yrc2+m+gQhnHMsUH98z9udeKQbc5a6C3rNqs3FKZ4snzSB1BlBrQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-client-ui-plugin-market": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-market": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-ralph-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-ralph-bundle/-/dsh-experimental-ralph-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-Ds+ZoPz23KeutvA7Yxx4MoO6v0AH9cljxoIt7C9CvQiMEPxrl1u4u/OGQWPbLJOyqE7Gjgfcq/LJOGiE0YUI4w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-tool-ralph": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-session-inspector": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-session-inspector/-/dsh-experimental-session-inspector-0.2.1-rc.2.tgz", + "integrity": "sha512-flsPO5YNTTqxSYmteFGy3MUKURLp0apFc2UTNIXtNJQzR4lN3SAxAfP6BXjZ2SE0oW4xiV1gMQgrGxfmBV/s0Q==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-session-search": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-session-search/-/dsh-experimental-session-search-0.2.1-rc.2.tgz", + "integrity": "sha512-gQ4z+/42rvD65GZZC+GvHoj9qCRDIfWnCJtNyDFezNjqSduQ7Db6mU98Uwu6bBYsCkrLpMNfz057LQ9gnWxxSA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-session-query-sqlite": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-session-query": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-session-titles-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-session-titles-bundle/-/dsh-experimental-session-titles-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-tiX3tyD8/4ds5L4TRHG+ozPxxkqteCoV9fXGu1N/mNG5VNVsSc53MXmKFMFjgFBAweu0cBfrM4kzCJ2K/cu41w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-session-title-all-prompts-llm": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-speech-to-text": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-speech-to-text/-/dsh-experimental-speech-to-text-0.2.1-rc.2.tgz", + "integrity": "sha512-M7k0yJUvJjkPKvNhuC73THY2CVZrU8SDjJ7C7iwj9KwM7F/gRBsZvAYZcvRjVU6eUbqumL2MgQZrGlzrqLkUcw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-settings": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/cordis-plugin-loader": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-experimental-speech-to-text-sensevoice": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-speech-to-text-sensevoice/-/dsh-experimental-speech-to-text-sensevoice-0.2.1-rc.2.tgz", + "integrity": "sha512-Ef/V+/IMhQbzWEgAqMAugcZw3mpgt4zoSzz8eEves9y7v0NABujlHCWhuJIl6OoOD0dC/TNuHtvZSCFMXplFLg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "sherpa-onnx-node": "1.13.8", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-speech-to-text-sensevoice/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-terminal-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-terminal-bundle/-/dsh-experimental-terminal-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-1tsJXfFaIuwN6I9b+ibjrWVeU+oBmiVM2vm9toUepJyPA1v9tlk5BLjxSW0V9tk8S0fY8x4lPctw9+WFZL3PdQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-terminal": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-tool-agent-team": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-tool-agent-team/-/dsh-experimental-tool-agent-team-0.2.1-rc.2.tgz", + "integrity": "sha512-5Dh7yTa/CXpuZV09F9PKiTjIxUQZ6ACZNBfchKXfL0dwBDzycyKSOYZ8wyoSDO0c7h6Ru7/8CCDRkEoWFTmy+w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-agent-team": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-tool-worktree": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-tool-worktree/-/dsh-experimental-tool-worktree-0.2.1-rc.2.tgz", + "integrity": "sha512-n/9T6Ety6FkNIlLomv/2pSSif0fQ9NBEr1QnXbykS38w81GyXlC/+bV844qG5dWiEdH4LVjgu/P+vFylAXVKoA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-experimental-worktree": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-experimental-worktree": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-translator": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-translator/-/dsh-experimental-translator-0.2.1-rc.2.tgz", + "integrity": "sha512-eocx6xnb8IYrPVlVhQnacGun5IFhG7I9rcSAexqQQZdGvX2NoAYiBa82LHHtIfAB95TXcqpx6bLFCJ6HXjXkWQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-voice-input-bundle": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-voice-input-bundle/-/dsh-experimental-voice-input-bundle-0.2.1-rc.2.tgz", + "integrity": "sha512-ASTQvYvlSbUgG70h1EUE/EZnCW0oerYom+i0X1oIZ31r1Nh22+jbzrf3XnDvC7veNEr+W+MvMcOj2vv3BAKCIg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-experimental-api-speech-to-text": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-client-ui-voice-input": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-rc.2", + "@deepseek-ai/dsh-experimental-speech-to-text-sensevoice": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-worktree": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-experimental-worktree/-/dsh-experimental-worktree-0.2.1-rc.2.tgz", + "integrity": "sha512-QFy8JK2f/zKEJBxq2YaFVEqvYSjsW4dRzYH/VEf0ZeWMY+6bm+AmEGly/r82JUm5g+Apx7zotgff9WrkelQAbQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-file-reference": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-file-reference/-/dsh-file-reference-0.2.1-rc.2.tgz", + "integrity": "sha512-Kr0iVR7bvOiIThNwQkEYJHMmZ5b4XiN7olTrznXJkEH++kwMmNV5gFTx20fJX6f2GZAbQlNAY8iYmjtcD/hsjQ==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-file-reference-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-file-reference-local/-/dsh-file-reference-local-0.2.1-rc.2.tgz", + "integrity": "sha512-V00MIGZ7f9IT7gvRwVAiA056g9o4KOygeOqiiIjM4Scg2xYR/eLvlDv/zXfaVdzhQbUgiuBByqxkp3cGgV/w9g==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-fs": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs/-/dsh-fs-0.2.1-rc.2.tgz", + "integrity": "sha512-Z6d2ZKsAiJc0FaiES8wC66vuUQMGohl9tCc2p3bAsPFYkJ0+L2zTViQ9Y5BArtRe9Br8qhNjNgLlN0jb/uwv1g==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-fs-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-local/-/dsh-fs-local-0.2.1-rc.2.tgz", + "integrity": "sha512-IZPJ12/EpV6fu3CCWtW4w4GthXAKLFjplm4Feoep2HAum7J1aGzHZwiw7ipsPCZiA5/TyK3lDUUAGZ/pcXgRcw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "chokidar": "5.0.0", + "koffi": "3.1.1" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-fs-observation-policy": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-observation-policy/-/dsh-fs-observation-policy-0.2.1-rc.2.tgz", + "integrity": "sha512-wUyr/SKcnz5PLXaXcChCHdzpRq+7zVB/AMv1zC4wNFMk51uDGahQ8SF4YqIijMTdm1HpKQ6v/A3Nqyhum3or0A==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-fs-sandbox": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-sandbox/-/dsh-fs-sandbox-0.2.1-rc.2.tgz", + "integrity": "sha512-tj+ucz1KeOOIg30S3qX0zhM5blOW34KRiA5mGQovwwWhtnXhc0hdbrueY5etKG/yCMs/61SCv2XBg86hL7Lf+w==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-goal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-goal/-/dsh-goal-0.2.1-rc.2.tgz", + "integrity": "sha512-3+tyKHWkUW+YYJWMoRLA1HgW/w7GYigSx1HlV9RMx8n6uLO7+sGIOgrHLFGuKIqsfsnj5Sq7qWdC2WstiYlUJw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-goal-round-driver": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-goal-round-driver/-/dsh-goal-round-driver-0.2.1-rc.2.tgz", + "integrity": "sha512-6rQqqBpzf6hdSUQ4IZ8w6qEIJZjpt+dZgKETCE11YDHtBVJ01mGnDimaj6gjQ7npl/Jl597c1FH2cjBhyK/Aaw==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-subagent": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-goal/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-harness-dev-context": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-harness-dev-context/-/dsh-harness-dev-context-0.2.1-rc.2.tgz", + "integrity": "sha512-ZCKSNZYGqJ9pjlLnLzMGTvsWulMV2YmnpeTf9PNIWN0t3vViq1EHbkq29m3lAprHhYnZUmRRmuUrxWE4whznKw==", + "license": "MIT", + "dependencies": { + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-harness-dev-context/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-headless": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-headless/-/dsh-headless-0.2.1-rc.2.tgz", + "integrity": "sha512-BB2R4GLQJI2d39xLqnNwQ+NlzGLzWHu//xKnL1wmjIbp3Y2PaUJfwQvFNbQ0eV8li3yTxguRheTuCimMbULcrQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "commander": "^15.0.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-subagent": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-hmr": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-hmr/-/dsh-hmr-0.2.1-rc.2.tgz", + "integrity": "sha512-WXo6p9Uwmnip9hPhbpstVtnr1pLqwdMou/HO6t3mSQ33WOuzP9AgTiwDaPt6fwSgIwqwLg8/yKlX6DRKnNXpCw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@deepseek-ai/schemastery": "~3.18.5", + "chokidar": "5.0.0", + "node-addon-require-builtin": "^0.1.9", + "picomatch": "^4.0.7" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-include": "~1.0.10", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/cordis-plugin-timer": "~1.1.7", + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-home-paths": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-home-paths/-/dsh-home-paths-0.2.1-rc.2.tgz", + "integrity": "sha512-+byrn2eS9XaFt6pl1yZXIgkm7GbbzTwzX3Eo19Ew9P1xzzucw/j2HSmdFo221/GK+5PH7ct1ldeT+fAxAJ1e9w==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-host-directory-picker": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker/-/dsh-host-directory-picker-0.2.1-rc.2.tgz", + "integrity": "sha512-CXFXrq5wz77Hf66KFyyEoyDkDIMWyRDXhRUml033qm6Dg4+CnD7pXz3LdncmfXjYGQPT3HtloPU9RmH65JSmIQ==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-host-directory-picker-auto": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-auto/-/dsh-host-directory-picker-auto-0.2.1-rc.2.tgz", + "integrity": "sha512-3elzuWm4yFKF28Tp0QUSNmasOOp6rbGAOkeWluWm2z3lSqjib/Ts5J/kxA5WzoY9u+DFH/Tw9exVBotyEqc4fw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-directory-picker-browse": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-directory-picker-native": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-host-directory-picker-browse": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-browse/-/dsh-host-directory-picker-browse-0.2.1-rc.2.tgz", + "integrity": "sha512-8LyHJW3NS2OCQ0EVuOPhzoOnhdnjetz3RO39ISw21TgGgNk3vUBDMf13MoUckgMIpvWU0U66zIJpJPxO9Aot/A==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-host-directory-picker": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-host-directory-picker-native": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-native/-/dsh-host-directory-picker-native-0.2.1-rc.2.tgz", + "integrity": "sha512-a3PxzKHmAFuo335nGCHts0hmw7qsiVI+ypLTFur5tYDi400Dp5S2OY3a4NXUxX4JGLV3a4tKZw00LvW4Y9qKXQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-host-directory-picker": "0.2.1-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.1-rc.2", + "koffi": "3.1.1" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-host-frontend-static": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-frontend-static/-/dsh-host-frontend-static-0.2.1-rc.2.tgz", + "integrity": "sha512-e7DUtp5oBhNw7r4445caZUPq1qYOvmOX7VlhpDWHieVhchfB6jc/GTrB9b9TvdqftY8zMVs44EDylmuV/oP04g==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-host-open-in-app": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-open-in-app/-/dsh-host-open-in-app-0.2.1-rc.2.tgz", + "integrity": "sha512-HHptokPlSxG1tDdVIkN+Gmb03gpI+NS7jXZU2AyOL1cSnIfLvxlQ5tp1PxGKZ4w6GkLFgloPDD2gWrGo/AD0GQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-host-plugin-inventory": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-plugin-inventory/-/dsh-host-plugin-inventory-0.2.1-rc.2.tgz", + "integrity": "sha512-ef953h/AlRTVacj0FkG9x1jBxZTZOVcJv9bVU1MZMN+DUligJt9aCDX7iwjxVatG3r9UtnlMsFctLSd6JcosyQ==", + "license": "MIT", + "dependencies": { + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-agent-preset-registry": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-host-plugin-inventory/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-host-product-telemetry-otel": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-product-telemetry-otel/-/dsh-host-product-telemetry-otel-0.2.1-rc.2.tgz", + "integrity": "sha512-Syi1G0KHQMMl9YOTH8FIVOCgALSPXykijijdlKXaEGGzomLmftLCMjmd8K9hR5a6U+m92IaoyaAuPnwEhC+36A==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "@opentelemetry/api-logs": "0.222.0", + "@opentelemetry/otlp-exporter-base": "0.222.0", + "@opentelemetry/sdk-logs": "0.222.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-otel": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-host-webserver": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-webserver/-/dsh-host-webserver-0.2.1-rc.2.tgz", + "integrity": "sha512-LpIT/yTGvpB/vZOBX/P7t+Pmvx/MMmKR7OYAaOYfRzPKphfOrgONnrO85E5PQXyY01tBCpvS2Ro/dP/brAPx6w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "compression": "^1.8.1", + "ipaddr.js": "^2.5.0", + "negotiator": "^1.1.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-http-proxy": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-http-proxy/-/dsh-http-proxy-0.2.1-rc.2.tgz", + "integrity": "sha512-040QkP/W3F0gcg5aAPPo17evn6+IGb4h9CxYwLVZjgPDQvcc/H86JuquMJ6WfXWtIhcPbfXS1Tb05A8eXspTlg==", + "license": "MIT", + "dependencies": { + "undici": "8.11.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-jobs": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-jobs/-/dsh-jobs-0.2.1-rc.2.tgz", + "integrity": "sha512-DGNhKNM/z0ZvqPYn2FkwCd0lhCQ+SSMUGeHIOirgZmHDp0izNoqSRMb1LKxs25LkB75IItN/D8Pg+3hNDXrl+w==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-workspace": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-jobs-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-jobs-local/-/dsh-jobs-local-0.2.1-rc.2.tgz", + "integrity": "sha512-BulpejqgXBj83f/tvft8vPe6rNEb9U//0ykxOVpWBnyr6147hUEd0B1e1shU2Ui53DOgLy+YKfnVQk5m3TMzYw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-launch-environment": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-launch-environment/-/dsh-launch-environment-0.2.1-rc.2.tgz", + "integrity": "sha512-EXoLY+5i71V2uBrqa1Pk+eamwqc/6Di7N2BIvqs9GDZ09RFk6ohsqs/hObev2Z/ehWr6BYIS112c1qbf/P79Wg==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-lazy-require": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-lazy-require/-/dsh-lazy-require-0.2.1-rc.2.tgz", + "integrity": "sha512-5jau8Gv6eCvgeIkQcT2yRl/pfEuN8u6CsO7ZiMTwGqPEW52GHUKyJsFkya5rTAUzIxfG/uZSgi43iKshBta2rQ==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-llm": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm/-/dsh-llm-0.2.1-rc.2.tgz", + "integrity": "sha512-3xfoMDHEpUJGcH2Lu+lNXUJYRBclYfBkdCG9Au02VzIjYAm9BrFmc/MNuaVTg0vwgvPpTsd6Fx1IeGtfmQFvlg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-llm-deepseek": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-deepseek/-/dsh-llm-deepseek-0.2.1-rc.2.tgz", + "integrity": "sha512-CxWvAB8FwnTJTZE7b5k0A3sAmC4mq2UJZNSsSNn7lWsquCcPoTvsR37UDo8ec352oBbYzrw+f9+h91oYLfhmqQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@deepseek-ai/cosmokit": "~1.8.6", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "eventsource-parser": "^3.1.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-anonymous-user-id": "0.2.1-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/cordis-plugin-loader": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-llm-deepseek-account": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-deepseek-account/-/dsh-llm-deepseek-account-0.2.1-rc.2.tgz", + "integrity": "sha512-Y22rEOnDDrRtfx1yXqAcKS/uMVqyYITl9nfUNIibxCBPnX9RvCah/QPfm1eBQlCoYTN1zCRj+IEHYRtbJrB1hQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/cosmokit": "~1.8.6", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "semver": "^7.8.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-deepseek-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-deepseek": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/cordis-plugin-loader": { + "optional": true + }, + "@deepseek-ai/dsh-deepseek-account": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-llm-deepseek-api-key": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-deepseek-api-key/-/dsh-llm-deepseek-api-key-0.2.1-rc.2.tgz", + "integrity": "sha512-yvyFpxryB4JRKOzw1LYNrIpX3sciYAa8ERUMUhJvIa+kcCXt51uoKKeLjSC3GLXi1hD/yyc04iUBeQILJQbTtg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-deepseek": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/cordis-plugin-loader": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-llm-pi-ai": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.2.1-rc.2.tgz", + "integrity": "sha512-sauT3s9LwRtJTuHJL6mIZSmMjy5S1o2u9qb/MFuo1VYc8CJwTL74/RxXYLX0vpRP2Hk7TFJkJFilx5jagMecsw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "@earendil-works/pi-ai": "^1.1.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-authorization": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/cordis-plugin-loader": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-llm-retry": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-retry/-/dsh-llm-retry-0.2.1-rc.2.tgz", + "integrity": "sha512-6nnM6y2eTz2gHPu9MVG5aABafMqQLPQ4u3K/csQG5WLr91ABOlAZomM0IN9BdmDBIyf+Kr7F9cQCYQUbADl3SA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-llm-retry/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-llm/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-mcp-client": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-mcp-client/-/dsh-mcp-client-0.2.1-rc.2.tgz", + "integrity": "sha512-H5nwrx+krm9nBYKC176bB08Z0Z/+vAuQg0yv9cMpaTUEDvsnM2bBTY5paVaD6Z4YPym4XMNmgoQIpn8CUlNFLw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "@modelcontextprotocol/client": "2.2.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-mcp-resources": { + "optional": true + }, + "@deepseek-ai/dsh-system-prompt": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-mcp-resources": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-mcp-resources/-/dsh-mcp-resources-0.2.1-rc.2.tgz", + "integrity": "sha512-QG6kI8UgnJCeQFt11f+7fmihGhSjsGfpWvJFbZNM7flgs6pVFiJOPb1/LWjYv4huImojlFjsEDjUJC9OtFI0Vg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-system-prompt": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-message-feedback": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-message-feedback/-/dsh-message-feedback-0.2.1-rc.2.tgz", + "integrity": "sha512-JejJgf0PUPmFJLs8nvzgf5Ri+0+3BrJ9ttmSBS96tO9Js39OxEkw8m6AOlM6PLYI5VF0+Yu7i3aZ8fi+6ZDgwg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-message-feedback/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-native-command": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-native-command/-/dsh-native-command-0.2.1-rc.2.tgz", + "integrity": "sha512-m2RecWJ9ccubuQYtbh3n0R9hPXa1ADaXjoOlXOoaBp3ot8LaLhDMLQsujZgYRlvqehn0t/q6jM8qlndwW6Ry2w==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-office-to-pdf": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-office-to-pdf/-/dsh-office-to-pdf-0.2.1-rc.2.tgz", + "integrity": "sha512-ch2ktaysUbaqwXbteY9hj9Nhh2aTzVO3PNydPP8/wUXKBjEshWPCX3ym/aM1+DS7100HBTi4nzKZ8clSjmpERA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/libreoffice-kit": "^0.1.5", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-office-to-pdf/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-otel": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-otel/-/dsh-otel-0.2.1-rc.2.tgz", + "integrity": "sha512-6GJOifw1jJHndmwbcTlzgE5R+EWPWvgJK/oLY3URQeoiX1O0iIbsjfLvSKgspquAoEOeYlquOiLqabrNSKguWw==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.1", + "@opentelemetry/api-logs": "0.222.0", + "@opentelemetry/core": "2.11.0", + "@opentelemetry/otlp-exporter-base": "0.222.0", + "@opentelemetry/otlp-transformer": "0.222.0", + "@opentelemetry/resources": "2.11.0", + "@opentelemetry/sdk-logs": "0.222.0", + "got": "^14.6.6" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-output-retention": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-output-retention/-/dsh-output-retention-0.2.1-rc.2.tgz", + "integrity": "sha512-i2NEQZW1E8oSNaf8EDf45mAZs2c+vu5LOqJsGgEddeSRM5vsDxogIw9MUMZfDZntSk0j9zORTrRtJr31qpipSA==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-package-manifest": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-package-manifest/-/dsh-package-manifest-0.2.1-rc.2.tgz", + "integrity": "sha512-qJsGBj+T3oGzwK5GZbewneQNhD+3ENqIrCSOUAL8GKWQsl58daMAHDyqTuetvbkzuuXezwrv4Ll/BkKhx5FrQw==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-permission-presets": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-permission-presets/-/dsh-permission-presets-0.2.1-rc.2.tgz", + "integrity": "sha512-BcP8284eFkWKQzEIB0FcFYFyOuDBueZDhIV4OA6B+lVjEBgWT5y++u6Lhn8/NjramfiW6CFPzThxKmx8+3COig==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-permission-presets/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-persona": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-persona/-/dsh-persona-0.2.1-rc.2.tgz", + "integrity": "sha512-gLXwnjcvcY61K+8wbtNGplELxwr7TphdYPLaDjij0zWiY4nbfhPwrbGGqWrFXgfXZCCMdr2/9CEBp9w9gCLYbA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-plan-mode": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plan-mode/-/dsh-plan-mode-0.2.1-rc.2.tgz", + "integrity": "sha512-/2KLdk8jArJHcC28tRfDffDA2uX2VDVrVx16QH5Jkr7zs642vLRIQk9OV8v9sYH5Bo25yUBmO6TNWKFOaJkI2w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-commands": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-plan-mode/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-plugin-manager": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plugin-manager/-/dsh-plugin-manager-0.2.1-rc.2.tgz", + "integrity": "sha512-ow+AWsO5tYsMjef2HpNnKMh6QjLC/r/dsE91Ad94KP26FLFpoA/Wp4Kd+rLNRp4vSzHC7A007BfWxmb5mVJ8Kw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "execa": "^10.0.1", + "yaml": "^2.9.0", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-plugin-inventory": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-hmr": { + "optional": true + }, + "@deepseek-ai/dsh-user-approval": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-plugin-manager/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-plugin-market": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plugin-market/-/dsh-plugin-market-0.2.1-rc.2.tgz", + "integrity": "sha512-UmpowXIJ1GDagHSqzk/b6VIC8UY7D8GWJ6Op9/6iFyCEKDDrVhC4Iww5p2wTW5ImYrLgmiVcIf9k8N+nLQhQlw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-package-manifest": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-market-index": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "minisearch": "^7.2.0", + "semver": "^7.8.5", + "zod": "^4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-plugin-manager": "0.2.1-rc.2", + "@deepseek-ai/dsh-settings": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-settings": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-plugin-market-index": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plugin-market-index/-/dsh-plugin-market-index-0.2.1-rc.2.tgz", + "integrity": "sha512-2ZJltdxQiMZct+BS5rcmwk8BojVfH16skGvwZRgGuZRdwGtMTvqpBOcUiASYOoS8yWynYUKOJonfOrN7LVVJqw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-package-manifest": "0.2.1-rc.2", + "semver": "^7.8.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-plugin-package-inventory-deepseek": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plugin-package-inventory-deepseek/-/dsh-plugin-package-inventory-deepseek-0.2.1-rc.2.tgz", + "integrity": "sha512-7ANjSSdJJg78/kjKfdyim5L6zRiysJWADMrIEFVnx0z4+t1gj0xBxZN43Wj5YAQmQOq+MVBuU2FvEyzB6fmR9w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-agent-preset-registry": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-ptc-runtime": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-ptc-runtime/-/dsh-ptc-runtime-0.2.1-rc.2.tgz", + "integrity": "sha512-e81rbNwp3YNIpzIbkFI4NsWQzTD3uAP8zXU16diL9wLmITUWjMS+kvrWEXtrkWAWp5cnK2Pgn4xCbqVZ6n4I8w==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-ptc-runtime-node": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-ptc-runtime-node/-/dsh-ptc-runtime-node-0.2.1-rc.2.tgz", + "integrity": "sha512-/B3hwzZV/mBE+h8Us5wfstALY1Qd6v8kRzk8SzZt8s0xa1z/srwACK+5feNpnbZuP47Umn04tsmcpqGfW+ustQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-pwsh-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-pwsh-local/-/dsh-pwsh-local-0.2.1-rc.2.tgz", + "integrity": "sha512-YtufilHrWQyyX9bf4kEEHGJxP71AJ/kaJWVZbb+DVIBu4VEie9EfN0on18sUr26Qo1zsrDE6skq6tJIqtsUbUg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-pwsh-sandbox": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-pwsh-sandbox/-/dsh-pwsh-sandbox-0.2.1-rc.2.tgz", + "integrity": "sha512-/nyuKupJho/gOnZpgLB1jIXRQ5imkXL50prDVjSUgXvbSQYcIC2k0t2v6oYpA5A9czt+bGJVqlDAxAEY0nf64g==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-pwsh-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-repeat-tool-reminder": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-repeat-tool-reminder/-/dsh-repeat-tool-reminder-0.2.1-rc.2.tgz", + "integrity": "sha512-YaUisTxXhKjMG1Uq4k5uRSovsBITUdup62z5zmAbLHGzMT1qMKmkUcpk0OMa6hKKrAQoA60Q5Yss9j7ZFV2w/w==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-sandbox": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox/-/dsh-sandbox-0.2.1-rc.2.tgz", + "integrity": "sha512-nnxNIkgi4A4tkPrTV8sbVMse3c32OT0U+mwYhLqDz/+cIm5tUGufQD+Ax0zqVeClyzXsxZo0/pVtcqDJrsp+7w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-sandbox-local": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-local/-/dsh-sandbox-local-0.2.1-rc.2.tgz", + "integrity": "sha512-3xBoHVko6ggqi2hZq28Z05GeESS51PednjfL62TfSCzZktpDU+f12fiFwoQ1N2R1xHGDA5c+vYWVIe8qB9ndIA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-sandbox-windows-acl": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/node-addon-system": "~0.1.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-sandbox-policy": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-policy/-/dsh-sandbox-policy-0.2.1-rc.2.tgz", + "integrity": "sha512-fBb8zQ13CLKM60ynl3EHvFmO8F0GARofQYf7CXUkqJEuBcjxXUG14rzDKRS/PhE8oJ023lEvd5HJjE6qUjslhw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-sandbox-policy/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-sandbox-windows-acl": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-windows-acl/-/dsh-sandbox-windows-acl-0.2.1-rc.2.tgz", + "integrity": "sha512-ht91ZTw540PPRMr08LMPnqbz57LJj1As1QY1fFZ+p5B7QWZH4GrQIodtAFg1M/bfVZe6lbot0ioxOD+yafXwVw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-lazy-require": "0.2.1-rc.2", + "@deepseek-ai/dsh-win32-process": "0.2.1-rc.2", + "koffi": "3.1.1", + "yaml": "^2.4.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-schedule": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-schedule/-/dsh-schedule-0.2.1-rc.2.tgz", + "integrity": "sha512-rqSBtc3rluO4TQE28I+pL78NkK6Y5oWO8xy6JRZkgWcpJFFCdZHZ1SYGqa6+4yIEXAMlbnjnSmNV1bYYfFUSgg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "@js-temporal/polyfill": "0.5.1", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-schedule/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-scope": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-scope/-/dsh-scope-0.2.1-rc.2.tgz", + "integrity": "sha512-CVGPI4lzmUy7O3zg8X1LavUSmD3JKFkUdykfHN7VkyWXG5oAXSvig9s5PLnIb+sxRItmSpiqPXGnT/48X1T1qg==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-sdk-app": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sdk-app/-/dsh-sdk-app-0.2.1-rc.2.tgz", + "integrity": "sha512-+EZnbOrUMamyXVhXcQ2y/AOJ46NwvXDVF2pj7hhukvzkdGmskpDYYPcTpUD1aJY5H0n/mYS4DxJ58RErchR/SA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-cmdline": "0.2.1-rc.2", + "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill-office": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-workspace-dependencies": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "commander": "^15.0.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-sdk-jsonrpc-server": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sdk-jsonrpc-server/-/dsh-sdk-jsonrpc-server-0.2.1-rc.2.tgz", + "integrity": "sha512-adbG5QfH9q+/OiFbyaQZvZ7KReLlsUTauiKZUT2nhu4wHJ62PkLuuDx+c7tWezKLYd3MwzeDO0TY1IJIAjw3bQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-sdk-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-sdk-minimal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sdk-minimal/-/dsh-sdk-minimal-0.2.1-rc.2.tgz", + "integrity": "sha512-mQ+RZyvip6LW3+jA206moCmERo2p0y6DzZGVM8/IfqZWQANrJN9+BpC9KYj8npwaF/tgxtoQYKSC9IRHs3jJbA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/cordis-plugin-timer": "~1.1.7", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-loop": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-image-offload": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.1-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-sdk-app": "0.2.1-rc.2", + "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-log-deepseek": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-working-directory": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-sdk-protocol": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sdk-protocol/-/dsh-sdk-protocol-0.2.1-rc.2.tgz", + "integrity": "sha512-fdWcBdaf2zUs3MIS817tIUodTVLiB/Qjaibg+iKGdGawAYgj68p6q1AidqQJGJz5NGOWH7UJXk6re3qQUikzvA==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session/-/dsh-session-0.2.1-rc.2.tgz", + "integrity": "sha512-WDA4lIrXtG5nf1dn2wrA4UzEr7D6e8T3AdPpVSZ7eY4N4ICMDZ0RYuD4GkM+iSb7WkLojdO8ljr0etiIMEbqJg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-checkpoint-policy": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-checkpoint-policy/-/dsh-session-checkpoint-policy-0.2.1-rc.2.tgz", + "integrity": "sha512-cIdh754W7ceIcESQaOnFw0JSb3xC6zd3b50Xo6UCgw0Dkzi3hPKeZE4suW12DVsxHq20dLO8qs3a2Al43r78FQ==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-format": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-format/-/dsh-session-format-0.2.1-rc.2.tgz", + "integrity": "sha512-Tz/x0EuWXNbB3u+a2+7v46POj6alqgAN8Zq6GqT4EJJ5VUkBPRLpSJ/+jwo2QCN/xQzREP2i3sGigOBsAPDdhA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-session-format-catalog": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-format-catalog/-/dsh-session-format-catalog-0.2.1-rc.2.tgz", + "integrity": "sha512-r9yPApy9dsDCg4LJ2ljjRPCaeV37Rthuh6qgAP9mfsjOpUzf8NciKlmUvcszTcCvaJB2E9kSUgtk5zEnTFyzew==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-compaction-image-offload": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v1-to-v2": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v2-to-v3": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v3-to-v4": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-format-v0-to-v1": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-format-v0-to-v1/-/dsh-session-format-v0-to-v1-0.2.1-rc.2.tgz", + "integrity": "sha512-y4z3t5L23BkHO0IQeU/cpz4LsZH5J6922f9hPFdQb1MnblnJGFmbIqaX6Jtj1ignlYqHD+bsCdu94B2Hlq1V5A==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-session-format-v1-to-v2": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-format-v1-to-v2/-/dsh-session-format-v1-to-v2-0.2.1-rc.2.tgz", + "integrity": "sha512-Xx+oL8KglCAcgtgJIWKmxtT8tsNZDghonwjYj1jlxzCMbTklxAt7B2xEBY6mAqq82WYpldr/oapT53oIIjlzNA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-session-format-v2-to-v3": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-format-v2-to-v3/-/dsh-session-format-v2-to-v3-0.2.1-rc.2.tgz", + "integrity": "sha512-k0UvSIkIjZAlhgzTbMBMUMFYQa+QurjgRDTt+t3WnlnWAN8VqFzNq5IJPMr7GlY/fsZgW9gH7TytEIZBJBqnng==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v1-to-v2": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-session-format-v3-to-v4": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-format-v3-to-v4/-/dsh-session-format-v3-to-v4-0.2.1-rc.2.tgz", + "integrity": "sha512-tZJ4aoszBAA6jemqe87mhqYOOkqdazh8xEXXtHMsUftCb7ZLSV0g2ZXFrapQcq9STaxnL+fh1BkO+VkOY6GuOg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v2-to-v3": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5" + } + }, + "node_modules/@deepseek-ai/dsh-session-log-deepseek": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-log-deepseek/-/dsh-session-log-deepseek-0.2.1-rc.2.tgz", + "integrity": "sha512-BzQ4ir9jDHF0Fd1in0Dgvsf//neOXalRcAL7CruyRDpEVy44mWYJ89o8IB2Sk1e5i47bZxAebTWInrAjkkwIug==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-log-export": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-log-export/-/dsh-session-log-export-0.2.1-rc.2.tgz", + "integrity": "sha512-Q4AH3GZos5gTPYY/yxtqfF0NC0z3dD04sTtblQUGg3ui8Cbe2gEUIqWNDmrmoWYzUfMx0bCdOY1NUTJFvcmZpA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "fflate": "^0.8.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-persistence": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-persistence/-/dsh-session-persistence-0.2.1-rc.2.tgz", + "integrity": "sha512-eVSgYCBRJPuGCr8clBvyZBhVB6IJwc/i2d655t4W3Kq1eCiMmZjmM6QAtAq75xmrArJ73HuiwGo2jaQ3wVhSUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-persistence-jsonl": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-persistence-jsonl/-/dsh-session-persistence-jsonl-0.2.1-rc.2.tgz", + "integrity": "sha512-M/3Q0x7EyH6aF7VRUoJBwNj+wg4u93HXWm/isXDVU+DES9lmoHNS1qszoBwpNhsCBSXjicQingRfhKnN9QctJw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-catalog": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-format-v3-to-v4": "0.2.1-rc.2", + "@deepseek-ai/node-addon-system": "~0.1.2", + "@deepseek-ai/schemastery": "~3.18.5", + "koffi": "3.1.1", + "p-limit": "7.3.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-projection": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-projection/-/dsh-session-projection-0.2.1-rc.2.tgz", + "integrity": "sha512-GBGgIAaC+Cw1rV7tpyGy9aaENUOkQCosP+LJHcmzqPWg64Ufts36mDEU3f0lC/nyGb0z66Ov+RbyaLLsCnZMwA==", + "license": "MIT", + "dependencies": { + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-projection-cache": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-projection-cache/-/dsh-session-projection-cache-0.2.1-rc.2.tgz", + "integrity": "sha512-6hjiIY6nRnNDHnuIC0JiaVJ0ZR+vQx1WkaV906CnBB0ZgWbGli3fKe1PM3Dwd89hMKFqHDGRrXmWcbU2Sv03GQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-projection-cache/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-session-projection/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-session-query": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-query/-/dsh-session-query-0.2.1-rc.2.tgz", + "integrity": "sha512-1FCAsJ0zygPbthN9qK7as9VIQILQVxkiuzdsLna2n+U8QNaIqkptpYnc/AyYMRLOtOshRSvCIa5nMg9pZBsajg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@deepseek-ai/dsh-session-format-catalog": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-session-persistence": { + "optional": true + }, + "@deepseek-ai/dsh-session-projection": { + "optional": true + }, + "@deepseek-ai/dsh-session-projection-cache": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-session-query-sqlite": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-query-sqlite/-/dsh-session-query-sqlite-0.2.1-rc.2.tgz", + "integrity": "sha512-H7T2MncqazQzulrM/SW5VTj2OQdCRog2L/DxP/K63oDuKwmkJJpfKK94WAnGmN2Mwxm+d7w6hkftNfH6cXX79g==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { "optional": true } } }, - "node_modules/@deepseek-ai/dsh-session-reference": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-reference/-/dsh-session-reference-0.1.1-rc.2.tgz", - "integrity": "sha512-c9mz19ndxjVxSnXEhmJwGDjyKG4oNmu4Sfneix8OUJ+mAr3jIgb/QZZ8rYEc8Bi+Dd1z7Wr90IeWOBF0nolU3A==", + "node_modules/@deepseek-ai/dsh-session-reference": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-reference/-/dsh-session-reference-0.2.1-rc.2.tgz", + "integrity": "sha512-T9UKkEVd2o33axTiPTAabiwoC4G/C9j49lAqEjEtaPUzU46dTgmxneWzrFyWRtC5teRv7ERBttfitTyTVKe0lw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-spill": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-session-projection-cache": { + "optional": true + }, + "@deepseek-ai/dsh-spill": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-session-reference/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-output-retention": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-query": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-session-stats": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-stats/-/dsh-session-stats-0.1.1-rc.2.tgz", - "integrity": "sha512-SKGUZicnHHU8+zCswoluBCHSbTkA5ARQjl7YNxN6qY01ud/azpPdbcVaKO2MUy60Q1myx3W0Xk93VzF7sMt6cA==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-stats/-/dsh-session-stats-0.2.1-rc.2.tgz", + "integrity": "sha512-xhHhnZY1BF+oRLbdwNmOTyOjS69iB6oms9FMXsh8UKghFMu9N2nwF8MDMtr/HEjiHD2HpnT4UKCT7eEKAbmQCQ==", "license": "MIT", "dependencies": { - "zod": "^4.4.3" + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-stats/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-session-telemetry": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-telemetry/-/dsh-session-telemetry-0.1.1-rc.2.tgz", - "integrity": "sha512-yYNUtpxykp10m6YVCcfmxtfiRZeNr9g+Mg5/37oO6W5Fs9A6L3vfCM4Ppn47lwLbQetejsR1QClV4P4I//c01g==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-telemetry/-/dsh-session-telemetry-0.2.1-rc.2.tgz", + "integrity": "sha512-UBZ3OUJ92SP1A2z1JXPBK2qq+3RVW0tn52k6kNlg/c4rdAhuyc6RxJVKfGQsioCPdhKSYyIssQTJn3D2/3Q9nw==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-telemetry-otel": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-telemetry-otel/-/dsh-session-telemetry-otel-0.1.1-rc.2.tgz", - "integrity": "sha512-a+kmjEWvRZTMW/oGzoF0LwlsEOdtr4zCv0PeFPG5+wA3XGqn+uukgh5LnXJt4htApxPfWVj1qBz5GFRgg6MkNQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-telemetry-otel/-/dsh-session-telemetry-otel-0.2.1-rc.2.tgz", + "integrity": "sha512-30zkmxOgJw9HdPyTu4ZX0Pv8zSXLws00Ttbx4WLwTwRnSVkF2X9Z0+F6xORYmaKjYJhtPRPoeEeGagkw4xV/Qg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "@opentelemetry/api": "^1.9.1", - "@opentelemetry/api-logs": "^0.220.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.220.0", - "@opentelemetry/otlp-exporter-base": "^0.220.0", - "@opentelemetry/resources": "^2.9.0", - "@opentelemetry/sdk-logs": "^0.220.0" + "@deepseek-ai/schemastery": "~3.18.5", + "@opentelemetry/api-logs": "0.222.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-anonymous-user-id": "^0.1.1-rc.2", - "@deepseek-ai/dsh-command-feedback": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-telemetry": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-anonymous-user-id": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-message-feedback": "0.2.1-rc.2", + "@deepseek-ai/dsh-otel": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-telemetry": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-title": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title/-/dsh-session-title-0.1.1-rc.2.tgz", - "integrity": "sha512-qHv+9nE6J/piHsWwckmbJBS1sJjunCWsv00arhsgjW1XMLCHxG6QOB+U48P4EBZjve798Tz8AQIlWZy+9T8XmA==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title/-/dsh-session-title-0.2.1-rc.2.tgz", + "integrity": "sha512-QSJGQ6+QAO73wNGmyP6GwT04zaHWw/RwPQOguW+tTNtL+q0zdifIu5ek3iJF5caBI+vlvh7SPN5+WDKZt0anOg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-title-all-prompts-llm": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-all-prompts-llm/-/dsh-session-title-all-prompts-llm-0.2.1-rc.2.tgz", + "integrity": "sha512-rv5joq8y568Ecwc5q9un4/FFuGBvpqM/OkK1rc7CeNWMtSfi63SD7mw4Wuc8Ns/g3kBbR7vPJzwfvMniEWbJJg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title-llm": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title-first-prompt-llm/-/dsh-session-title-first-prompt-llm-0.1.1-rc.2.tgz", - "integrity": "sha512-HWgRO5C+xFOq8dEKwotJ+jNj9SLo222EIlZuTCV3kdEjblLkSJES8jmXsahzLsIEqXfwdplHfgpG+365XE8NWQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-first-prompt-llm/-/dsh-session-title-first-prompt-llm-0.2.1-rc.2.tgz", + "integrity": "sha512-CFcNAUIbpm78OicVXAQQAOs04adq8o2SUT/xVtIP2vKqEA/GUMsmgwH5i4tB4ADCyMGfBq2MiLBhjHCsYjyg2g==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title-llm": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title-llm": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-title-llm": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title-llm/-/dsh-session-title-llm-0.1.1-rc.2.tgz", - "integrity": "sha512-UTdH4h5zuMsNDSEAa3xp6YsfVbLRCCkm/0uBt8wKhu7+rWh7OCgvAgvvwaIKEGST8/8NWC6ogdT2GFNCX4WizQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-llm/-/dsh-session-title-llm-0.2.1-rc.2.tgz", + "integrity": "sha512-CtPz1jpGsa7R8Ix5DqS5k3JYOUrWB7QfSakGRgetJLXDowkOxCDHZc3ZVxg+tN7XOm+cCXhD4eTFlDrzkaaDpg==", "license": "MIT", + "peer": true, "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-settings": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-settings/-/dsh-settings-0.1.1-rc.2.tgz", - "integrity": "sha512-iGdKEt91Im3gE7xA9CzRfTJsPcFcxDeDOCLhAjzbpjEv7TAjx/EoYP7lPtiy+QmOjKSKy206SEtAKol9PXWbOw==", + "node_modules/@deepseek-ai/dsh-session-title/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-session-turn-outline": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-turn-outline/-/dsh-session-turn-outline-0.2.1-rc.2.tgz", + "integrity": "sha512-VRZ0tKtqc6rHsq+K5zD6ylPQpFWdTSrGvrdwi5/v/Lbe8GAiVz0d7HJ6+Z7R4y5l5Z8NvRVEoY5bDW4VqshTqQ==", "license": "MIT", + "dependencies": { + "zod": "4.4.3" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-session-turn-outline/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-settings-file": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-settings-file/-/dsh-settings-file-0.1.1-rc.2.tgz", - "integrity": "sha512-6EKER/KLEOwmTkB0AMb/Or/UVkeaqxisZ4WKo+tgsYyJYDTBTDOZjVRz+nedK7vLj1AH8JiEKvmAf6FMxkZvrw==", + "node_modules/@deepseek-ai/dsh-settings": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-settings/-/dsh-settings-0.2.1-rc.2.tgz", + "integrity": "sha512-CtpetovAC2ZQ1rjIFYHbu1LOcGXTulP5IhlxKqDYSDhLEQGoU2L6LnN6HpGKuU/LBCAAN88ihP+B/2E5rTNcnQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "chokidar": "^4.0.3", - "yaml": "^2.9.0" + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/cosmokit": "~1.8.6", + "@deepseek-ai/dsh-config-editor": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "yaml": "^2.8.1" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-atomic-write": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" } }, "node_modules/@deepseek-ai/dsh-shell": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-shell/-/dsh-shell-0.1.1-rc.2.tgz", - "integrity": "sha512-gEqPUxKOpOV66wvM4o8Z5FEuWmsEvYzD9OQy3cyo/kjzlx+2+KUWi22cl/YWtBs/zUtRJbdG5UqMnh8GUeO8Hg==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-shell/-/dsh-shell-0.2.1-rc.2.tgz", + "integrity": "sha512-/p3LkBv9U5MpIn6a3gMMqFhRby4vDmGfdd50q6Bl8JRBxkgBGUrh2FvPyH8CFSkFQFugLAidmyKa+vS4F/5MWA==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-shell-env": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-shell-env/-/dsh-shell-env-0.1.1-rc.2.tgz", - "integrity": "sha512-dDKKqsxsbklUpxX5ornd/SKJ2yfr/SOHOWDgeJkYvx3SMSXq8EvhCK/VEvHswXQ25rRLFWM4/Mr3htk1hn/GPA==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-shell-env/-/dsh-shell-env-0.2.1-rc.2.tgz", + "integrity": "sha512-IUwtEZL0DPv7tzE7KnOugD4dUF53SokJQgzDhlCBT1YJX5L71JFMyiBdRaGeQBUuZDnl9YIM+rtNUizUkwM5RA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill/-/dsh-skill-0.1.1-rc.2.tgz", - "integrity": "sha512-FACjlOqdsWX+0RtSs3RWrdY0QQEpPJrBfvxUbWSh7E8UyCM8dKdIbsQnuXIjsAgC7GgYp7lyFDSCMovQ3ARp8g==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill/-/dsh-skill-0.2.1-rc.2.tgz", + "integrity": "sha512-lB9mB0zG+H6oUSvDllF3QJ5yHIm+QAlCu8/nsWdvQV0APAjBJDrwH/u7A0n9La5T2VbsoGEIjWivmLcJmMFg7w==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill-badge": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-badge/-/dsh-skill-badge-0.1.1-rc.2.tgz", - "integrity": "sha512-1JL4KdWk8pApJAVGlX7SS7p/MIhFKSq7GgA32qHIKWZBnL0qkwtaDdGbk2mam00NVcfGnpTPBXjwL1kOboPn8Q==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-badge/-/dsh-skill-badge-0.2.1-rc.2.tgz", + "integrity": "sha512-KwrTBXAwl4hWILRth5po2ZlDZ0N4y4FYHa16u/eIZ0nayQqSUSwcVrwsE4A3sFTH16xpCy4b8EJ/9RvPQEVTUA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill-filesystem": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-filesystem/-/dsh-skill-filesystem-0.1.1-rc.2.tgz", - "integrity": "sha512-eyQGv4046c392kIvOCom+gvJpiFbkWsf/VqB7dCQXTZrdXEx99P8oOm3jsagnllcLKYyZVVETs75pPgznye/iw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-filesystem/-/dsh-skill-filesystem-0.2.1-rc.2.tgz", + "integrity": "sha512-bFCzvYC4sm6yiEiQboG9ERFaYAkxHUr4Y3qYWH9Rh8843r9Y4firT9Bde2sKJd8dSl+9P6Lgql6gtCRdP0r2WQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "chokidar": "^5.0.0", + "@deepseek-ai/schemastery": "~3.18.5", + "chokidar": "5.0.0", "yaml": "^2.4.2" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-skill-filesystem/node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "node_modules/@deepseek-ai/dsh-skill-office": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-office/-/dsh-skill-office-0.2.1-rc.2.tgz", + "integrity": "sha512-1BRgT/LCVh8fRnUM5YSm3U+ORZM1/XRNCDqBlkPdnWvA4qR5K1DkK+87unxNo7/E/9YFbOhuA+O6C3zVydUSGw==", "license": "MIT", "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@deepseek-ai/dsh-skill-filesystem/node_modules/readdirp": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-5.1.1.tgz", - "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", - "license": "MIT", - "engines": { - "node": ">= 20.19.0" + "@deepseek-ai/libreoffice-kit": "^0.1.5", + "@deepseek-ai/schemastery": "~3.18.5", + "yaml": "^2.4.2" }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-spill": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill/-/dsh-spill-0.1.1-rc.2.tgz", - "integrity": "sha512-iayBN51zRj0+ER6KKJM6UlN1dfKXe5eDJeSwYmH+j3wLbCBQTD7Axnhmo9t68JBRrg+eczg2epFMR5RrXrisUQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill/-/dsh-spill-0.2.1-rc.2.tgz", + "integrity": "sha512-g9wzMPYiUSPzTjnVQc64MCXqoOxU0PMlNlq3Aeqtl26Lvn9JUVgKfL290VKXzfeFLge5nb0/p3eg2sDDxPC6/A==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-spill-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill-local/-/dsh-spill-local-0.1.1-rc.2.tgz", - "integrity": "sha512-I2t9BRjFw33Ya7c/nSZEwZeDSOCk06fDnGvTmXZoaP+Y4mWRBKStfRk4DvBsUQJW+/ov/E5OEvhNhzhZcUnXgw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill-local/-/dsh-spill-local-0.2.1-rc.2.tgz", + "integrity": "sha512-IK04TEOyOamGo1Askk/R8apOgOyuuan8gaCrUYT8PnQiYy3DuvIU+GEDXrGGJwVIWF0rVH1p+TBga/Yb6KJFbg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-spill": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-spill": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-spill-policy": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill-policy/-/dsh-spill-policy-0.1.1-rc.2.tgz", - "integrity": "sha512-ulkAuhjIm9sOzNdZ7TDqXyvk601Wn3mN/d1QkBBNmCnxt8yQY/nS4ixGtqCVWCu/tdzQOlVw55qKrcNvsQAJ0A==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill-policy/-/dsh-spill-policy-0.2.1-rc.2.tgz", + "integrity": "sha512-DrikZFwGuzMZfM4fg4bX7lQe9zx7SwKIWRG1MItF1JIi1h150jl/TQY2XBPuVDxuelCOgWbITI43t8+pO6vQ/g==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-output-retention": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-spill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-spill": "0.2.1-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-storage": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage/-/dsh-storage-0.1.1-rc.2.tgz", - "integrity": "sha512-ptJ1ss8spF+Y2VXjsMV37Qh1+hviYWZylDvXtfEBXjLbPi/BP3dktT4B6OMIAD1rRN+0A4HdTqJBgLk7Gp1rig==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage/-/dsh-storage-0.2.1-rc.2.tgz", + "integrity": "sha512-ff/okmkgGxx9MpG8xuLWIQkZty1zWM+AkOMDZ3WEiPc3yC4xmRVzG8aPQY4ATzqCGoJFWLdNf4NZ9+i+RStnug==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, "node_modules/@deepseek-ai/dsh-storage-domain": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage-domain/-/dsh-storage-domain-0.1.1-rc.2.tgz", - "integrity": "sha512-9/3OuaZpxf9NZWhrARpgZ7UBa03pPaTIiDBw+SfESfwVk42NNLVCQgvnEbrWoNwdtzmv0aYCEV23sKwwlQ0LBA==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage-domain/-/dsh-storage-domain-0.2.1-rc.2.tgz", + "integrity": "sha512-fgXOo83gDHIvFIznnPznxybf4vTyjxDFzS9YVg/GyakdnRF/hI1UcCKQXZTwPRW9XdJV1gQps+WuxXNFFWyT5A==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-storage": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-storage-domain/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-storage-json": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage-json/-/dsh-storage-json-0.1.1-rc.2.tgz", - "integrity": "sha512-UNq6yn/iCh6T1TJ+4XN1Gofam3oqqNgENxAcnajRaD8KIsryVstS7Nke+j3vLdu6MDiGjCsilxyZYtqduE+Dog==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage-json/-/dsh-storage-json-0.2.1-rc.2.tgz", + "integrity": "sha512-CJJbqqopSqizFZVX5HtoZTiAaYfSTOsaWIK5XIWAtWsbmAghCig3ZtaNchpo0kzMDmTRGHpHX5V2JlR6AbMhMg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-storage": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-subagent": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent/-/dsh-subagent-0.1.1-rc.2.tgz", - "integrity": "sha512-CNa0WuFCR69TMnBKYQInz49/olDSaVHiYkDTyTuDh7YW7Y80/f/HjQe5G0fQaqZMLla3IUSXCIPl5EssWmjcQw==", - "license": "MIT", - "dependencies": { - "zod": "^4.4.3" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-agent-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2" + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent/-/dsh-subagent-0.2.1-rc.2.tgz", + "integrity": "sha512-c2Zw5qiHm5X2C778tAoAGVirZtsuOZ0ikgdnrQKe2lvKdo0z0Q19StHX8ghu4J5RXrsfg5cRrNgVN9ZO4jlLxw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-chunked-list": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-time": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2" }, "peerDependenciesMeta": { - "@deepseek-ai/dsh-agent-presets": { + "@deepseek-ai/dsh-agent-preset-registry": { "optional": true }, - "@deepseek-ai/dsh-jobs": { + "@deepseek-ai/dsh-permission-presets": { "optional": true }, "@deepseek-ai/dsh-sandbox": { @@ -3221,842 +4618,1361 @@ "@deepseek-ai/dsh-session-projection": { "optional": true }, - "@deepseek-ai/dsh-session-projection-cache": { + "@deepseek-ai/dsh-session-query": { "optional": true }, "@deepseek-ai/dsh-user-approval": { "optional": true + }, + "@deepseek-ai/dsh-workspace": { + "optional": true } } }, "node_modules/@deepseek-ai/dsh-subagent-fork-in-process": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-fork-in-process/-/dsh-subagent-fork-in-process-0.1.1-rc.2.tgz", - "integrity": "sha512-m5qWHamlJqpwJEUZIZHfKEERhCmsR74B93jGo9ues2pMB7yYjk297oRLQXmaJrQi9FD6zmFntgpwXStK20mbWQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-fork-in-process/-/dsh-subagent-fork-in-process-0.2.1-rc.2.tgz", + "integrity": "sha512-zBMdnqmzQYpLiMg1K8rvlRCUsFFPmSgTTqBoO8o7UquqPdtxNpgUMyxJfAwJStrUmkWUp5GhwAdXXQE6DeeG3w==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.1-rc.2" - } - }, - "node_modules/@deepseek-ai/dsh-subagent-in-process-driver": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-in-process-driver/-/dsh-subagent-in-process-driver-0.1.1-rc.2.tgz", - "integrity": "sha512-+GCNjPnRJOB4fv6pc4b9qQZvzoluH9neOLCrKEpJsoNn1c2XCQMaylc8G+WEziIbvzDvHcpKJJWm50XlKuDfMg==", - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-subagent-spawn-in-process": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-spawn-in-process/-/dsh-subagent-spawn-in-process-0.1.1-rc.2.tgz", - "integrity": "sha512-Xxe9GzhOK4gIfNUG/Wgx3vsCx7aGZTt268943aRO0wlKQ7Jcku5rH84KfJ+IP2ZY0954KRm4+GQLOKJc/1SSjw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-spawn-in-process/-/dsh-subagent-spawn-in-process-0.2.1-rc.2.tgz", + "integrity": "sha512-odjH+gYSGIpW/UWZjzVy67aH+8IAMt4AU7AsVt11bhB07jIDK9NNQopHRyGJja1KzaqKaGYmlCjWDj1Kr4bzHA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-subagent/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-subprocess": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subprocess/-/dsh-subprocess-0.1.1-rc.2.tgz", - "integrity": "sha512-YXEBaUfdkCJm4Wj/w08imS+1TMd3K4Rjr/xD5tuJR1I4/EnBCseP6AOlwjcrDP5PPWfOZghrK8H01sk6cqiK8Q==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subprocess/-/dsh-subprocess-0.2.1-rc.2.tgz", + "integrity": "sha512-56zNxFUPDFSIHmOaRzcuadXyrGZaFGECqQsLc78d+QIPhFkAN2bXeGIYCo++Ly5SK14FeEtgrYtKpDhRPmBR9g==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-http-proxy": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-subprocess-local": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subprocess-local/-/dsh-subprocess-local-0.1.1-rc.2.tgz", - "integrity": "sha512-I4pyzpohZEVRQQbuEpMP0t8oKsf+XIlRo64aJVKGXI2eMcg9f9gbfhKQNYNqRGbegQL1HYpSLU6Rzyibldgwaw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subprocess-local/-/dsh-subprocess-local-0.2.1-rc.2.tgz", + "integrity": "sha512-z1mF0pVwcmroARNSxWGFU98BDMt0lXGG+JCYZ0yHBvtHGdMbasivbQ9SvAvTdnsXJtuudjWndeMJetcfPFQXgw==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "koffi": "^3.1.0", + "@deepseek-ai/dsh-lazy-require": "0.2.1-rc.2", + "@deepseek-ai/dsh-win32-process": "0.2.1-rc.2", + "koffi": "3.1.1", "node-pty": "1.2.0-beta.15" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-system-prompt": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-system-prompt/-/dsh-system-prompt-0.1.1-rc.2.tgz", - "integrity": "sha512-on4hjAlYI5uX9q7Sf95YkMMBVe6heywtA/H50ksrIMUub8U2B98hO9iQpHhjwIO1F1vu+5pLcPvRr6yUGGmtXQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-system-prompt/-/dsh-system-prompt-0.2.1-rc.2.tgz", + "integrity": "sha512-X1WG2FMyfZapAkcCYyTl0UO5vVqDcCsA9wECJY7eeDTLHJDsqrilQJg2DRgHQzM+2/7T01QyzFZhKd7hfALJxg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-terminal": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-terminal/-/dsh-terminal-0.1.1-rc.2.tgz", - "integrity": "sha512-NOsajXg4cX09coiLtCMgSqXAw90uptqyA9Njv6MVAOLgh6ctpjsolL3VIIWapSJ6AngsCTqVXW7sxexwpl0yUw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-terminal/-/dsh-terminal-0.2.1-rc.2.tgz", + "integrity": "sha512-6/ymVJ7nXOjwSoC/Po09TYp/ZXPGUYKCkpcfqixWVmubh5EecbO7rb/rRZB6Bzb+4cwHC84MTYVBO17UiFWvbQ==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-terminal-bash": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-terminal-bash/-/dsh-terminal-bash-0.1.1-rc.2.tgz", - "integrity": "sha512-ltR4K6OBe/7I04w4gCGgbxIv8/qVYHO13vAvwfwmrDM5jePbrEPMu5/xpwPbR28C0kOb7dQy2Z1+FwtVGxviqg==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-terminal-bash/-/dsh-terminal-bash-0.2.1-rc.2.tgz", + "integrity": "sha512-dSevTPD/crvesqmSj1scHyJVNTqjXt2TNc+iciMTP+Pwu+78Z66DFaRWApABW0ScJWJiRjz+VJaYcB424Qpdtw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-pwsh-local": "^0.1.1-rc.2", - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-lazy-require": "0.2.1-rc.2", + "@deepseek-ai/dsh-pwsh-local": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "@xterm/headless": "^6.0.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-terminal": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-time-context": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-time-context/-/dsh-time-context-0.1.1-rc.2.tgz", - "integrity": "sha512-4Q1sCr06SfJ7jkhrvfdg8ZSFp5Ohtl4E9nH19nUbIjcGK8F5yA2h68HPEglztDo54vxI5HZSblLIjdGKZkY+FQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-time-context/-/dsh-time-context-0.2.1-rc.2.tgz", + "integrity": "sha512-M+f7zYIxxaBhEt6dVnHOVVo9fdU08+MwQ7CTvWQkEndJ1W+Egq+F1yGJ+X3TDVL5t1Q5QIGDKFCNqrNWulldtA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-time-context/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-timeout": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-timeout/-/dsh-timeout-0.1.1-rc.2.tgz", - "integrity": "sha512-RrouVgU3G5gXr9zHhpThkMG6YKdcRJzXXdPm1dq3ioBxbvxlfMSfNY4tN8lWMJxLyGtvWkPra0HQX+YWxvdOOA==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-timeout/-/dsh-timeout-0.2.1-rc.2.tgz", + "integrity": "sha512-R75r+GkYP+ZhtIsIfn8MMuRXPkugJr0OyQ1Y+rauoTae2sdVfnE8v5zvQORRCHdh7MiOcmh10dQN70KjHh7qhQ==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, "node_modules/@deepseek-ai/dsh-tmux-context": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tmux-context/-/dsh-tmux-context-0.1.1-rc.2.tgz", - "integrity": "sha512-gsOY/pbm9gdO2sKlqWymv4UxGocm3/4hU+84eTD/Wi6Vnt0QOPDSHEO/SjZ/sdIxiTxoKQLz4mqy0LYmc7DNDA==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tmux-context/-/dsh-tmux-context-0.2.1-rc.2.tgz", + "integrity": "sha512-inRJAZ9Q8+NcGcrj0ef0NMxfgceOh2h6FPTpk0LuX37l/wihQhmL+ihJgnj04IxHFZlveuuWAS2frFd4lOm6zQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tmux-context/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-token-meter": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-token-meter/-/dsh-token-meter-0.1.1-rc.2.tgz", - "integrity": "sha512-XHSgvMga4h73LHzuG8gztocs74+6NYg7ciHdu2aM2PYC59/rPfxq4Kz9Hq6TTvYa4a/sDgCij/T0tZBNvQixDQ==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-token-meter/-/dsh-token-meter-0.2.1-rc.2.tgz", + "integrity": "sha512-ObJQBb8fbFtw4oAPBTpAcbEdYH6Yqf2cnG5V2RShKmFQeMkuKv9uYCRqflnmimIhgslWO2kdOeg1ACDBYHemvQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-compaction": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-compaction": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-image-offload": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-token-meter/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@deepseek-ai/dsh-tool-ask-user": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-ask-user/-/dsh-tool-ask-user-0.1.1-rc.2.tgz", - "integrity": "sha512-6zSUxSducAdrSJ9J172rzJrqv0I/LbZQZa2ri3k0shYzM2reOi1tf+xWDxVFafUscxeyBpnpmNfXXBuZPt0HZw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-ask-user/-/dsh-tool-ask-user-0.2.1-rc.2.tgz", + "integrity": "sha512-28yabGtN8Ter22XoeCK5sGuAbkjEH4hbRpHvmgJUkJ+dXvanbyvEY8qIp+WT3wMvKiuUr1bM+AVByyglouarkQ==", "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-questions": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-bash": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-bash/-/dsh-tool-bash-0.1.1-rc.2.tgz", - "integrity": "sha512-YNmrKmBanj5EQn1zejjbo4UUFtg2/h3s9y0lY3vBu+dezNz4HdUlSkSZACbNUAZywyLomdhlt4rJdtdnrqyS7Q==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-bash/-/dsh-tool-bash-0.2.1-rc.2.tgz", + "integrity": "sha512-TwHTe7WTbvkcH9d5mTW8X7FviWEVbDCjfbi6bvsleFSsvPJoWCHdn14XXYlc0hOCpfVWoTxaW2bhryykh/W7+g==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell-env": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-bash-persistent": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-bash-persistent/-/dsh-tool-bash-persistent-0.1.1-rc.2.tgz", - "integrity": "sha512-pPI2ln6OdlCW6Kks5VWsFm7sC5NEkZetKOJ8TUrsXkbCM32wWLEaMPVsN9p5XcG/ao99p+Nh0Rdx7PYn4lfg0g==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-bash-persistent/-/dsh-tool-bash-persistent-0.2.1-rc.2.tgz", + "integrity": "sha512-bRxTzM+qRggJifBFonc1EGKm/GFw1utKk44sgWnHcW43Kr534rIwUnO/8AUS880Vl1hEFY0RdngM8ZRiYGftvg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-terminal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-call-timeout-policy": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-call-timeout-policy/-/dsh-tool-call-timeout-policy-0.1.1-rc.2.tgz", - "integrity": "sha512-vPYSRvYV9mDSNRl3BU4M76cIA4oigBD16eS/TxFjAj6fpkdc4JgLA9nsvl515/1DJLEIYnp3HQF3iCsptEdurw==", + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-call-timeout-policy/-/dsh-tool-call-timeout-policy-0.2.1-rc.2.tgz", + "integrity": "sha512-qSHrV28WMaXBUo+zWHXVrJ7cyuZ6esiFbjsGjHf9g9olgyZKUeHIvrhkVst+3CiQrUddwc17528HsuT6jz4bvQ==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-cordis": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-cordis/-/dsh-tool-cordis-0.2.1-rc.2.tgz", + "integrity": "sha512-jJfhtPwxuBQmGFWj3E8vv9mYNbGUJN7yM+tjlL3mZGpyuvM363uC9v1PlDS0ZGxhD//iJoBUpFWIOvRXgIVCww==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-cordis-host-runner": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-fs": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.2.1-rc.2.tgz", + "integrity": "sha512-hd3LmMFiOa4TTFL9+oabTe26CjzGUbflCMm8TcXm9jHN1tIhB8el1cyzaQ2x4A15G/jIlAsGZyuwuf5/FFJIOQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-code-language": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "diff": "^9.0.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-fs-search": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-fs-search/-/dsh-tool-fs-search-0.2.1-rc.2.tgz", + "integrity": "sha512-CSXZmqZ1ujAyoouesbeprgpb6RBL7RdhvlRy08VMZ09gQckeUQWusekrZtD29leIiojhMb7HGEgSGUunBcPfOw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "@vscode/ripgrep": "^1.18.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-spill": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-goal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-goal/-/dsh-tool-goal-0.2.1-rc.2.tgz", + "integrity": "sha512-I5Btwx8jnPOwMS5vs5ERqf0TQDLp6ig/F9Yg4TFiexYo+oOUnnBZFS4PT1XRonvxTuOi6PItjgt/+CqUVU3lpw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-jobs": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-jobs/-/dsh-tool-jobs-0.2.1-rc.2.tgz", + "integrity": "sha512-rvF773vNsP4m1YFl0zycuu8xI4wdMu7ZlyHFffh3kxBX3F86ow+puPtDJ7A7PRQE/bduwfviQGOrjtNo+jcSDA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-present": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-present/-/dsh-tool-present-0.2.1-rc.2.tgz", + "integrity": "sha512-VyJ0dLDy9c0GPxEk6eqz3XTTXhosB8Q2de8L2qcLn1kPHSPJOKMrzqrQyJeVMlJogzBcBpp4KUPvxHyYFBv+gA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-pwsh": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-pwsh/-/dsh-tool-pwsh-0.2.1-rc.2.tgz", + "integrity": "sha512-WAId/fyd7A6i78LWPy+zWTB15r9qCBdJmlOi+uzn9ZyMNG/n9QrdT6PPdcXeDU1FYgCJFJyeFnwekBSJfBDbcg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-pwsh-persistent": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-pwsh-persistent/-/dsh-tool-pwsh-persistent-0.2.1-rc.2.tgz", + "integrity": "sha512-K8h6pwAUE07xjHwKN2J7TMlbaLG/DFFpirkodS8xjd6ClrVmsJMcbIYNYLz203poZf18UZkT5XUHmise1yDhmg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-ralph": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-ralph/-/dsh-tool-ralph-0.2.1-rc.2.tgz", + "integrity": "sha512-hAnvdMt6LmrB2chqPLVCXDyMwGQFLy2vDoSyPX6eBCwN91chTfpQTGOXG3Ja5ypzYjF7exd7gbKm3i0BlK8g4A==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-schedule": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-schedule/-/dsh-tool-schedule-0.2.1-rc.2.tgz", + "integrity": "sha512-bciil/UA8m9jDQq9rPRKkx5kWVjwoPGL49HKjs/Q32leMfoKvRdWhN7eAxKiIbL+zIqnbiDZd1HKUpgZ+QjLbg==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-session-query": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-session-query/-/dsh-tool-session-query-0.2.1-rc.2.tgz", + "integrity": "sha512-uW0HFmzBSxEBXWkc8905iuKcvUYpO1EVtNkXuw/P8UzKHRHPhE5H2NqGseRqTaAr1Q5Vidbrod8XnqtKNNZpWg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-skill": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-skill/-/dsh-tool-skill-0.2.1-rc.2.tgz", + "integrity": "sha512-QlDOfoOrr1NY9gk1ebOBcmuk9SKHEbX9Qw3Dc17UWlQqWTXGdFce/fAnJAo+6xgpBMqA8PvfXrD6r94wCHmYSQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-str-replace-editor": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-str-replace-editor/-/dsh-tool-str-replace-editor-0.2.1-rc.2.tgz", + "integrity": "sha512-9F4fQjyCORpO7NABEmAIEVCB3ApZcpf6GyPTwHmh//oJxC9Rg1RHEZFLiXMnsUv78JFj+OihxQaEiz/fjBspmw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-subagent": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent/-/dsh-tool-subagent-0.2.1-rc.2.tgz", + "integrity": "sha512-VxIhRFSVyUg6i4imonbPhfjgfxqmSM0jkGt8jE9bswqC1+53qjVACcyEMGirWalqvNaTaiLO+c7d3u3Y9KGQIA==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-agent-preset-registry": { + "optional": true + } + } + }, + "node_modules/@deepseek-ai/dsh-tool-subagent-control": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent-control/-/dsh-tool-subagent-control-0.2.1-rc.2.tgz", + "integrity": "sha512-u/TvDbBtKPh5khrmNcSPc8B7kEg28m8z/KkHfysnLcIe7iHY18rGseFV55cGdGnd+vj7KMUuxi0Lhlb27AH0Ug==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-subagent/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-tool-terminal": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-terminal/-/dsh-tool-terminal-0.2.1-rc.2.tgz", + "integrity": "sha512-OUoD/bbGZNM7wRcwvOdZXQJ6R2k5I47WNi9bw6KLJJo7DMWAHUFUz+/cKnKarKr/AL0lZejCH7zENVs5K0OMjg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-todo": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-todo/-/dsh-tool-todo-0.2.1-rc.2.tgz", + "integrity": "sha512-9hN/b++pvkmtskDFXM3xCRrHUc5jMzuYe9pvMGrtebDoWPJG5Huc2lM6ntdTjhLVkAgiWY+oqoZVAtZ+oXpyGw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-todo/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/dsh-tool-web": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-web/-/dsh-tool-web-0.2.1-rc.2.tgz", + "integrity": "sha512-oyS+IvvRPPp061NiOpWOjaOcnk8bdQGtTnSbAbGB/iZgmCbxFgaZbm5SPpFFfi62QgfmxaC429oJfGLgGbuWXg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "@joplin/turndown-plugin-gfm": "^1.0.67", + "turndown": "^7.2.4" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-web": "0.2.1-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-tool-workflow": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-workflow/-/dsh-tool-workflow-0.2.1-rc.2.tgz", + "integrity": "sha512-tPcDiiqJIc1D+wmgEUD8NDBHQyujD9zFW0stvr9I0GHVKAqY68SClIMz46AD/qLfggk4bdHG4/wWdrQ+CefS0g==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-cordis": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-cordis/-/dsh-tool-cordis-0.1.1-rc.2.tgz", - "integrity": "sha512-cBgfa+0Al94/ur+jaWk2uHZ2ChFw3Mf9nmgaFcToFxkBDAcSCpeKjXK27aw/g2EIz3MvPMzOJo9MLDF3WkUEZg==", + "node_modules/@deepseek-ai/dsh-tool-working-directory": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-working-directory/-/dsh-tool-working-directory-0.2.1-rc.2.tgz", + "integrity": "sha512-/7XCdqaGukQ2fKkgmOa7xJGuVVflCljoZIqbAJjRfq/bp06LujPF5MpF4gNI+pwbAyYTqodRvrUpdMPM6HASDA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-fs": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.1-rc.2.tgz", - "integrity": "sha512-llX8AWbaI3CGme/a2eeTSfy5atk8u3iJeOFzmZV/KZ0v0hMhKZIK1xQInWwC9OmSDJ/StStJe0hDPVLWbB7hVg==", + "node_modules/@deepseek-ai/dsh-tool-workspace-dependencies": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-workspace-dependencies/-/dsh-tool-workspace-dependencies-0.2.1-rc.2.tgz", + "integrity": "sha512-p1puhlZj2eud6BFk7ZAwV1esBhW7w6IzN2UJjWOi+EaXWaxpRa8qZd0868OvwgySngtYpxPYl7gFSx3gRpxQSw==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "diff": "^9.0.0" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-fs-search": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs-search/-/dsh-tool-fs-search-0.1.1-rc.2.tgz", - "integrity": "sha512-gHu+6Cs9zs1EYd5KSEJxAsw29sz8pGaj+wJb1cwbK39gzK0AUQ10RlBYuxee6SXgMMnD/vFJZFjxRtCAdo1CCA==", + "node_modules/@deepseek-ai/dsh-tools": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tools/-/dsh-tools-0.2.1-rc.2.tgz", + "integrity": "sha512-K3gET3VPbtxM66pkeRsEGrZ+bQKiBqrTbNXiIreBKu0hP+qPvlSwhiSI5MTnFp2tMFK5rpuYMZosRIdbfrbJ/g==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "@vscode/ripgrep": "^1.18.0" + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-output-retention": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-spill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-goal": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-goal/-/dsh-tool-goal-0.1.1-rc.2.tgz", - "integrity": "sha512-kTECpE732uwlxRJr/jBZb1BqaxZzrA7Rv4KuM3eolvhoTJ5zjyiR2YHmDmCSfuI6zmA/BEfWss7D0mLbVtJEZA==", + "node_modules/@deepseek-ai/dsh-typert-loader": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-loader/-/dsh-typert-loader-0.2.1-rc.2.tgz", + "integrity": "sha512-E/HQKF+951R0oeFr+r/t2uJDq1O682VSF6bgT/fI91EPH/NbX0/DJC6c+9awQ+InF8caiELWdhbGYutZBVUohQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-typert-registry": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-jobs": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-jobs/-/dsh-tool-jobs-0.1.1-rc.2.tgz", - "integrity": "sha512-wCU7mo2uoQcAtz7de4ZXP2es9lALsmz6XzC+KAlS2e7/yTBi9a5LL2vdSr6XhExVAuhu/6f9eM/w4EQBOxtKlw==", + "node_modules/@deepseek-ai/dsh-typert-protocol": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-protocol/-/dsh-typert-protocol-0.2.1-rc.2.tgz", + "integrity": "sha512-rtsHJHGE9SWX+zOgtDbPUqz3h7r+qFm3h1WASzRJxDnULqo7JaBdIiGshNTFPmetsX+r1T69CKFdTZAJmHwMug==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-output-retention": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-pwsh": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-pwsh/-/dsh-tool-pwsh-0.1.1-rc.2.tgz", - "integrity": "sha512-Gr0F4VWCIIR25qWVv4mMEJnewXILHLCkZwrLfbHA2OOI7DNvvdB5wjJxhuo+ZQa8/3KJ/byQGtEBqCY9mb10Zg==", + "node_modules/@deepseek-ai/dsh-typert-registry": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-registry/-/dsh-typert-registry-0.2.1-rc.2.tgz", + "integrity": "sha512-/qT1p3e66anA2JAbczWQ8z7bIv5DA9pbMgC8Rw7G0iBaxpmsAp4qH4bdBdMAGuDDaZRCgrRHdK/M08Ld4nnMTQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell-env": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-pwsh-persistent": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-pwsh-persistent/-/dsh-tool-pwsh-persistent-0.1.1-rc.2.tgz", - "integrity": "sha512-h/CgOw+pZQDl+upWeFdUF1wzgZQ4NgTSMAmlOe60QRObEP8rEYggELP3QQiJbgXs34N5E6Ovf4W/ADtnFJVsEw==", + "node_modules/@deepseek-ai/dsh-typert-registry/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-terminal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-tool-ralph": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-ralph/-/dsh-tool-ralph-0.1.1-rc.2.tgz", - "integrity": "sha512-SGOMIJPufjz+eia6p8lRIZ9ybflk/6m1E+MAm6zg4QeCnXcGr2z3fkA8+/CTViosj9wh8NfXJYMFweRpbigkDA==", + "node_modules/@deepseek-ai/dsh-user-approval": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-user-approval/-/dsh-user-approval-0.2.1-rc.2.tgz", + "integrity": "sha512-pwhw1U1IZZm5tKyPayj2APZBq5I7/I0C0ad+ohd4vKuNb6twDIltt1GEHdCNt7I19IGHLRiUY+/Q9S/8+q5K0A==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workflow": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-skill": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-skill/-/dsh-tool-skill-0.1.1-rc.2.tgz", - "integrity": "sha512-ADOjLELlf6QgrJDFdieNDN42pInPHL39ZU/+v+MXxkhE6poM+kcZmn/eCxbfSvMBFQm9E58Zvg60c0hrsi5BCg==", + "node_modules/@deepseek-ai/dsh-user-questions": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-user-questions/-/dsh-user-questions-0.2.1-rc.2.tgz", + "integrity": "sha512-XVsvMCjxHuDX4YxhwWqRi1IExp7evWVyQ1Gis+90ZBmRNRH/MujjboE+QVc79sdg+p79tzJmqPUDxPj1JOyjzQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-scope": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tool-str-replace-editor": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-str-replace-editor/-/dsh-tool-str-replace-editor-0.1.1-rc.2.tgz", - "integrity": "sha512-Pzyjfr3T9VSUKyAmxoejp4GVvwup9gmj2Kx6WmoUEMK17NPZrhRXgMXbzFu2JnRjxRp2p1FSs4JDb2734xMQzA==", + "node_modules/@deepseek-ai/dsh-user-questions/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@deepseek-ai/dsh-tool-subagent": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent/-/dsh-tool-subagent-0.1.1-rc.2.tgz", - "integrity": "sha512-26TuzAuxy8x/jDuWJdvCSRQ/ojm7++5FQ6CRLCdZcgU/3Iw2ZY9TKqAIz48cFHOv/wS3+ru0rX3fF1etv6a11Q==", + "node_modules/@deepseek-ai/dsh-util-code-language": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-util-code-language/-/dsh-util-code-language-0.2.1-rc.2.tgz", + "integrity": "sha512-iEK8hMNzWu9v5AYDlGEDFYdMyxsToOwlLKahQ7Yk5Frl3UM5WcY9cqviAFlrBYXCVRYN5L+l/JTugSG6IbHP7w==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-subagent-control": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent-control/-/dsh-tool-subagent-control-0.1.1-rc.2.tgz", - "integrity": "sha512-I1enWV1Pm045l5usFwpJtbzJEpic/XdPdWOg+l0it4ia1jUq9l5jPZeQ85Z2x4UbyxtXFOMDGvSL+9kMi0LzLQ==", + "node_modules/@deepseek-ai/dsh-util-crypto": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-util-crypto/-/dsh-util-crypto-0.2.1-rc.2.tgz", + "integrity": "sha512-V4SxvXL4ZbY5RYJckVtmo3qz4YsA52pYKvDF13+8hsDCEmQIv9YfmLRMA61pjK/i05pGMe3p1pPhAB6L+NOIEA==", "license": "MIT", "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-subagent-report": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent-report/-/dsh-tool-subagent-report-0.1.1-rc.2.tgz", - "integrity": "sha512-nxy8Y4PhhaasMewLb/Cj+gU/CthtXgtrPuR2NZmYr49xWYXBu8A2IoWFwf6Y7HkbZRSPg6LPsQJEpftjnIYc2g==", + "node_modules/@deepseek-ai/dsh-util-time": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-util-time/-/dsh-util-time-0.2.1-rc.2.tgz", + "integrity": "sha512-qfiNQxkRnJMY0xDmwJVJe6khOV2EoIOihaljNWi7EaC1Q1bSgXm3SGUPQhf0G0WZKEE0uh5/KnibPEMGhK0IDw==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-todo": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-todo/-/dsh-tool-todo-0.1.1-rc.2.tgz", - "integrity": "sha512-YKP77X/fiKxva/ZzcqkDy6WhNUWYA9oTrAPLAVf3GP+ubIu+r4/cPxu6f2+/8rXLYSi47HXAHajeqQbw2UNXnQ==", + "node_modules/@deepseek-ai/dsh-util-values": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-util-values/-/dsh-util-values-0.2.1-rc.2.tgz", + "integrity": "sha512-mgnByPadOgZtoBxbwMI184li494O6sNn66/NvdqN0RIrzAJmFGpFxpjFkQtQN/yetwWhlx7Ic17+6p7eKl8DNg==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "zod": "^4.4.3" - }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-web": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-web/-/dsh-tool-web-0.1.1-rc.2.tgz", - "integrity": "sha512-oV54OJFYYseJCT77F8lr9ZU/f/x8ZbPTmgQpYPC/O24Hw5uqUHEADkukC2ajrltZSTd0+OVqxHFwpWH4gjDoHQ==", + "node_modules/@deepseek-ai/dsh-util-workspace-path": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-util-workspace-path/-/dsh-util-workspace-path-0.2.1-rc.2.tgz", + "integrity": "sha512-VljZSLLiQYl+uMR08aIueksiN3MPDrDlz88lAScBLtl0giHUBpxwexS9vPOXwdCYqIXtRN2QLMKiKee08CQFJw==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1", - "@joplin/turndown-plugin-gfm": "^1.0.67", - "turndown": "^7.2.4" - }, + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-web": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-tool-workflow": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-workflow/-/dsh-tool-workflow-0.1.1-rc.2.tgz", - "integrity": "sha512-tOLaym8/eyHOATADljSbUYBizaYZTqMKp8p+r2SwiWqIjnRral67BwoO5boX+3t+m2Z45+mvrEnHCu1deYLuaA==", + "node_modules/@deepseek-ai/dsh-web": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web/-/dsh-web-0.2.1-rc.2.tgz", + "integrity": "sha512-aBSv2HoiLOysoeiXw6yQNKsaskAImyd8MPhdZMLTTLtWlRUmbSUC+3HwK31W5T3IRqEzQVRB+N1aIhEqHG8mIA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workflow": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-tools": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tools/-/dsh-tools-0.1.1-rc.2.tgz", - "integrity": "sha512-0GGL4D55MwYDepzZMOI3L0ycu5b2qr96GL0Y7snwhAnpK2Di61rbX3fJE+PB3ZrovGX0csIRdt9n3iJZDVtDrw==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "node_modules/@deepseek-ai/dsh-web-app": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-app/-/dsh-web-app-0.2.1-rc.2.tgz", + "integrity": "sha512-PCWhkSc/WJsGDnMwO1XHI1izzjyAR1nChnixQE9cmsllBwXcgauaD5NxBW5pNe8gqTn/aXZUXDm+Rng6WgXJ4Q==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-agent-instructions": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2", + "@deepseek-ai/dsh-agent-tool-presentation": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-account-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-job-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-remotes": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-settings-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-terminal-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-workspace-controller": "0.2.1-rc.2", + "@deepseek-ai/dsh-api-workspace-files": "0.2.1-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-file-upload": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-hmr": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-locale": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-modules": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-product-analytics": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-resources": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-shortcuts": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-approval": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-attachment": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-brand-official": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-chat": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-commands": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-cordis": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-deepseek-model-label-1017": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-deliverables": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-message-feedback": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-model-selection": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-open-in-app": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-permission-presets": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-plan": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-reference": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-schedule": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-secret-mask": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-agent-loop": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-general": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-models": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-session-log": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-shell": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-settings-web-search": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-shortcuts": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-browser": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-files": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-theme": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-tool": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-trajectory": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-user-questions": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-workflow-run": "0.2.1-rc.2", + "@deepseek-ai/dsh-client-ui-workspace": "0.2.1-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.1-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.1-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-rc.2", + "@deepseek-ai/dsh-cordis-client-runner": "0.2.1-rc.2", + "@deepseek-ai/dsh-cordis-host-runner": "0.2.1-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.1-rc.2", + "@deepseek-ai/dsh-file-reference-local": "0.2.1-rc.2", + "@deepseek-ai/dsh-harness-dev-context": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-directory-picker-auto": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-directory-picker-browse": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-directory-picker-native": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-frontend-static": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-open-in-app": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-plugin-inventory": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-product-telemetry-otel": "0.2.1-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-message-feedback": "0.2.1-rc.2", + "@deepseek-ai/dsh-office-to-pdf": "0.2.1-rc.2", + "@deepseek-ai/dsh-persona": "0.2.1-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.1-rc.2", + "@deepseek-ai/dsh-plugin-market": "0.2.1-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-log-export": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-reference": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-stats": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-turn-outline": "0.2.1-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.1-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-time-context": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-ask-user": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-cordis": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-present": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-schedule": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.1-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.1-rc.2", + "@deepseek-ai/dsh-web-frontend": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.1-rc.2", + "@deepseek-ai/dsh-workspace-changes": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5", + "commander": "^15.0.0", + "open": "^11.0.2" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-code-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/cordis-plugin-loader": "~1.0.6", + "@deepseek-ai/dsh-shell-env": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-typert-loader": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-loader/-/dsh-typert-loader-0.1.1-rc.2.tgz", - "integrity": "sha512-YTShO0kcBBwXDx8J1Xgn0z4l9nNBqBbpHh2wFAN+PXPORXn0p0F4RY5z2YUVLKLJaL8XRjNKdl43hHK/ttomqw==", + "node_modules/@deepseek-ai/dsh-web-deepseek-api": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-deepseek-api/-/dsh-web-deepseek-api-0.2.1-rc.2.tgz", + "integrity": "sha512-9yybN1YeHDgVRUjo3JfRrygPjh8CZC4K7jsqXM68jsEUVh4OTX9sX7/9vRVOVDNpXJFpUOUebOMPc1LR4VWX3Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-typert-registry": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-web": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-deepseek-account": { + "optional": true + } } }, - "node_modules/@deepseek-ai/dsh-typert-protocol": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-protocol/-/dsh-typert-protocol-0.1.1-rc.2.tgz", - "integrity": "sha512-lxBssDc5Pz1qBE5kuIyaArA7AvIPq9rpaVclylodiSzVJe95e2xruBg73tflyjtd8y00toet+DLgQ6tSSsq6Kw==", + "node_modules/@deepseek-ai/dsh-web-fetch-http": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-fetch-http/-/dsh-web-fetch-http-0.2.1-rc.2.tgz", + "integrity": "sha512-8tRSR+8maQqjauS1SrE3Oh5TBCCtzbtIuqN/Pj84AgpaKZ0bkPf912Dq8nkdK/mi6ueCwCU8SdxiTP4txWtKwQ==", "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.5", + "ipaddr.js": "^2.5.0", + "undici": "8.11.2" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-http-proxy": "0.2.1-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.1-rc.2", + "@deepseek-ai/dsh-web": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-typert-registry": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-registry/-/dsh-typert-registry-0.1.1-rc.2.tgz", - "integrity": "sha512-ATZu3i7UId+ktsWW3pUFm5Hi1fVsRXFmByATVPp2RlxH1zjxXnauVW6k70ZwU/4FOsphRzo65SXOlAXA+natYg==", + "node_modules/@deepseek-ai/dsh-web-frontend": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-frontend/-/dsh-web-frontend-0.2.1-rc.2.tgz", + "integrity": "sha512-Ouy34Yu1kIB+IDoAFyfqjbEpvAPdhjFFe/h06vsAdwqrQamYl96wrwCb6AsaOMES3lOJhxmBwJPS/KnE+CwuMg==", + "license": "MIT" + }, + "node_modules/@deepseek-ai/dsh-web-search-deepseek": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-search-deepseek/-/dsh-web-search-deepseek-0.2.1-rc.2.tgz", + "integrity": "sha512-1RkLY8uYawWOOrEWPCg7eemvA7T/bPXDJOdHsqhsDwejjZdv496G01hKf/W+T8twdUt8gnx5G19h06R499DoGA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2", - "zod": "^4.4.3" + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.1-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.1-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-web": "0.2.1-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-deepseek-account": { + "optional": true + } } }, - "node_modules/@deepseek-ai/dsh-user-approval": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-user-approval/-/dsh-user-approval-0.1.1-rc.2.tgz", - "integrity": "sha512-SdsO4Rs+NeJFoertkVilXBACREOLfkKPJJznYKqDhJxeRo38RJ56dtj0Xd0/6rERmsQiMck4Bwdrzg1ubUqPNA==", + "node_modules/@deepseek-ai/dsh-win32-process": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-win32-process/-/dsh-win32-process-0.2.1-rc.2.tgz", + "integrity": "sha512-Uc0xb/b1HdHFFyPHl0LdWWQvZXPioNjrz9eUSDhqBYNdxG9v2xd38xFp96qTJZnoVRQZR/MB5vfRzhf/IDiRFw==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/dsh-lazy-require": "0.2.1-rc.2", + "koffi": "3.1.1" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5" } }, - "node_modules/@deepseek-ai/dsh-user-questions": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-user-questions/-/dsh-user-questions-0.1.1-rc.2.tgz", - "integrity": "sha512-9lYoB7qCFE+Vvgwjny3MnRfS7QUefOspj4KpE3b30DAAJfxwrU4hRtLCHOKxyurF01qrkoEBBpXn4H5ilXYTKg==", + "node_modules/@deepseek-ai/dsh-workflow": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workflow/-/dsh-workflow-0.2.1-rc.2.tgz", + "integrity": "sha512-5wmZ3gDYvHK+kS0PeXg8/WcsLBNbiGBBJOTptlYUR8H+AYEaHCoRCdz1f6SG7oAgFGmc5EOUYgfAlMRl/0tnQA==", "license": "MIT", + "peer": true, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-web": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web/-/dsh-web-0.1.1-rc.2.tgz", - "integrity": "sha512-Rtikc8RUlfx6m9+hYvKB3JlAD34PrI2UFHEu1h8UMb7pM/ulIRpjBF7TPlg537WRK4ufCysqCJm0RheNMoYCcQ==", + "node_modules/@deepseek-ai/dsh-workflow-ptc": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workflow-ptc/-/dsh-workflow-ptc-0.2.1-rc.2.tgz", + "integrity": "sha512-JlD0bGtv/K0y1nFPcwc7XhJqlnf6AnKer/BdBc6ctFK2fwmwyWtieOyIPx6pi911oQKsOKAqIcVqZ0BnKwj3kg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2" - } - }, - "node_modules/@deepseek-ai/dsh-web-app": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-app/-/dsh-web-app-0.1.1-rc.2.tgz", - "integrity": "sha512-1zGHY7qwBVlVJrzIWu+86SuBZXaVUxe2JRfffsuRvKXq2QcR/K4CoJJfZ43cDoWKu9xPvvxz7w2ezV+EdXgg1A==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-agent-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2", - "@deepseek-ai/dsh-app-boot": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-hmr": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-modules": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-attachment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-cordis": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-goal": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-jobs": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-plan": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-skill": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cmdline": "^0.1.1-rc.2", - "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference-local": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-apiproxy": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-frontend-static": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.1-rc.2", - "@deepseek-ai/dsh-host-webserver": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-message-feedback": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-log-export": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-reference": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-stats": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage-domain": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage-json": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2", - "@deepseek-ai/dsh-web-frontend": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workspace": "^0.1.1-rc.2", - "@deepseek-ai/schemastery": "^3.18.1", - "commander": "^15.0.0", - "open": "^11.0.0" + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.1-rc.2", + "@deepseek-ai/schemastery": "~3.18.5" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-shell-env": "^0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.1-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.1-rc.2", + "@deepseek-ai/dsh-working-directory": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-web-frontend": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-frontend/-/dsh-web-frontend-0.1.1-rc.2.tgz", - "integrity": "sha512-1cjf39g6RW7cgtvwhIF6MSnp5sk3KYRkmRhZM4GETWLXCrTfMD0WCJr3yME1uvJsYPTk28XmKXwwMUPrO3kksQ==", - "license": "MIT" - }, - "node_modules/@deepseek-ai/dsh-web-search-deepseek": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-search-deepseek/-/dsh-web-search-deepseek-0.1.1-rc.2.tgz", - "integrity": "sha512-g8wl7k0Htd0MI5CCh0XHK768P5u05ge0JRThMSgNYQvuKJ+gY4uVwzPXJb7eZ7xNWgXt8ERLXIOMVRylaJX1XQ==", + "node_modules/@deepseek-ai/dsh-working-directory": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-working-directory/-/dsh-working-directory-0.2.1-rc.2.tgz", + "integrity": "sha512-zhPtvAaCxa9U0WUN9OEG37zVBq7GOXXXwnDx2Jds4DFksGY5Lmpl3ZK1QMGz+F/Aye4VHt9zoISI7m4wDA8DEg==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5", + "zod": "^4.4.3" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.1-rc.2", - "@deepseek-ai/dsh-web": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-llm": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-workflow": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workflow/-/dsh-workflow-0.1.1-rc.2.tgz", - "integrity": "sha512-YHUGOBfHGXVr9RRAdCvKZ/1SeeKx4jRumSBMNJo1ETbVqEK+ov2kV61pHFfLu1h+heCsEbOsEJeVXvgYC8EBhw==", + "node_modules/@deepseek-ai/dsh-workspace": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workspace/-/dsh-workspace-0.2.1-rc.2.tgz", + "integrity": "sha512-nZvYF9R0y1OI1taG2lPqXK2ylkNyPfwQ/XYfIOHGZCi79i38Ze7VOwAaTzZYfS39zSYdt33a7/az99WcXWCEJA==", "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-brand": "0.2.1-rc.2", + "zod": "4.4.3" + }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage": "0.2.1-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.1-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-workflow-worker-thread": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workflow-worker-thread/-/dsh-workflow-worker-thread-0.1.1-rc.2.tgz", - "integrity": "sha512-DdMO6gn56wakPTetkLKwuuj7cI3y3ji6c0oR3ksFQLhkYwaYV1hZSxVU6HEiW3hl2so8C163ms8QBgDyIWZsXg==", + "node_modules/@deepseek-ai/dsh-workspace-changes": { + "version": "0.2.1-rc.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workspace-changes/-/dsh-workspace-changes-0.2.1-rc.2.tgz", + "integrity": "sha512-hHH9seO1omlTWMXkx5Z5ZneLaTST3O6fXjyxpUSaBVRg8mE82G+gjjFoTljfV5buB20BNynUq2n0qdZVARKSfA==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "~3.18.5", + "diff": "^9.0.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "^0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.1-rc.2", - "@deepseek-ai/dsh-workflow": "^0.1.1-rc.2" + "@deepseek-ai/cordis": "~4.0.5", + "@deepseek-ai/dsh-agent": "0.2.1-rc.2", + "@deepseek-ai/dsh-fs": "0.2.1-rc.2", + "@deepseek-ai/dsh-session": "0.2.1-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.1-rc.2", + "@deepseek-ai/dsh-tools": "0.2.1-rc.2" } }, - "node_modules/@deepseek-ai/dsh-workspace": { - "version": "0.1.1-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workspace/-/dsh-workspace-0.1.1-rc.2.tgz", - "integrity": "sha512-jBUob4H5TZAiExq9YNVCglKAFmAKMtd1UbyqFfnZZ1Owm+3c3NbAXY947MHiD6NwCwFEW1y7FjrFj66UQvG90A==", + "node_modules/@deepseek-ai/dsh-workspace/node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@deepseek-ai/libreoffice-kit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/libreoffice-kit/-/libreoffice-kit-0.1.5.tgz", + "integrity": "sha512-H12xtUsAyl70zFeQ5pk5GGRc3N1+6zn+DVAcqwlguI6EvqopBGP3xkUmePU7g5f6ydYlDZLWedHT9lTSL7zLxA==", + "license": "MPL-2.0", "dependencies": { - "zod": "^4.4.3" + "fflate": "0.8.2", + "fontkit": "2.0.4", + "koffi": "3.1.1", + "saxes": "6.0.0" }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session": "^0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage": "^0.1.1-rc.2", - "@deepseek-ai/dsh-storage-domain": "^0.1.1-rc.2" + "bin": { + "dsoffice": "lib/cli.js" + }, + "engines": { + "node": ">=22.19.0" + }, + "optionalDependencies": { + "@deepseek-ai/libreoffice-kit-darwin-arm64": "0.1.5", + "@deepseek-ai/libreoffice-kit-darwin-x64": "0.1.5", + "@deepseek-ai/libreoffice-kit-wasm": "0.1.5", + "@deepseek-ai/libreoffice-kit-win32-arm64": "0.1.5", + "@deepseek-ai/libreoffice-kit-win32-x64": "0.1.5" + } + }, + "node_modules/@deepseek-ai/libreoffice-kit-darwin-arm64": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/libreoffice-kit-darwin-arm64/-/libreoffice-kit-darwin-arm64-0.1.5.tgz", + "integrity": "sha512-SjeXmyaTevEq2TxK7reb1rhCrQZ4QOXmXt/qEwfQD5Fx3odU0ILx2uiXN+nphSCQ95LFCzrElHGgv2c7a824yg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@deepseek-ai/libreoffice-kit-darwin-x64": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/libreoffice-kit-darwin-x64/-/libreoffice-kit-darwin-x64-0.1.5.tgz", + "integrity": "sha512-vuz2tTpH1Edk75+DISwg/TXdQ3BNSNSHoVnWVqxqbGMgrrK9trLOw2+0X7mjT1naGO00Zc1qkyQ4if3kx5XjqQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@deepseek-ai/libreoffice-kit-wasm": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/libreoffice-kit-wasm/-/libreoffice-kit-wasm-0.1.5.tgz", + "integrity": "sha512-V+pu5xJsKhVD4AU1xbFlMWY91svK9ZIC2JsNOph9kWp/arF/KQcuytt76bcbozJqPbE8o0n04lyh0m3QW5RYSA==", + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@deepseek-ai/libreoffice-kit-win32-arm64": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/libreoffice-kit-win32-arm64/-/libreoffice-kit-win32-arm64-0.1.5.tgz", + "integrity": "sha512-Av3aFfNLaVxfffu0JXP5mqfmsCU3gQtlUH9UD+zdXl8ON06ukVAmu7LqNyuKAz/68WoOMTQ+YBlVQukgDRKd/A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@deepseek-ai/libreoffice-kit-win32-x64": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/libreoffice-kit-win32-x64/-/libreoffice-kit-win32-x64-0.1.5.tgz", + "integrity": "sha512-uKuDGZdofxuW4iRmUh8b3+XWU28JeOCYMTAONzo7tEHIq00DV2cARcgUYiTP7gUH49tH4A/RyPMOVEBzK7qjjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=22.19.0" } }, - "node_modules/@deepseek-ai/node-addon-landlock-run": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/node-addon-landlock-run/-/node-addon-landlock-run-0.1.1.tgz", - "integrity": "sha512-aHGhlQJEutfobKM/4K59SERbT7RmQdD2oMKzD8Bne/Ps7TeT8AweCN+dpdfuxQhMNbFcJMymrgPnID0WYQ30Tw==", + "node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, + "node_modules/@deepseek-ai/node-addon-system": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/node-addon-system/-/node-addon-system-0.1.2.tgz", + "integrity": "sha512-EFn8K+mXIXiw6s3rxX+cgp2hZTEAQdVIsURhrXnBxycSXvtQ1EQpsSVzoNKtKAQI0I0VqkEcVEjHzS/PeaGsvw==", "license": "BSD-3-Clause", "engines": { "node": ">=20" }, "optionalDependencies": { - "@deepseek-ai/node-addon-landlock-run-linux-arm64": "0.1.1", - "@deepseek-ai/node-addon-landlock-run-linux-x64": "0.1.1" + "@deepseek-ai/node-addon-system-darwin-arm64": "0.1.2", + "@deepseek-ai/node-addon-system-darwin-x64": "0.1.2", + "@deepseek-ai/node-addon-system-linux-arm64": "0.1.2", + "@deepseek-ai/node-addon-system-linux-x64": "0.1.2" + } + }, + "node_modules/@deepseek-ai/node-addon-system-darwin-arm64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/node-addon-system-darwin-arm64/-/node-addon-system-darwin-arm64-0.1.2.tgz", + "integrity": "sha512-IR0cx8um19mLCZaJ+H5PLblKr6Eg3PWvVo8eTQBr/SwH2nh5tM9CD9/5fHweNS9Pjt15UdFlGqnvLSd/w+O6Rw==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20" + } + }, + "node_modules/@deepseek-ai/node-addon-system-darwin-x64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/node-addon-system-darwin-x64/-/node-addon-system-darwin-x64-0.1.2.tgz", + "integrity": "sha512-XDbmquNapk9aT28y4EKn9lbONVr9YNs1NM/GKH1Gi5gUhjOT9wgRaTv72FJdNaVIInbPAYbPoyn7/y+MzQMNNg==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20" } }, - "node_modules/@deepseek-ai/node-addon-landlock-run-linux-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/node-addon-landlock-run-linux-arm64/-/node-addon-landlock-run-linux-arm64-0.1.1.tgz", - "integrity": "sha512-lYY2RbcPW4rGRM5hVJbrXlvLqyBxeJBjBqvt+QTHTU+GtfUVVjTODKa4e3CRwMQoCEpOjoARdQBHbN7HvE72WQ==", + "node_modules/@deepseek-ai/node-addon-system-linux-arm64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/node-addon-system-linux-arm64/-/node-addon-system-linux-arm64-0.1.2.tgz", + "integrity": "sha512-Z/DQtqgEYzjBzb2ocHGjMzx51W7xDILkJKKj89nyErr8gZMNiLs+JNL1uKzJqc3VLZB+vYCPaHGyQ3oX6EzEmA==", "cpu": [ "arm64" ], @@ -4069,10 +5985,10 @@ "node": ">=20" } }, - "node_modules/@deepseek-ai/node-addon-landlock-run-linux-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/node-addon-landlock-run-linux-x64/-/node-addon-landlock-run-linux-x64-0.1.1.tgz", - "integrity": "sha512-OHAzPW2Coe/iYobAJAAA8CeVrBoKV4BnNHsgwvXwOfishxkUVSWSvdyxrZPiwYRXutpIGVrSo9zV3WOQy2euBA==", + "node_modules/@deepseek-ai/node-addon-system-linux-x64": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@deepseek-ai/node-addon-system-linux-x64/-/node-addon-system-linux-x64-0.1.2.tgz", + "integrity": "sha512-S2aPVHvYCpNCppCFyNlooMYuTB7ucK5lvD9oXQQ42v5Z2s5AoaiCdjz9r2l+ED2rI5oS1x0cUZmKjJH2dxV0pg==", "cpu": [ "x64" ], @@ -4086,32 +6002,31 @@ } }, "node_modules/@deepseek-ai/schemastery": { - "version": "3.18.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/schemastery/-/schemastery-3.18.1.tgz", - "integrity": "sha512-Qn0FCSwCQnpnj6SB31I6i2sIKgKWnkbJM8O0EU91Gv2UsYVvtZTl6IA0sCwk2e2MZf5S8w5hpq9QkeVvK9qwxg==", + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@deepseek-ai/schemastery/-/schemastery-3.18.5.tgz", + "integrity": "sha512-Mnobvqf9rHsZYv4g5edj5ddxS1oF1kIdSlz0DunUgnY3LWG5F26MqvH3YOOsSaodCgyzJ16OMN9O99/s5Crtdw==", "license": "MIT", "dependencies": { - "@deepseek-ai/cosmokit": "^1.8.2", + "@deepseek-ai/cosmokit": "~1.8.6", "@standard-schema/spec": "^1.1.0" } }, "node_modules/@earendil-works/pi-ai": { - "version": "0.82.1", - "resolved": "https://registry.npmmirror.com/@earendil-works/pi-ai/-/pi-ai-0.82.1.tgz", - "integrity": "sha512-3WFYRhEp3lQB3444EhPMBcM7zSaEUE3eJgHOR7s4081NLqbw/FsWilIKWXSua0Gv3sRr7m9xMidR3pPDE7jI/A==", - "license": "MIT", - "dependencies": { - "@anthropic-ai/sdk": "0.91.1", - "@aws-sdk/client-bedrock-runtime": "3.1048.0", - "@google/genai": "1.52.0", - "@mistralai/mistralai": "2.2.6", - "@opentelemetry/api": "1.9.0", - "@smithy/node-http-handler": "4.7.3", - "http-proxy-agent": "7.0.2", - "https-proxy-agent": "7.0.6", - "openai": "6.26.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.3.0.tgz", + "integrity": "sha512-KaBI8x7q7sPoFUXICNGD9efHzDG+oRNwVvkA9jdIsSQWH1RjFssOlEGsbLtewUPPgCrvmz0l2KTgSLXTyj3acw==", + "license": "MIT", + "dependencies": { + "@anthropic-ai/sdk": "0.129.0", + "@aws-sdk/client-bedrock-runtime": "3.1127.0", + "@earendil-works/pi-telemetry": "1.3.0", + "@google/genai": "2.21.0", + "@smithy/node-http-handler": "4.12.1", + "http-proxy-agent": "9.1.0", + "https-proxy-agent": "9.1.0", + "openai": "7.19.0", "partial-json": "0.1.7", - "typebox": "1.1.38" + "typebox": "1.3.27" }, "bin": { "pi-ai": "dist/cli.js" @@ -4120,18 +6035,18 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/pi-ai/node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", + "node_modules/@earendil-works/pi-telemetry": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.3.0.tgz", + "integrity": "sha512-ERGZr+aXjNJzoUbB7ZzHVH3g5otzMHjHLs2Fyizm12By5X+gBEhod9cJXFOk13S7M8a29Am+Mq21zm73mRJFLg==", + "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=22.19.0" } }, "node_modules/@emnapi/runtime": { "version": "1.11.3", - "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.11.3.tgz", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "license": "MIT", "optional": true, @@ -4139,10 +6054,19 @@ "tslib": "^2.4.0" } }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@google/genai": { - "version": "1.52.0", - "resolved": "https://registry.npmmirror.com/@google/genai/-/genai-1.52.0.tgz", - "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@google/genai/-/genai-2.21.0.tgz", + "integrity": "sha512-+PDtco2/Z0ONdzCGekCoCT+O1VJS9xJQNN4XzQpXG/t3El/SWWMkCWlFRO1KmivOHPa4Q0VjUYu1HBKCZ/v33Q==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -4163,21 +6087,9 @@ } } }, - "node_modules/@hono/node-server": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/@hono/node-server/-/node-server-2.1.5.tgz", - "integrity": "sha512-MgP/I06GdvsilDspMk/qmRzpk8LOUStP6jFAbSRi40W09DhoyUn+Mj7eyKICPqeYKybOjVFLVIAQzvu1bfIa7Q==", - "license": "MIT", - "engines": { - "node": ">=20" - }, - "peerDependencies": { - "hono": "^4 || ^5.0.0-0" - } - }, "node_modules/@img/colour": { "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/@img/colour/-/colour-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", "license": "MIT", "engines": { @@ -4186,7 +6098,7 @@ }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", "cpu": [ "arm64" @@ -4208,7 +6120,7 @@ }, "node_modules/@img/sharp-darwin-x64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", "cpu": [ "x64" @@ -4230,7 +6142,7 @@ }, "node_modules/@img/sharp-freebsd-wasm32": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", "license": "Apache-2.0", "optional": true, @@ -4249,7 +6161,7 @@ }, "node_modules/@img/sharp-libvips-darwin-arm64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", "cpu": [ "arm64" @@ -4265,7 +6177,7 @@ }, "node_modules/@img/sharp-libvips-darwin-x64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", "cpu": [ "x64" @@ -4281,7 +6193,7 @@ }, "node_modules/@img/sharp-libvips-linux-arm": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", "cpu": [ "arm" @@ -4300,7 +6212,7 @@ }, "node_modules/@img/sharp-libvips-linux-arm64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", "cpu": [ "arm64" @@ -4319,7 +6231,7 @@ }, "node_modules/@img/sharp-libvips-linux-ppc64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", "cpu": [ "ppc64" @@ -4338,7 +6250,7 @@ }, "node_modules/@img/sharp-libvips-linux-riscv64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", "cpu": [ "riscv64" @@ -4357,7 +6269,7 @@ }, "node_modules/@img/sharp-libvips-linux-s390x": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", "cpu": [ "s390x" @@ -4376,7 +6288,7 @@ }, "node_modules/@img/sharp-libvips-linux-x64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", "cpu": [ "x64" @@ -4395,7 +6307,7 @@ }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", "cpu": [ "arm64" @@ -4414,7 +6326,7 @@ }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { "version": "1.3.4", - "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", "cpu": [ "x64" @@ -4433,7 +6345,7 @@ }, "node_modules/@img/sharp-linux-arm": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", "cpu": [ "arm" @@ -4458,7 +6370,7 @@ }, "node_modules/@img/sharp-linux-arm64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", "cpu": [ "arm64" @@ -4483,7 +6395,7 @@ }, "node_modules/@img/sharp-linux-ppc64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", "cpu": [ "ppc64" @@ -4508,7 +6420,7 @@ }, "node_modules/@img/sharp-linux-riscv64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", "cpu": [ "riscv64" @@ -4533,7 +6445,7 @@ }, "node_modules/@img/sharp-linux-s390x": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", "cpu": [ "s390x" @@ -4558,7 +6470,7 @@ }, "node_modules/@img/sharp-linux-x64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", "cpu": [ "x64" @@ -4583,7 +6495,7 @@ }, "node_modules/@img/sharp-linuxmusl-arm64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", "cpu": [ "arm64" @@ -4608,7 +6520,7 @@ }, "node_modules/@img/sharp-linuxmusl-x64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", "cpu": [ "x64" @@ -4633,7 +6545,7 @@ }, "node_modules/@img/sharp-wasm32": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, @@ -4649,7 +6561,7 @@ }, "node_modules/@img/sharp-webcontainers-wasm32": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", "cpu": [ "wasm32" @@ -4668,7 +6580,7 @@ }, "node_modules/@img/sharp-win32-arm64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", "cpu": [ "arm64" @@ -4687,7 +6599,7 @@ }, "node_modules/@img/sharp-win32-ia32": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", "cpu": [ "ia32" @@ -4706,7 +6618,7 @@ }, "node_modules/@img/sharp-win32-x64": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", "cpu": [ "x64" @@ -4725,46 +6637,32 @@ }, "node_modules/@joplin/turndown-plugin-gfm": { "version": "1.0.68", - "resolved": "https://registry.npmmirror.com/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.68.tgz", + "resolved": "https://registry.npmjs.org/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.68.tgz", "integrity": "sha512-m8DfAQNC/V7g0j5H6Jv60WhekBBjodD+zTPGrU+g2m+ux/z8ZX07KQIl6kaAmbKwfvsQhC04op52g63I78sVgg==", "license": "MIT" }, - "node_modules/@koromix/koffi-android-arm64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-android-arm64/-/koffi-android-arm64-3.3.3.tgz", - "integrity": "sha512-c8iDq/mPXkgQmrmZ6SpqWIVF3ZnJEpjVQswzKzbrCSdr68pmSY/cNj1t4qvv32T8nNjW71/hB+E8Rq1+vVpmQg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "funding": { - "url": "https://liberapay.com/Koromix" + "node_modules/@js-temporal/polyfill": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@js-temporal/polyfill/-/polyfill-0.5.1.tgz", + "integrity": "sha512-hloP58zRVCRSpgDxmqCWJNlizAlUgJFqG2ypq79DCvyv9tHjRYMDOcPFjzfl/A1/YxDvRCZz8wvZvmapQnKwFQ==", + "license": "ISC", + "dependencies": { + "jsbi": "^4.3.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@koromix/koffi-android-x64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-android-x64/-/koffi-android-x64-3.3.3.tgz", - "integrity": "sha512-yAFu4oX6rpBCqr4HiGo3FpywmRN11LOSde4+GJZvfkFymqV3wZtx6TgVe8rZ4ogJZz9B8o1tDeKsZ6pqeoH40g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "funding": { - "url": "https://liberapay.com/Koromix" - } + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "license": "MIT" }, "node_modules/@koromix/koffi-darwin-arm64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-darwin-arm64/-/koffi-darwin-arm64-3.3.3.tgz", - "integrity": "sha512-aFYI3YMdQWOAmHlVA+GfBlJZTpvfbUv/NoeBBkqblWN7BxuY02bkWMyoksUEl+mnx7ScoMonnjzXKJkNQXmR3w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-darwin-arm64/-/koffi-darwin-arm64-3.1.1.tgz", + "integrity": "sha512-+Dl0zQDh1Wb55AWOn9hp7K30qgkODvrvN+ZNkFOh81Q0oFX/rpJQtocgjAuYk2zFAcajSeVDumkcHMPwnKSXzA==", "cpu": [ "arm64" ], @@ -4778,9 +6676,9 @@ } }, "node_modules/@koromix/koffi-darwin-x64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-darwin-x64/-/koffi-darwin-x64-3.3.3.tgz", - "integrity": "sha512-6Q8/DDhVADPMm3lFnZFJRETJtf485jZKzn1KogXeA9Gfztv/XMFiCOK4aEouFc256h9uWzC69mGimtcVcwK+Ww==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-darwin-x64/-/koffi-darwin-x64-3.1.1.tgz", + "integrity": "sha512-cDFAKn1qdZBFLrp7dAc9QUDw3l4xAhTJbOdPWWb0LxssVicUdHcRCLZGrDsmPW2tpH6LGNNeLgqRpAoD2Mo8iA==", "cpu": [ "x64" ], @@ -4794,27 +6692,11 @@ } }, "node_modules/@koromix/koffi-freebsd-arm64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-freebsd-arm64/-/koffi-freebsd-arm64-3.3.3.tgz", - "integrity": "sha512-IynEDMMU9pp7EVVqQwXVU9x0JH7Opj8KB0wbcKgYNEhRM9eGzJ4ai7iwG8y8tdD/Y8niSVrVTj5WLNCCvUWXIw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "funding": { - "url": "https://liberapay.com/Koromix" - } - }, - "node_modules/@koromix/koffi-freebsd-ia32": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-freebsd-ia32/-/koffi-freebsd-ia32-3.3.3.tgz", - "integrity": "sha512-5b4W9jX+wmfWn9vG7DvKIrNhhRpPDAx7YQV5i9epUR0Ogxz4s4a3APz/beLCvgHt4WhaSRrazxGYQz1oFOlfow==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-freebsd-arm64/-/koffi-freebsd-arm64-3.1.1.tgz", + "integrity": "sha512-zaP7FJISI/scQW9Wa5QicY3a09WmtKBWSbmC+5nfCqPzwWe7Hx2so74Er7mPsDfCiMMR0Ya+evKbJQDkfyXicg==", "cpu": [ - "ia32" + "arm64" ], "license": "MIT", "optional": true, @@ -4825,12 +6707,12 @@ "url": "https://liberapay.com/Koromix" } }, - "node_modules/@koromix/koffi-freebsd-x64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-freebsd-x64/-/koffi-freebsd-x64-3.3.3.tgz", - "integrity": "sha512-+NmMrp3ji1NN4PTaLaXDCKMaJ5Fl+0+nrClmtsu/7wi+fjCrCSGMrJZUmTIJPm1nd8Z5fMRjWesiVvQiy/ETDg==", + "node_modules/@koromix/koffi-freebsd-ia32": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-freebsd-ia32/-/koffi-freebsd-ia32-3.1.1.tgz", + "integrity": "sha512-7GejVb688TLM8rbjfc0oezJrATxZc0dn801xWEDJekN2DgmRXu7HquGqWQ6z3NeSq7ZxEggz4T3xtlbCysQapA==", "cpu": [ - "x64" + "ia32" ], "license": "MIT", "optional": true, @@ -4841,26 +6723,26 @@ "url": "https://liberapay.com/Koromix" } }, - "node_modules/@koromix/koffi-linux-arm": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-arm/-/koffi-linux-arm-3.3.3.tgz", - "integrity": "sha512-K+NFO4/SiF4ANCS1ykem36wbEjfBJKsaakLKZ+6LbaLqyLjHHGky4fEIgipac/+XJtD4ZXjhexPIVjwzkO+rMQ==", + "node_modules/@koromix/koffi-freebsd-x64": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-freebsd-x64/-/koffi-freebsd-x64-3.1.1.tgz", + "integrity": "sha512-XLiCFP9OFCyOoGTjAimtDKLhzhfo34WcP1ShVWxRzNCWDGjfz8BYjwd69cp/cDSUXZbxamqs4+/6vmkePq9wxA==", "cpu": [ - "arm" + "x64" ], "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ], "funding": { "url": "https://liberapay.com/Koromix" } }, "node_modules/@koromix/koffi-linux-arm64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-arm64/-/koffi-linux-arm64-3.3.3.tgz", - "integrity": "sha512-y7UHjwOKbj2IjIpWtHmI8LEKXchidt47k605DCv5+YQMIDTbzhz/i3zTI1kRp6EYBLTBwRkR1X1PGt3uUi+rKQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-arm64/-/koffi-linux-arm64-3.1.1.tgz", + "integrity": "sha512-HA9xINK7G4dRAkpfnBWD9VfuyIBgW1SuK+KPHjksUwRMOnhgqP8J/JqgrAzdzcDiefGBkqEacIP776OUwz7knQ==", "cpu": [ "arm64" ], @@ -4874,9 +6756,9 @@ } }, "node_modules/@koromix/koffi-linux-ia32": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-ia32/-/koffi-linux-ia32-3.3.3.tgz", - "integrity": "sha512-dbcpe7IrWr18AAbIKa/RvJ8pM1lEpSELWYW6wsEBIYw/RTLfXqWJ6d9Ya0NWJgHTW+N7783KVQaV5c1Sr3ONDQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-ia32/-/koffi-linux-ia32-3.1.1.tgz", + "integrity": "sha512-jG7IFytmP8K5Qtbx0ro0ZeuX3JjSsLxmYhq+nmXDdrtOAlxIsWGynuiDLS6Jk3vOchVii2m6Y2f/L3GLG2fG5A==", "cpu": [ "ia32" ], @@ -4890,9 +6772,9 @@ } }, "node_modules/@koromix/koffi-linux-loong64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-loong64/-/koffi-linux-loong64-3.3.3.tgz", - "integrity": "sha512-kbJFmWSoDHGZgxgDhInuvDi8MzrHafBfQ7iWN5P+nHv297beQXrHecFfCNBApnG9d2wrhEoY+EH/TdITuvaSwQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-loong64/-/koffi-linux-loong64-3.1.1.tgz", + "integrity": "sha512-CIsT1cNnih8FuU52Me/IVlJBpH28SQfoDeYPctJswgJzaARktusF7m4MUbtR1PBDjuquCVM4/vFyNdOzfPonvA==", "cpu": [ "loong64" ], @@ -4905,26 +6787,10 @@ "url": "https://liberapay.com/Koromix" } }, - "node_modules/@koromix/koffi-linux-ppc64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-ppc64/-/koffi-linux-ppc64-3.3.3.tgz", - "integrity": "sha512-YwGxjudYHsiDZ6qH4WmEawHXmTaZzjiZ4xdjcbzsVHqNvgZ3Nz7WG03PybecJ+BVH2vqBOntGZ2VsG/sL0WY1g==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://liberapay.com/Koromix" - } - }, "node_modules/@koromix/koffi-linux-riscv64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-riscv64/-/koffi-linux-riscv64-3.3.3.tgz", - "integrity": "sha512-k/txpUsOO/L4TexahQHxqdFRmBEGE+g++np9M5eNcsHWNXmazeWBrrfB9sjl6cZAP69KZFO0toP+ZMfDUDHmnQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-riscv64/-/koffi-linux-riscv64-3.1.1.tgz", + "integrity": "sha512-9D6RmqeKsSvs3U6jILJU9PcAjMwKKyn7yLxNBb5k6z9PCoUoGJ3/BrhXAX0qjrLLwEiIpP/hS/40RuXvH8Lc3Q==", "cpu": [ "riscv64" ], @@ -4938,9 +6804,9 @@ } }, "node_modules/@koromix/koffi-linux-x64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-linux-x64/-/koffi-linux-x64-3.3.3.tgz", - "integrity": "sha512-AI4kcNNWeGmzQzsNb0S+ZL/ht4HMtDcQl5nYFkkuVUO2g1/2KdvNekkwNWhpp805mDbLSDoRZtlioHyH/v8poQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-x64/-/koffi-linux-x64-3.1.1.tgz", + "integrity": "sha512-pyTcX5fePeYbt7TZAwRby69wdlRx3PT+g15ra5IYdat/Pgh3qAKEYeZ+uu7WpPGOy43p/oSRqqZoa2kORzozlA==", "cpu": [ "x64" ], @@ -4953,26 +6819,10 @@ "url": "https://liberapay.com/Koromix" } }, - "node_modules/@koromix/koffi-openbsd-arm64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-openbsd-arm64/-/koffi-openbsd-arm64-3.3.3.tgz", - "integrity": "sha512-NEbQMrixbAWSmWCh4XyHWuhgEqgO4tegWyHoJej7Q3PmyIlgxKHTcRZsjAJ9C3sfgBDNIqPWTjMy3KO2mqEp1g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "funding": { - "url": "https://liberapay.com/Koromix" - } - }, "node_modules/@koromix/koffi-openbsd-ia32": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-openbsd-ia32/-/koffi-openbsd-ia32-3.3.3.tgz", - "integrity": "sha512-zGFX0KwZGmrV7AZY0+oozBpMuQZT7yQEY3NCDSb0rEqKyOrYLBNiXiXA5T8NSY3ipaW0b71L5Cu0KLKabdLY0A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-openbsd-ia32/-/koffi-openbsd-ia32-3.1.1.tgz", + "integrity": "sha512-iPnPzvG2HOfdzaiG1drdkt86sAqmTPDv9mAf+5gL7mRzkeeQC88EVGboRy7eXwdXn7R+v0ntA3iQxdHrBn6yXw==", "cpu": [ "ia32" ], @@ -4986,9 +6836,9 @@ } }, "node_modules/@koromix/koffi-openbsd-x64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-openbsd-x64/-/koffi-openbsd-x64-3.3.3.tgz", - "integrity": "sha512-c1HMWkZPAZKQesKj2HqA6Zk1YEcv7Doc6JU9YJepXG8KpK4XZmI0L5vESSfySmidmasm05QDyLAcwDnNSvtfRA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-openbsd-x64/-/koffi-openbsd-x64-3.1.1.tgz", + "integrity": "sha512-/Xqc3R0SVoMCYjMPZnJ9bULtRo364+dKmnQhfDrI83tSpxUHRw7HRNf12vBeL+hPgKxSBjtMpWfQ/ZIyVyLFag==", "cpu": [ "x64" ], @@ -5002,9 +6852,9 @@ } }, "node_modules/@koromix/koffi-win32-arm64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-win32-arm64/-/koffi-win32-arm64-3.3.3.tgz", - "integrity": "sha512-eL7gW4D22OBb3fi04s5ElzzNk+gkGEahaTNMB29UDLDeORe+0qIkhccBPovXW3/IRpdt8W7o8X2myUDXlTSYDQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-win32-arm64/-/koffi-win32-arm64-3.1.1.tgz", + "integrity": "sha512-JhqHauEwQvdcWUERxrV5HH/DT9W7hY1A1eU6/o8tB+yck+D3kt5elpRDBt9KjpW6h+vHPy3V0sjDvO0CXyabTA==", "cpu": [ "arm64" ], @@ -5018,9 +6868,9 @@ } }, "node_modules/@koromix/koffi-win32-ia32": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-win32-ia32/-/koffi-win32-ia32-3.3.3.tgz", - "integrity": "sha512-3sw9vvQqro4yKsOWfKebzfTcdPKRwMrodGXWbfwkTsL61EQKdwsMNKA/0dDe0/ubAAZ0yPgstX8/gs94Svzfgw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-win32-ia32/-/koffi-win32-ia32-3.1.1.tgz", + "integrity": "sha512-ZRuyYmlGS/rCc966qqs0qREXDW4FRdul7rDF1VgSWHbVmdc196PUgUT+blq/GjZgTwqzeEXtMRgM+cU8krHjvA==", "cpu": [ "ia32" ], @@ -5034,9 +6884,9 @@ } }, "node_modules/@koromix/koffi-win32-x64": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/@koromix/koffi-win32-x64/-/koffi-win32-x64-3.3.3.tgz", - "integrity": "sha512-tLTF17wl4CCwOlo1Tt0NbduwUduDvM6c8JSyearcLu6hpNHQo44RF3rKN2i7UkxwCqXyiudZK0lS421CC/TPZA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@koromix/koffi-win32-x64/-/koffi-win32-x64-3.1.1.tgz", + "integrity": "sha512-KqHPmvj6QILhNyI/To8QSihHsijeVGIYYPBOUnXEpcnH2LuLbargY4Hd6dDeTN3Z90uUUxN+1FWz1UnhVzFOiA==", "cpu": [ "x64" ], @@ -5049,75 +6899,45 @@ "url": "https://liberapay.com/Koromix" } }, - "node_modules/@mistralai/mistralai": { - "version": "2.2.6", - "resolved": "https://registry.npmmirror.com/@mistralai/mistralai/-/mistralai-2.2.6.tgz", - "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.40.0", - "ws": "^8.18.0", - "zod": "^3.25.0 || ^4.0.0", - "zod-to-json-schema": "^3.25.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - } - } - }, "node_modules/@mixmark-io/domino": { "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/@mixmark-io/domino/-/domino-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", "license": "BSD-2-Clause" }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.32.1", - "resolved": "https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.32.1.tgz", - "integrity": "sha512-2DdE+SJDtzLEEWzY1ZjY7Q+VcPhcV1KisD3zI4u0XZyktsjHum1mwbMI+JaulUBi2OZk+KJAi2uPXzxichPkdw==", + "node_modules/@modelcontextprotocol/client": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/client/-/client-2.2.0.tgz", + "integrity": "sha512-LxCou/CSYQ6dwEnjhLZY0KnEuc8V4UJ3IEQCl/uR2yHobSQIEdJKUlKLRYRF5i5FqRGHy1eK7une3aAWDHLtig==", "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.9 || ^2.0.5", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", + "@modelcontextprotocol/core": "2.2.0", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", - "express": "^5.2.1", - "express-rate-limit": "^8.2.1", - "hono": "^4.11.4", "jose": "^6.1.3", - "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.1" + "zod": "^4.2.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@cfworker/json-schema": "^4.1.1", - "zod": "^3.25 || ^4.0" + "node": ">=20" + } + }, + "node_modules/@modelcontextprotocol/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/core/-/core-2.2.0.tgz", + "integrity": "sha512-iLhmprRmWI8EcosOA3wVvww22z02NkgqhV4fBH6f/odQBsi7xnJc0HGmi21yWO+/iKw2yzqVE127Zhna5/+JXw==", + "license": "MIT", + "dependencies": { + "zod": "^4.2.0" }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - }, - "zod": { - "optional": false - } + "engines": { + "node": ">=20" } }, "node_modules/@opentelemetry/api": { "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.9.1.tgz", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", "license": "Apache-2.0", "engines": { @@ -5125,9 +6945,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.220.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz", - "integrity": "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==", + "version": "0.222.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.222.0.tgz", + "integrity": "sha512-9mb1If+IF6u0ZVXkHQ6ogEae5HwA6ajIVUgpSDQyRASxft6BSXHvBvPooRle3yFN/fKnCdSOnuu0OC3PLcF6+g==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0" @@ -5137,9 +6957,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/core/-/core-2.9.0.tgz", - "integrity": "sha512-m2nckMT80NnmjTYSPjJQObBJ+8dgkoajEOUbznL8AHZ3T3yHRk2P7gI1PhEBc1+lOnrYE9UWrWHqJDsmqjmNbw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.11.0.tgz", + "integrity": "sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" @@ -5151,33 +6971,14 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.220.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.220.0.tgz", - "integrity": "sha512-8186thl+pTw64iz/qEEen5oJZoZ/gO73XruChdaGlYdWOdBIQ42r+vHLf6a7vIDqTD4b8ZOoMlyxptanECaI9A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.220.0", - "@opentelemetry/core": "2.9.0", - "@opentelemetry/otlp-exporter-base": "0.220.0", - "@opentelemetry/otlp-transformer": "0.220.0", - "@opentelemetry/sdk-logs": "0.220.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.220.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.220.0.tgz", - "integrity": "sha512-CXYo8UD5Mn9YbgebO2EL4wejtA+gxLmLiu6HCk2KH2BR7XhFN6/6p1UlCb23DYCjeYkndevLHuejCCN1yx4+OQ==", + "version": "0.222.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.222.0.tgz", + "integrity": "sha512-YbywG3veEm2Fb6TbdxRkuquWob6eVWXuA8/Ba1tXz9jHfUqpdE3keilOHEtPboC4CvS1bjeeVfNkWGOOrLj+lw==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.9.0", - "@opentelemetry/otlp-transformer": "0.220.0" + "@opentelemetry/core": "2.11.0", + "@opentelemetry/otlp-transformer": "0.222.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -5187,17 +6988,17 @@ } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.220.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.220.0.tgz", - "integrity": "sha512-lXGrv7KXZ0gNH9SVNUaa6vv6phVYGvJxfXAlMbzbakiXru75f5MZl8Z7oqiMMQD77riVHJCFlQvbZs/VVN2/4A==", + "version": "0.222.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.222.0.tgz", + "integrity": "sha512-/F3BZ89+CJQnZkMh2tCrtcdB+XT2Dxhj4FFE+WPQ//413hmFL0/RfEX6vgOIWGhiSzrkHWTK3+6SiT7K5/g/jQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.220.0", - "@opentelemetry/core": "2.9.0", - "@opentelemetry/resources": "2.9.0", - "@opentelemetry/sdk-logs": "0.220.0", - "@opentelemetry/sdk-metrics": "2.9.0", - "@opentelemetry/sdk-trace": "2.9.0" + "@opentelemetry/api-logs": "0.222.0", + "@opentelemetry/core": "2.11.0", + "@opentelemetry/resources": "2.11.0", + "@opentelemetry/sdk-logs": "0.222.0", + "@opentelemetry/sdk-metrics": "2.11.0", + "@opentelemetry/sdk-trace": "2.11.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -5206,29 +7007,13 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/resources/-/resources-2.9.0.tgz", - "integrity": "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.9.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, "node_modules/@opentelemetry/resources": { - "version": "2.12.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/resources/-/resources-2.12.0.tgz", - "integrity": "sha512-+rSRoOdln6NhXTVcBdHSlZxJDNzwxadeweK2ltZO3tVtfp6aklABc06xclDk6ovRR+EiGgIcSbh/6NgjFhnb3A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.11.0.tgz", + "integrity": "sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.12.0", + "@opentelemetry/core": "2.11.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -5238,30 +7023,15 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.12.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/core/-/core-2.12.0.tgz", - "integrity": "sha512-1HsSAuvT4/my0QrXWsyXFdWjKaPeCHsismKZgEEIb8NK13LP6DrMRlsUbvD/0F9mDWK3xDom9AMv3IscxgOnOQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.220.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/sdk-logs/-/sdk-logs-0.220.0.tgz", - "integrity": "sha512-WywcTkQtv2iNmt+6y5Kcd4rzvx9bLVsBa2Nwcmg01IUaBTkTow3W4d9KE5vNBpEDtb9tp21WcRBY/lANRrApYA==", + "version": "0.222.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.222.0.tgz", + "integrity": "sha512-+19YHODIjaUCArxleaJtuufFZVpz/xvvK+VllQqE+W8hHolxdoRwHfK/s667zezwh1hkx6FFF+oYzetYgqK+Bg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.220.0", - "@opentelemetry/core": "2.9.0", - "@opentelemetry/resources": "2.9.0", + "@opentelemetry/api-logs": "0.222.0", + "@opentelemetry/core": "2.11.0", + "@opentelemetry/resources": "2.11.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -5271,30 +7041,14 @@ "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/resources/-/resources-2.9.0.tgz", - "integrity": "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.9.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/sdk-metrics/-/sdk-metrics-2.9.0.tgz", - "integrity": "sha512-Xx8RGS4H5XEBl01WuCreMIpiah9cCXMbSkeuIePPdD2cUpq/vUzYmj8E/MK1OsbOc93FuAD4jfn2WOacKwLn7Q==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.11.0.tgz", + "integrity": "sha512-7GXXcObyHyDUUSG+L+kJoquty01bzm7ivE7+SSgXXJcHuPzGviptxwARmI2c+bnnxjexGQbJnyNlN8HxBP/Y7A==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.9.0", - "@opentelemetry/resources": "2.9.0" + "@opentelemetry/core": "2.11.0", + "@opentelemetry/resources": "2.11.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -5303,46 +7057,14 @@ "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/resources/-/resources-2.9.0.tgz", - "integrity": "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.9.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, "node_modules/@opentelemetry/sdk-trace": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/sdk-trace/-/sdk-trace-2.9.0.tgz", - "integrity": "sha512-sGA19HvtrrSKYsseHphluH6j3p6Xa3fqc7c7y8f/7mYWejc1lyDFcpSdD1kYa50HCLUeEo4zA5bW0pniaPszuw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.9.0", - "@opentelemetry/resources": "2.9.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace/node_modules/@opentelemetry/resources": { - "version": "2.9.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/resources/-/resources-2.9.0.tgz", - "integrity": "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.11.0.tgz", + "integrity": "sha512-fFnTqGm8/G73GQVnxYi7LXa1ZVYEUvgL6XI1LpvV0bPC7WQ/ZGgKxCSl8FnlZBKto9JHHEFTO6s6CUpvvtwFrA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.9.0", + "@opentelemetry/core": "2.11.0", + "@opentelemetry/resources": "2.11.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -5354,7 +7076,7 @@ }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.43.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz", "integrity": "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==", "license": "Apache-2.0", "engines": { @@ -5363,31 +7085,31 @@ }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@protobufjs/base64/-/base64-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", "license": "BSD-3-Clause", "dependencies": { @@ -5396,31 +7118,61 @@ }, "node_modules/@protobufjs/float": { "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/@protobufjs/float/-/float-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@protobufjs/path/-/path-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/@protobufjs/pool/-/pool-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@protobufjs/utf8/-/utf8-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz", "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", "license": "BSD-3-Clause" }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@smithy/core": { "version": "3.36.0", - "resolved": "https://registry.npmmirror.com/@smithy/core/-/core-3.36.0.tgz", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.36.0.tgz", "integrity": "sha512-3hJiwG1F5t1SoXqp/yOCmYXziyx7ZVqF63S5W6YU201e/qwVaHPex+E/3vvyY9a3ORq/b+BydeNZpP2saQ9X2g==", "license": "Apache-2.0", "dependencies": { @@ -5433,7 +7185,7 @@ }, "node_modules/@smithy/credential-provider-imds": { "version": "4.5.2", - "resolved": "https://registry.npmmirror.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.5.2.tgz", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.5.2.tgz", "integrity": "sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg==", "license": "Apache-2.0", "dependencies": { @@ -5447,7 +7199,7 @@ }, "node_modules/@smithy/fetch-http-handler": { "version": "5.8.0", - "resolved": "https://registry.npmmirror.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.8.0.tgz", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.8.0.tgz", "integrity": "sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA==", "license": "Apache-2.0", "dependencies": { @@ -5459,26 +7211,14 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@smithy/node-http-handler": { - "version": "4.7.3", - "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", - "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz", + "integrity": "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.3", - "@smithy/types": "^4.14.2", + "@smithy/core": "^3.33.3", + "@smithy/types": "^4.18.0", "tslib": "^2.6.2" }, "engines": { @@ -5487,7 +7227,7 @@ }, "node_modules/@smithy/signature-v4": { "version": "5.7.4", - "resolved": "https://registry.npmmirror.com/@smithy/signature-v4/-/signature-v4-5.7.4.tgz", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.7.4.tgz", "integrity": "sha512-tHy0K0VtqNd5Y7Y41h0a0Lhh0L1GzC08dTWg0F7vRJWFtTENg7IZikf3wQkanYIRdb7ngoIPMTmqgUi401fEeQ==", "license": "Apache-2.0", "dependencies": { @@ -5501,7 +7241,7 @@ }, "node_modules/@smithy/types": { "version": "4.19.0", - "resolved": "https://registry.npmmirror.com/@smithy/types/-/types-4.19.0.tgz", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.19.0.tgz", "integrity": "sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q==", "license": "Apache-2.0", "dependencies": { @@ -5511,68 +7251,36 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@stablelib/base64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", + "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==", + "license": "MIT" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/@standard-schema/spec/-/spec-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "license": "MIT" }, - "node_modules/@tanstack/react-virtual": { - "version": "3.14.21", - "resolved": "https://registry.npmmirror.com/@tanstack/react-virtual/-/react-virtual-3.14.21.tgz", - "integrity": "sha512-wWE/ZJDNNDp18JHWy7n5PQooqerHePVkEEu6Op0twKQ2InF9DPhYMQptQY0syDEviMd3/r8D0OUvKJibDGm9HQ==", - "license": "MIT", + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "license": "Apache-2.0", "dependencies": { - "@tanstack/virtual-core": "3.19.6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "tslib": "^2.8.0" } }, - "node_modules/@tanstack/virtual-core": { - "version": "3.19.6", - "resolved": "https://registry.npmmirror.com/@tanstack/virtual-core/-/virtual-core-3.19.6.tgz", - "integrity": "sha512-CsTW892z23gy7IyxYTTorVu1uZWB+0N349rSMgKz4rFLPpLza7F7TpcCKeI5iUAwYQCt8QUlOU67J+KXCxtpGw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "license": "MIT" }, "node_modules/@types/node": { "version": "26.6.5", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-26.6.5.tgz", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "license": "MIT", "dependencies": { @@ -5581,13 +7289,13 @@ }, "node_modules/@types/retry": { "version": "0.12.0", - "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "license": "MIT" }, "node_modules/@vscode/ripgrep": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep/-/ripgrep-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.18.0.tgz", "integrity": "sha512-ns5lWe44tSfbTMbVUsyB+I1819PVSw4AdpgK0RNkzfWfwy6+3IUNSxwSrfTno1/oWaS/hERNz+XLWVyga2aJBQ==", "license": "MIT", "optionalDependencies": { @@ -5607,7 +7315,7 @@ }, "node_modules/@vscode/ripgrep-darwin-arm64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-darwin-arm64/-/ripgrep-darwin-arm64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-darwin-arm64/-/ripgrep-darwin-arm64-1.18.0.tgz", "integrity": "sha512-r3ktHSvbFycQNF6sl7sNDPocpsI7J+mEzh1IaZFkY0spm3k2Z9t8hPAeOK7+p0l6p6/swkQC14XWX01low+94Q==", "cpu": [ "arm64" @@ -5620,7 +7328,7 @@ }, "node_modules/@vscode/ripgrep-darwin-x64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-darwin-x64/-/ripgrep-darwin-x64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-darwin-x64/-/ripgrep-darwin-x64-1.18.0.tgz", "integrity": "sha512-25b4gWbL138dGuQU244ebCKKc0q05ULBMoFSz9oAEUHNeqK/lOJViDS7DRvbDazzAzSEdan391Znks/R5mkaTQ==", "cpu": [ "x64" @@ -5633,7 +7341,7 @@ }, "node_modules/@vscode/ripgrep-linux-arm": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-arm/-/ripgrep-linux-arm-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-arm/-/ripgrep-linux-arm-1.18.0.tgz", "integrity": "sha512-GDAvufNDHu8zqLEmXstalQF0Wh6wQvdsBi/Vg3Yi3CK4a8XoFXqqXVEHEZ9xQz3t0NfoSEc9JbvK9DDS6FxyxQ==", "cpu": [ "arm" @@ -5646,7 +7354,7 @@ }, "node_modules/@vscode/ripgrep-linux-arm64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-arm64/-/ripgrep-linux-arm64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-arm64/-/ripgrep-linux-arm64-1.18.0.tgz", "integrity": "sha512-lQ/5zTG++U0E3IhVgS4EPTTn/U4okncaRMM5GOFfOYZywS4nuD31GhkHbNYlDk5CuDC68+hYJ0/eQeyCKJDA+g==", "cpu": [ "arm64" @@ -5659,7 +7367,7 @@ }, "node_modules/@vscode/ripgrep-linux-ia32": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-ia32/-/ripgrep-linux-ia32-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-ia32/-/ripgrep-linux-ia32-1.18.0.tgz", "integrity": "sha512-YWLkSUtFd4Jh5EepIhA9RJSfv3uMAVMo+2rBIGHPBnvgLrZciIs2cDKei1/p6Wc/aCzUoHyMAg2R6tw4ZCBKGg==", "cpu": [ "ia32" @@ -5672,7 +7380,7 @@ }, "node_modules/@vscode/ripgrep-linux-ppc64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-ppc64/-/ripgrep-linux-ppc64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-ppc64/-/ripgrep-linux-ppc64-1.18.0.tgz", "integrity": "sha512-quXVY8fwQ8O/lvU1yrSqSl3jlUzysRSb+AfUfCL/tRtphxsKlFvPAejryZ6vg4Bgvn8XL74xb4qMCDmWgYrT5w==", "cpu": [ "ppc64" @@ -5685,7 +7393,7 @@ }, "node_modules/@vscode/ripgrep-linux-riscv64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-riscv64/-/ripgrep-linux-riscv64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-riscv64/-/ripgrep-linux-riscv64-1.18.0.tgz", "integrity": "sha512-f5kBQBrWfQt8Q7OhSORuNDei5dkYagBj3y4jImSUXGMy8B/Ke7SltSRcUtjPv166FAFfHCAmWuZp3+cWnX2/Vw==", "cpu": [ "riscv64" @@ -5698,7 +7406,7 @@ }, "node_modules/@vscode/ripgrep-linux-s390x": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-s390x/-/ripgrep-linux-s390x-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-s390x/-/ripgrep-linux-s390x-1.18.0.tgz", "integrity": "sha512-rTOcJFGGcl2c07RUOWUo4U1ndnemKhY6A9hnMB18uk7jSgJc0d/QLBGWMWpumdtoJtpizn/wIv5mXIisJukusQ==", "cpu": [ "s390x" @@ -5711,7 +7419,7 @@ }, "node_modules/@vscode/ripgrep-linux-x64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-linux-x64/-/ripgrep-linux-x64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-x64/-/ripgrep-linux-x64-1.18.0.tgz", "integrity": "sha512-mQ3bVrUpnD2vs7QT0vX90Lt0cnUq467uFtEktIdsJJmW296RoSULRGqWgzG1AKxyBpNDD6l4ZO4qKf6SgyC23Q==", "cpu": [ "x64" @@ -5724,7 +7432,7 @@ }, "node_modules/@vscode/ripgrep-win32-arm64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-win32-arm64/-/ripgrep-win32-arm64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-win32-arm64/-/ripgrep-win32-arm64-1.18.0.tgz", "integrity": "sha512-vfTIjq1OHnzUjxZcHVQAMbnggp8dpGf+0QKFOZHwWPqFwXxQC8eCWM+5NUdoJ6yrElCeMzoUTXoK/LdZaniB+Q==", "cpu": [ "arm64" @@ -5737,7 +7445,7 @@ }, "node_modules/@vscode/ripgrep-win32-ia32": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-win32-ia32/-/ripgrep-win32-ia32-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-win32-ia32/-/ripgrep-win32-ia32-1.18.0.tgz", "integrity": "sha512-//rfAE+BOw5AC2EMmepmiE36jUuevtQYNQqqlw1s3m9FlRxjxEut97RkRPHAu9BG4mSojatZx+kXZXNdyI9caQ==", "cpu": [ "ia32" @@ -5750,7 +7458,7 @@ }, "node_modules/@vscode/ripgrep-win32-x64": { "version": "1.18.0", - "resolved": "https://registry.npmmirror.com/@vscode/ripgrep-win32-x64/-/ripgrep-win32-x64-1.18.0.tgz", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep-win32-x64/-/ripgrep-win32-x64-1.18.0.tgz", "integrity": "sha512-KNPvtElldqILHdnAetujPaowkNbpqJy3ssIGGN6F6Kve9Qi+nNLI2DN01O83JjCEVQbCzl8Ov3QZ9Eov3BR8Dg==", "cpu": [ "x64" @@ -5761,31 +7469,33 @@ "win32" ] }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "node_modules/@xterm/addon-serialize": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0.tgz", + "integrity": "sha512-uteyTU1EkrQa2Ux6P/uFl2fzmXI46jy5uoQMKEOM0fKTyiW7cSn0WrFenHm5vO5uEXX/GpwW/FgILvv3r0WbkA==", + "license": "MIT" + }, + "node_modules/@xterm/headless": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-6.0.0.tgz", + "integrity": "sha512-5Yj1QINYCyzrZtf8OFIHi47iQtI+0qYFPHmouEfG8dHNxbZ9Tb9YGSuLcsEwj9Z+OL75GJqPyJbyoFer80a2Hw==", "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } + "workspaces": [ + "addons/*" + ] }, "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz", + "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==", "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 20" } }, "node_modules/ajv": { "version": "8.20.0", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", "dependencies": { @@ -5799,32 +7509,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { @@ -5844,65 +7537,37 @@ }, "node_modules/bignumber.js": { "version": "9.3.1", - "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/body-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-2.3.0.tgz", - "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^2.0.0", - "debug": "^4.4.3", - "http-errors": "^2.0.1", - "iconv-lite": "^0.7.2", - "on-finished": "^2.4.1", - "qs": "^6.15.2", - "raw-body": "^3.0.2", - "type-is": "^2.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/body-parser/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": "*" } }, "node_modules/bowser": { "version": "2.14.1", - "resolved": "https://registry.npmmirror.com/bowser/-/bowser-2.14.1.tgz", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "license": "MIT" }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, "node_modules/bundle-name": { "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.1.tgz", "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==", "license": "MIT", "dependencies": { @@ -5915,128 +7580,138 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/byte-counter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/byte-counter/-/byte-counter-0.1.0.tgz", + "integrity": "sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=14.16" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/cacheable-request": { + "version": "13.0.19", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-13.0.19.tgz", + "integrity": "sha512-SVXGH037+Mo1aIMO5B2UcleR43FGjFdN+M8JObSyEoQ2Mn4CODRWx28gN5jiTF0n5ItsgtIZfyargMNs8GX4kg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "@types/http-cache-semantics": "^4.2.0", + "get-stream": "^9.0.1", + "http-cache-semantics": "^4.2.0", + "keyv": "^5.6.0", + "mimic-response": "^4.0.0", + "normalize-url": "^8.1.1", + "responselike": "^4.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "readdirp": "^5.0.0" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.8" } }, "node_modules/commander": { "version": "15.0.0", - "resolved": "https://registry.npmmirror.com/commander/-/commander-15.0.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", "license": "MIT", "engines": { "node": ">=22.12.0" } }, - "node_modules/content-disposition": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-2.0.1.tgz", - "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "mime-db": ">= 1.43.0 < 2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "node_modules/compression": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.2.tgz", + "integrity": "sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ==", "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "destroy": "1.2.0", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "license": "MIT", "engines": { - "node": ">=6.6.0" + "node": ">= 0.6" } }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, "engines": { - "node": ">= 0.10" + "node": ">=18" }, "funding": { "type": "opencollective", @@ -6045,7 +7720,7 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { @@ -6059,7 +7734,7 @@ }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "engines": { @@ -6067,25 +7742,32 @@ } }, "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-10.0.0.tgz", + "integrity": "sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==", + "license": "MIT", + "dependencies": { + "mimic-response": "^4.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=20" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/default-browser": { "version": "5.5.1", - "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.5.1.tgz", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz", "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", "license": "MIT", "dependencies": { @@ -6101,7 +7783,7 @@ }, "node_modules/default-browser-id": { "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "license": "MIT", "engines": { @@ -6113,7 +7795,7 @@ }, "node_modules/define-lazy-prop": { "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "license": "MIT", "engines": { @@ -6125,48 +7807,50 @@ }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/detect-libc": { "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" } }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, "node_modules/diff": { "version": "9.0.0", - "resolved": "https://registry.npmmirror.com/diff/-/diff-9.0.0.tgz", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", "dependencies": { @@ -6175,58 +7859,28 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { @@ -6235,7 +7889,7 @@ }, "node_modules/eventsource": { "version": "3.0.7", - "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "license": "MIT", "dependencies": { @@ -6247,104 +7901,61 @@ }, "node_modules/eventsource-parser": { "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/eventsource-parser/-/eventsource-parser-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", "license": "MIT", "engines": { "node": ">=18.0.0" } }, - "node_modules/express": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/express/-/express-5.3.0.tgz", - "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.3.0", - "content-disposition": "^2.0.1", - "content-type": "^2.0.0", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.8", - "qs": "^6.16.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.1.0", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express-rate-limit": { - "version": "8.7.1", - "resolved": "https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-8.7.1.tgz", - "integrity": "sha512-2FXbqkygil3mZiXzEtM0IjE/UBmBNot0J1GEVrJT4JbrvwOSoEtqtO+wHbiMQELWe1eNvHoYRg2dkjOid+6JkA==", + "node_modules/execa": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-10.2.0.tgz", + "integrity": "sha512-j1pFOVxaybMVCTNHSBuISL2KQcDS3KIE1wBmUp4n2X+1FgaQI2ZDJVy9TYxDyMCzYojRIMh9O8X/UoWZtxTJdw==", "license": "MIT", "dependencies": { - "debug": "^4.4.3", - "ip-address": "^10.2.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" + "@sindresorhus/merge-streams": "^4.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.1", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.3.1", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "which-command": "^0.1.0", + "yoctocolors": "^2.2.0" }, - "peerDependencies": { - "express": ">= 4.11" - } - }, - "node_modules/express/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", - "license": "MIT", "engines": { - "node": ">=18" + "node": ">=22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", + "license": "Unlicense" + }, "node_modules/fast-uri": { - "version": "3.1.8", - "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.8.tgz", - "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz", + "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==", "funding": [ { "type": "github", @@ -6359,7 +7970,7 @@ }, "node_modules/fetch-blob": { "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "funding": [ { @@ -6382,34 +7993,54 @@ }, "node_modules/fflate": { "version": "0.8.3", - "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.3.tgz", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", "license": "MIT" }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">= 18.0.0" + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/form-data-encoder": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.1.0.tgz", + "integrity": "sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==", + "license": "MIT", + "engines": { + "node": ">= 18" } }, "node_modules/formdata-polyfill": { "version": "4.0.10", - "resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "license": "MIT", "dependencies": { @@ -6419,36 +8050,18 @@ "node": ">=12.20.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fresh": { "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gaxios": { "version": "7.3.1", - "resolved": "https://registry.npmmirror.com/gaxios/-/gaxios-7.3.1.tgz", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.1.tgz", "integrity": "sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ==", "license": "Apache-2.0", "dependencies": { @@ -6460,9 +8073,54 @@ "node": ">=18" } }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/gcp-metadata": { "version": "8.1.2", - "resolved": "https://registry.npmmirror.com/gcp-metadata/-/gcp-metadata-8.1.2.tgz", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", "license": "Apache-2.0", "dependencies": { @@ -6474,46 +8132,25 @@ "node": ">=18" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/google-auth-library": { "version": "10.9.1", - "resolved": "https://registry.npmmirror.com/google-auth-library/-/google-auth-library-10.9.1.tgz", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz", "integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==", "license": "Apache-2.0", "dependencies": { @@ -6530,61 +8167,48 @@ }, "node_modules/google-logging-utils": { "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/google-logging-utils/-/google-logging-utils-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", "license": "Apache-2.0", "engines": { "node": ">=14" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/got": { + "version": "14.6.6", + "resolved": "https://registry.npmjs.org/got/-/got-14.6.6.tgz", + "integrity": "sha512-QLV1qeYSo5l13mQzWgP/y0LbMr5Plr5fJilgAIwgnwseproEbtNym8xpLsDzeZ6MWXgNE6kdWGBjdh3zT/Qerg==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@sindresorhus/is": "^7.0.1", + "byte-counter": "^0.1.0", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^13.0.12", + "decompress-response": "^10.0.0", + "form-data-encoder": "^4.0.2", + "http2-wrapper": "^2.2.1", + "keyv": "^5.5.3", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^4.0.1", + "responselike": "^4.0.2", + "type-fest": "^4.26.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/hono": { - "version": "4.13.13", - "resolved": "https://registry.npmmirror.com/hono/-/hono-4.13.13.tgz", - "integrity": "sha512-CQ46U0ZkAGmbT/4UxdzzGJpacP2IeKgY4a5/tOI9AABbpOMfK739wfDXmv1usCk+3RkKj1hQy4/fjhiwa2xlrA==", - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } + "node_modules/http-cache-semantics": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.3.0.tgz", + "integrity": "sha512-M5t5LlJpS1UHMjvwRQVdFHvPISGeLAxNcrWuJkeGh0KxsqCHZ1O3NXZU/8x7cD0BDcGW8kapxMKTvwlqrNkHkA==", + "license": "BSD-2-Clause" }, "node_modules/http-errors": { "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { @@ -6602,85 +8226,120 @@ "url": "https://opencollective.com/express" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/http-proxy-agent": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-9.1.0.tgz", + "integrity": "sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==", + "license": "MIT", + "dependencies": { + "agent-base": "9.0.0", + "debug": "^4.3.4", + "proxy-agent-negotiate": "1.1.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": ">= 14" + "node": ">=10.19.0" } }, "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.1.0.tgz", + "integrity": "sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "agent-base": "9.0.0", + "debug": "^4.3.4", + "proxy-agent-negotiate": "1.1.0" }, "engines": { - "node": ">= 14" + "node": ">= 20" } }, - "node_modules/iconv-lite": { - "version": "0.7.3", - "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.3.tgz", - "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/immer": { - "version": "10.2.0", - "resolved": "https://registry.npmmirror.com/immer/-/immer-10.2.0.tgz", - "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/ip-address": { - "version": "10.7.4", - "resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-10.7.4.tgz", - "integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.5.0.tgz", + "integrity": "sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==", "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10" } }, "node_modules/is-docker": { "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", "bin": { @@ -6695,7 +8354,7 @@ }, "node_modules/is-in-ssh": { "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", "license": "MIT", "engines": { @@ -6707,7 +8366,7 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "license": "MIT", "dependencies": { @@ -6723,15 +8382,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-wsl": { "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", "dependencies": { @@ -6746,13 +8435,13 @@ }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/jose": { "version": "6.2.12", - "resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.12.tgz", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.12.tgz", "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==", "license": "MIT", "funding": { @@ -6761,13 +8450,13 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { "version": "4.3.2", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.3.2.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", "funding": [ { @@ -6787,9 +8476,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbi": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.2.tgz", + "integrity": "sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==", + "license": "Apache-2.0" + }, "node_modules/json-bigint": { "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/json-bigint/-/json-bigint-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", "license": "MIT", "dependencies": { @@ -6798,7 +8493,7 @@ }, "node_modules/json-schema-to-ts": { "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", "license": "MIT", "dependencies": { @@ -6811,19 +8506,13 @@ }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, - "node_modules/json-schema-typed": { - "version": "8.0.2", - "resolved": "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz", - "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - "license": "BSD-2-Clause" - }, "node_modules/jwa": { "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/jwa/-/jwa-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "license": "MIT", "dependencies": { @@ -6834,7 +8523,7 @@ }, "node_modules/jws": { "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/jws/-/jws-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "license": "MIT", "dependencies": { @@ -6842,73 +8531,55 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, "node_modules/koffi": { - "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/koffi/-/koffi-3.3.3.tgz", - "integrity": "sha512-XWNI4eyxJJzR2MakPZzR3QeZ06JOklLbxglin0dHhx/qIQCby8lqHs9Acq4Q7CpCKnOrBSj+6b9J5y69wfr2ZA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/koffi/-/koffi-3.1.1.tgz", + "integrity": "sha512-mRX6AMeeKCxSOeOopqAcLAl5jcNvge7NAG8l7rF/8gGJATI0tdHFYjteIdE0mGOtWdsrJOij+PjnP8Q9c1gwgA==", "hasInstallScript": true, "license": "MIT", "funding": { "url": "https://liberapay.com/Koromix" }, "optionalDependencies": { - "@koromix/koffi-android-arm64": "3.3.3", - "@koromix/koffi-android-x64": "3.3.3", - "@koromix/koffi-darwin-arm64": "3.3.3", - "@koromix/koffi-darwin-x64": "3.3.3", - "@koromix/koffi-freebsd-arm64": "3.3.3", - "@koromix/koffi-freebsd-ia32": "3.3.3", - "@koromix/koffi-freebsd-x64": "3.3.3", - "@koromix/koffi-linux-arm": "3.3.3", - "@koromix/koffi-linux-arm64": "3.3.3", - "@koromix/koffi-linux-ia32": "3.3.3", - "@koromix/koffi-linux-loong64": "3.3.3", - "@koromix/koffi-linux-ppc64": "3.3.3", - "@koromix/koffi-linux-riscv64": "3.3.3", - "@koromix/koffi-linux-x64": "3.3.3", - "@koromix/koffi-openbsd-arm64": "3.3.3", - "@koromix/koffi-openbsd-ia32": "3.3.3", - "@koromix/koffi-openbsd-x64": "3.3.3", - "@koromix/koffi-win32-arm64": "3.3.3", - "@koromix/koffi-win32-ia32": "3.3.3", - "@koromix/koffi-win32-x64": "3.3.3" + "@koromix/koffi-darwin-arm64": "3.1.1", + "@koromix/koffi-darwin-x64": "3.1.1", + "@koromix/koffi-freebsd-arm64": "3.1.1", + "@koromix/koffi-freebsd-ia32": "3.1.1", + "@koromix/koffi-freebsd-x64": "3.1.1", + "@koromix/koffi-linux-arm64": "3.1.1", + "@koromix/koffi-linux-ia32": "3.1.1", + "@koromix/koffi-linux-loong64": "3.1.1", + "@koromix/koffi-linux-riscv64": "3.1.1", + "@koromix/koffi-linux-x64": "3.1.1", + "@koromix/koffi-openbsd-ia32": "3.1.1", + "@koromix/koffi-openbsd-x64": "3.1.1", + "@koromix/koffi-win32-arm64": "3.1.1", + "@koromix/koffi-win32-ia32": "3.1.1", + "@koromix/koffi-win32-x64": "3.1.1" } }, "node_modules/long": { "version": "5.3.2", - "resolved": "https://registry.npmmirror.com/long/-/long-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.1.tgz", - "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "license": "MIT", "engines": { - "node": ">=18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6916,7 +8587,7 @@ }, "node_modules/mime-db": { "version": "1.54.0", - "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { @@ -6925,7 +8596,7 @@ }, "node_modules/mime-types": { "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { @@ -6939,15 +8610,33 @@ "url": "https://opencollective.com/express" } }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minisearch": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.2.0.tgz", + "integrity": "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==", + "license": "MIT" + }, "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/negotiator": { "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz", "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", "license": "MIT", "dependencies": { @@ -6961,59 +8650,48 @@ "url": "https://opencollective.com/express" } }, - "node_modules/negotiator/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/node-addon-api": { "version": "7.1.1", - "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "license": "MIT" }, "node_modules/node-addon-native-custom-loader": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-native-custom-loader/-/node-addon-native-custom-loader-0.1.5.tgz", - "integrity": "sha512-rL0XXRytayIChYf1xaG9/1NzGBRTyFkQTIpn+MDz/hpr0PZw1a9PZIoH9HlYfagNawhXU+jfN650EvoSIvR7Vw==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-native-custom-loader/-/node-addon-native-custom-loader-0.1.9.tgz", + "integrity": "sha512-Zh87aubSc1UF8CzZsRws1KtSwXiPDH0tbcg8V/2OA8Tcq9yGJRESFcEOC5NGLFama5IGfC3aJhubZbrj9Un2qA==", "license": "MIT", "engines": { "node": ">=20" } }, "node_modules/node-addon-require-builtin": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin/-/node-addon-require-builtin-0.1.5.tgz", - "integrity": "sha512-isaquiStlp7qdFpaffy+2ssJPUR/kLPRE5gqfeWbb0Ahph9H7O3BOFwThqkVaTrxfpnjrQauxlOEgvzD+snhUg==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin/-/node-addon-require-builtin-0.1.9.tgz", + "integrity": "sha512-BCxXCMZDs/VLLh64SwKNw/me7Qx1I7Be4qxWwYVRRm8tJoOB8fL7qg6CmXhSXeUqsKt72t8RaKCX4EN+5nocVg==", "license": "MIT", "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" }, "optionalDependencies": { - "node-addon-require-builtin-darwin-arm64": "0.1.5", - "node-addon-require-builtin-darwin-x64": "0.1.5", - "node-addon-require-builtin-linux-arm64-gnu": "0.1.5", - "node-addon-require-builtin-linux-x64-gnu": "0.1.5", - "node-addon-require-builtin-win32-arm64-msvc": "0.1.5", - "node-addon-require-builtin-win32-ia32-msvc": "0.1.5", - "node-addon-require-builtin-win32-x64-msvc": "0.1.5" + "node-addon-require-builtin-darwin-arm64": "0.1.9", + "node-addon-require-builtin-darwin-x64": "0.1.9", + "node-addon-require-builtin-linux-arm64-gnu": "0.1.9", + "node-addon-require-builtin-linux-arm64-musl": "0.1.9", + "node-addon-require-builtin-linux-x64-gnu": "0.1.9", + "node-addon-require-builtin-linux-x64-musl": "0.1.9", + "node-addon-require-builtin-win32-arm64-msvc": "0.1.9", + "node-addon-require-builtin-win32-ia32-msvc": "0.1.9", + "node-addon-require-builtin-win32-x64-msvc": "0.1.9" } }, "node_modules/node-addon-require-builtin-darwin-arm64": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-darwin-arm64/-/node-addon-require-builtin-darwin-arm64-0.1.5.tgz", - "integrity": "sha512-MZ5RyGhuU7DTbwuNpOQW81/ep8n5Yd5YlZa6dWiEfJEh+01Dl4cCKGmMCWNgb0VtqAImRtAOtmZIPtwngiemKQ==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-darwin-arm64/-/node-addon-require-builtin-darwin-arm64-0.1.9.tgz", + "integrity": "sha512-n45xEILQVOLZ2hVhzRXesTMYS4odHquyI/B/IkPMPUCONa8PjNfBag6lYBH4wDrhgpLNNBwMsUD8d8O/13QPPA==", "cpu": [ "arm64" ], @@ -7023,16 +8701,16 @@ "darwin" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" } }, "node_modules/node-addon-require-builtin-darwin-x64": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-darwin-x64/-/node-addon-require-builtin-darwin-x64-0.1.5.tgz", - "integrity": "sha512-wdCSPn49AdNZ2EXHQqswiXk1cROFe9zSRaAX8PwQLxmjdLt+xZF7vZP6VlqgXm+VAOHv98q8kp9m7mO9jY3OgQ==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-darwin-x64/-/node-addon-require-builtin-darwin-x64-0.1.9.tgz", + "integrity": "sha512-Sm4Liqh1uo9zgJB2F/pACPPZdHu+fj9Qniyr1Q99dDQB0v71VgZgkAgv3K0/E1iPQBlZq9rakFkY7MGUIfWc0A==", "cpu": [ "x64" ], @@ -7042,16 +8720,16 @@ "darwin" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" } }, "node_modules/node-addon-require-builtin-linux-arm64-gnu": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-linux-arm64-gnu/-/node-addon-require-builtin-linux-arm64-gnu-0.1.5.tgz", - "integrity": "sha512-hCqzKpQiknDDv6rUdZqrxCBXROg/uUruO0geUuZsdM9M/Lds45gSb4bDE958HlPaCvrDyR0wTHl3II8A7yQeew==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-linux-arm64-gnu/-/node-addon-require-builtin-linux-arm64-gnu-0.1.9.tgz", + "integrity": "sha512-ToU4wGtOD/069i2y4fJ3cjDJiiWtcjSQTZMf0YKlotb5BmTM7FjhR3X1aub8J/YjlOwl6665J/XAYuvCaDO5sA==", "cpu": [ "arm64" ], @@ -7064,16 +8742,38 @@ "linux" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/node-addon-require-builtin-linux-arm64-musl": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-linux-arm64-musl/-/node-addon-require-builtin-linux-arm64-musl-0.1.9.tgz", + "integrity": "sha512-85Z5Avp++wfa9iiTIH8LC/r6qvlC/CiwpifiwIz0gYQ9PzajTSkz06gX7YDqf1oUqWYxU9uwNEOmo7mktHOOfA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "dependencies": { + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" } }, "node_modules/node-addon-require-builtin-linux-x64-gnu": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-linux-x64-gnu/-/node-addon-require-builtin-linux-x64-gnu-0.1.5.tgz", - "integrity": "sha512-lgP+ruwWXbcXDslhp5uIc+dFgzITEGPZ4E50WdHGt/OzcoVhN6y5z72pRRvxy8DE661//QxqmCLe72rS3SVg+w==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-linux-x64-gnu/-/node-addon-require-builtin-linux-x64-gnu-0.1.9.tgz", + "integrity": "sha512-fh3K3/JvBfSYwU8vEOpp4Wdp4N/jX0EnZYq5GsaftlQin1FVqgve/yDNoh+asxBMOQyHOG8F4dXlV1WCierrfg==", "cpu": [ "x64" ], @@ -7086,16 +8786,38 @@ "linux" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/node-addon-require-builtin-linux-x64-musl": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-linux-x64-musl/-/node-addon-require-builtin-linux-x64-musl-0.1.9.tgz", + "integrity": "sha512-B6fu/5xmbRxnifM7nWz0IESkYnUl8dwFZmRDMsxdhzv2nb+EtBRFAXg4lf73qhX3yoZD4SnWJILBQMlIAwBCzw==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "dependencies": { + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" } }, "node_modules/node-addon-require-builtin-win32-arm64-msvc": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-win32-arm64-msvc/-/node-addon-require-builtin-win32-arm64-msvc-0.1.5.tgz", - "integrity": "sha512-KEO2eWS4lvZg6JmPPz04OdI4Ojrc7YzOs++4r6VnvwsqYN2r6mjGSGpouQkk8J2eLXBzC7X/D9wYTbUuQS8u1Q==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-win32-arm64-msvc/-/node-addon-require-builtin-win32-arm64-msvc-0.1.9.tgz", + "integrity": "sha512-FOQuzNe8B1BANu886rJgdbQuRxPGUQmewkykw87wSr32U0ibQ3AWGuUM/Gh7LG4RekjFaifj7gEI/tq2+6GU6g==", "cpu": [ "arm64" ], @@ -7105,16 +8827,16 @@ "win32" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" } }, "node_modules/node-addon-require-builtin-win32-ia32-msvc": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-win32-ia32-msvc/-/node-addon-require-builtin-win32-ia32-msvc-0.1.5.tgz", - "integrity": "sha512-iSC988EqZm5XbKWp/giW6K6EBRTrHt/YQbAkKsZLglt7PplmvvrZ7C3tUsyh1wVxUTYAaxFdE2xbqSdpw0rb6g==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-win32-ia32-msvc/-/node-addon-require-builtin-win32-ia32-msvc-0.1.9.tgz", + "integrity": "sha512-N29P0kmIBT6hnkNNFYzxn+o9ydT6OYZe9RFAi8dSxV1rNSul1FlxtuKWYe8w2sQpbQGYuGDEtpOwdeFtq2iFTg==", "cpu": [ "ia32" ], @@ -7124,16 +8846,16 @@ "win32" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20 <23" } }, "node_modules/node-addon-require-builtin-win32-x64-msvc": { - "version": "0.1.5", - "resolved": "https://registry.npmmirror.com/node-addon-require-builtin-win32-x64-msvc/-/node-addon-require-builtin-win32-x64-msvc-0.1.5.tgz", - "integrity": "sha512-pjuco/ESU3ChIp7WwacWfY2ENu2K5rGAgqjcXedoiFcTrjTf5Ln/miKSuNfE6IiuJ7tfMTJH6VH5hq+C1Y8JMQ==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/node-addon-require-builtin-win32-x64-msvc/-/node-addon-require-builtin-win32-x64-msvc-0.1.9.tgz", + "integrity": "sha512-+i6N4A7m7txjbw8pDYESdWXiKO9EEVq0SzTzwPS0WZuV4F1MzQnaDJwJJnO7T6zAc0BvqHXBOkpharCrUjFhbQ==", "cpu": [ "x64" ], @@ -7143,7 +8865,7 @@ "win32" ], "dependencies": { - "node-addon-native-custom-loader": "0.1.5" + "node-addon-native-custom-loader": "0.1.9" }, "engines": { "node": ">=20" @@ -7151,7 +8873,7 @@ }, "node_modules/node-domexception": { "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "deprecated": "Use your platform's native DOMException instead", "funding": [ @@ -7171,7 +8893,7 @@ }, "node_modules/node-fetch": { "version": "3.3.2", - "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.2.tgz", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", "dependencies": { @@ -7189,7 +8911,7 @@ }, "node_modules/node-pty": { "version": "1.2.0-beta.15", - "resolved": "https://registry.npmmirror.com/node-pty/-/node-pty-1.2.0-beta.15.tgz", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.2.0-beta.15.tgz", "integrity": "sha512-vORSzHXi4Ofl7HemVWpuudLqCPdaQb4LfpRCUpE5HPxhp4JYscl8zZwxh11p26v2wvW24WMwnMfLjhRLixrfxA==", "hasInstallScript": true, "license": "MIT", @@ -7197,30 +8919,49 @@ "node-addon-api": "^7.1.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "license": "MIT", "dependencies": { @@ -7230,18 +8971,18 @@ "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, "node_modules/open": { "version": "11.0.4", - "resolved": "https://registry.npmmirror.com/open/-/open-11.0.4.tgz", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.4.tgz", "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==", "license": "MIT", "dependencies": { @@ -7260,18 +9001,34 @@ } }, "node_modules/openai": { - "version": "6.26.0", - "resolved": "https://registry.npmmirror.com/openai/-/openai-6.26.0.tgz", - "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-7.19.0.tgz", + "integrity": "sha512-MX2s3u2L5racTO0CC/SWpCOasJQBCJrqLKXK+l82cAhdeF8mPMBEe/gxMm0ZFa2xpKpOFLRjxv5afYEZbBXmbQ==", "license": "Apache-2.0", - "bin": { - "openai": "bin/cli" + "engines": { + "node": ">=22.0.0" }, "peerDependencies": { - "ws": "^8.18.0", + "@aws-sdk/credential-provider-node": ">=3.972.0 <4", + "@smithy/hash-node": ">=4.3.0 <5", + "@smithy/signature-v4": ">=5.4.0 <6", + "undici": ">=5 <9", + "ws": "^8.21.0", "zod": "^3.25 || ^4.0" }, "peerDependenciesMeta": { + "@aws-sdk/credential-provider-node": { + "optional": true + }, + "@smithy/hash-node": { + "optional": true + }, + "@smithy/signature-v4": { + "optional": true + }, + "undici": { + "optional": true + }, "ws": { "optional": true }, @@ -7280,9 +9037,33 @@ } } }, + "node_modules/p-cancelable": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-4.0.1.tgz", + "integrity": "sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/p-limit": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.3.tgz", + "integrity": "sha512-SKgVvDU5TNIxQ4r30U75BNLC6a+6GOEjngrk/ysM5+Zu3oJuk1SC5ApzIzY/7PjCEjoVPMWJ0zho/4QUiEB7TQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "license": "MIT", "dependencies": { @@ -7293,9 +9074,27 @@ "node": ">=8" } }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "engines": { @@ -7304,38 +9103,28 @@ }, "node_modules/partial-json": { "version": "0.1.7", - "resolved": "https://registry.npmmirror.com/partial-json/-/partial-json-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", "license": "MIT" }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "8.4.2", - "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.7", - "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.7.tgz", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "license": "MIT", "engines": { @@ -7347,7 +9136,7 @@ }, "node_modules/pkce-challenge": { "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "license": "MIT", "engines": { @@ -7356,7 +9145,7 @@ }, "node_modules/powershell-utils": { "version": "0.2.1", - "resolved": "https://registry.npmmirror.com/powershell-utils/-/powershell-utils-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.1.tgz", "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==", "license": "MIT", "engines": { @@ -7366,9 +9155,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pretty-ms": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.1.tgz", + "integrity": "sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==", + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/protobufjs": { "version": "7.6.6", - "resolved": "https://registry.npmmirror.com/protobufjs/-/protobufjs-7.6.6.tgz", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.6.tgz", "integrity": "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==", "hasInstallScript": true, "license": "BSD-3-Clause", @@ -7389,42 +9193,38 @@ "node": ">=12.0.0" } }, - "node_modules/proxy-addr": { - "version": "2.0.8", - "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.8.tgz", - "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", + "node_modules/proxy-agent-negotiate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-agent-negotiate/-/proxy-agent-negotiate-1.1.0.tgz", + "integrity": "sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==", "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, "engines": { - "node": ">= 0.10" + "node": ">= 20" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependencies": { + "kerberos": "^2.0.0" + }, + "peerDependenciesMeta": { + "kerberos": { + "optional": true + } } }, - "node_modules/qs": { - "version": "6.16.1", - "resolved": "https://registry.npmmirror.com/qs/-/qs-6.16.1.tgz", - "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==", - "license": "BSD-3-Clause", - "dependencies": { - "es-define-property": "^1.0.1", - "side-channel": "^1.1.1" - }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", "engines": { - "node": ">=0.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/range-parser": { "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", "license": "MIT", "engines": { @@ -7435,28 +9235,13 @@ "url": "https://opencollective.com/express" } }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", "license": "MIT", "engines": { - "node": ">= 14.18.0" + "node": ">= 20.19.0" }, "funding": { "type": "individual", @@ -7465,41 +9250,61 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve.exports": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.4.tgz", + "integrity": "sha512-zepuGL0ulf+nt+XaFrlKeaiTJeyPFPLLY62+ncq1/VTHBdt3HsfXOH60priZ6tnXQozdGcDeIF5JVTanvIcYWQ==", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "node_modules/responselike": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-4.0.2.tgz", + "integrity": "sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" + "lowercase-keys": "^3.0.0" }, "engines": { - "node": ">= 18" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/run-applescript": { "version": "7.1.0", - "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "license": "MIT", "engines": { @@ -7511,7 +9316,7 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { @@ -7529,15 +9334,21 @@ ], "license": "MIT" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } }, "node_modules/semver": { "version": "7.8.5", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.8.5.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "license": "ISC", "bin": { @@ -7549,7 +9360,7 @@ }, "node_modules/send": { "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/send/-/send-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "license": "MIT", "dependencies": { @@ -7573,9 +9384,32 @@ "url": "https://opencollective.com/express" } }, + "node_modules/send/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/serve-static": { "version": "2.2.1", - "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "license": "MIT", "dependencies": { @@ -7594,13 +9428,13 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, "node_modules/sharp": { "version": "0.35.5", - "resolved": "https://registry.npmmirror.com/sharp/-/sharp-0.35.5.tgz", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", "license": "Apache-2.0", "dependencies": { @@ -7649,7 +9483,7 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { @@ -7661,97 +9495,157 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.1.tgz", - "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4", - "side-channel-list": "^1.0.1", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, + "node_modules/sherpa-onnx-darwin-arm64": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-darwin-arm64/-/sherpa-onnx-darwin-arm64-1.13.8.tgz", + "integrity": "sha512-FPNgJMgnWVl/KhRTIhG3KL3A4Om63Rn4YKXc9/uHY7SzLcvqLJLc/h7UBWJwduXvv7K18t5NpxHR6XgXn4sjWw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/sherpa-onnx-darwin-x64": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-darwin-x64/-/sherpa-onnx-darwin-x64-1.13.8.tgz", + "integrity": "sha512-7BLRpjM6w4f9W46/nmkmq8lEKUayhebvcpslCVQ+6QN2uReYlZEMDZlSpXMjme+hUFrPfRz8P3UNq8ep/4d19g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/sherpa-onnx-linux-arm64": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-linux-arm64/-/sherpa-onnx-linux-arm64-1.13.8.tgz", + "integrity": "sha512-Tlg7a70b/Wge3OF8IgTHF9jhSVCsLyKQKhwc4BsJ5A+dL/SrFtGBjzuHp4XeLhiiOT7afCxX5PdSn/D4c8Lnuw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/sherpa-onnx-linux-x64": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-linux-x64/-/sherpa-onnx-linux-x64-1.13.8.tgz", + "integrity": "sha512-6plnhjagsSeTntCgnlag86hWbs/uZE9Crms1LgOb68/1nKsIQjMd+WG519m+aPwT6TrsBOiEMzrx41t8sL5L5g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/sherpa-onnx-node": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-node/-/sherpa-onnx-node-1.13.8.tgz", + "integrity": "sha512-MsDMBdhLFTZ1GwvcGSSQhnS7g/EA8OMH6IYysCVUOM7j8Icty9KRc0E6YT1A5fWBsZwRfKOeh88QC95aRvS8ag==", + "license": "Apache-2.0", + "optionalDependencies": { + "sherpa-onnx-darwin-arm64": "^1.13.8", + "sherpa-onnx-darwin-x64": "^1.13.8", + "sherpa-onnx-linux-arm64": "^1.13.8", + "sherpa-onnx-linux-x64": "^1.13.8", + "sherpa-onnx-win-ia32": "^1.13.8", + "sherpa-onnx-win-x64": "^1.13.8" + } + }, + "node_modules/sherpa-onnx-win-ia32": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-win-ia32/-/sherpa-onnx-win-ia32-1.13.8.tgz", + "integrity": "sha512-H0Ojln9hfvM+pxWqW0cnjB/XK8/JPq4/k0IWu2JpY5Z458M3zv+XC3Hu+wmot3AoH/K1Bgt23n/tTKtPV9x8qg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/sherpa-onnx-win-x64": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/sherpa-onnx-win-x64/-/sherpa-onnx-win-x64-1.13.8.tgz", + "integrity": "sha512-oZF1c9VPOKtMwn83Bboc5XSWL+76BRoyB3eUuVnCknBKxwSULZU2Foia9VHWzU+n4I12rPsP6z6H9Rp1hD9o8g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "node_modules/standardwebhooks": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/standardwebhooks/-/standardwebhooks-1.1.1.tgz", + "integrity": "sha512-bCbX9ZEyFkWPsRz7Bl3NuQUJohmwGSev/yhr7vhaGPlc4AfIrspIRa6cPTBuI1ItmrTDJ4d/S2hCsfe4+vQGnQ==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@stablelib/base64": "^1.0.0", + "fast-sha256": "^1.3.0" } }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "license": "MIT", "engines": { @@ -7760,19 +9654,19 @@ }, "node_modules/ts-algebra": { "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/ts-algebra/-/ts-algebra-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", "license": "MIT" }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/turndown": { "version": "7.2.4", - "resolved": "https://registry.npmmirror.com/turndown/-/turndown-7.2.4.tgz", + "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.4.tgz", "integrity": "sha512-I8yFsfRzmzK0WV1pNNOA4A7y4RDfFxPRxb3t+e3ui14qSGOxGtiSP6GjeX+Y6CHb7HYaFj7ECUD7VE5kQMZWGQ==", "license": "MIT", "dependencies": { @@ -7783,70 +9677,74 @@ "npm": ">=9" } }, - "node_modules/type-is": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/type-is/-/type-is-2.1.0.tgz", - "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", - "license": "MIT", - "dependencies": { - "content-type": "^2.0.0", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 18" + "node": ">=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is/node_modules/content-type": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-2.1.0.tgz", - "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "node_modules/typebox": { + "version": "1.3.27", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.3.27.tgz", + "integrity": "sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz", + "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=22.19.0" } }, - "node_modules/typebox": { - "version": "1.1.38", - "resolved": "https://registry.npmmirror.com/typebox/-/typebox-1.1.38.tgz", - "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", - "license": "MIT" - }, "node_modules/undici-types": { "version": "8.9.0", - "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-8.9.0.tgz", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "license": "MIT", "engines": { @@ -7855,7 +9753,7 @@ }, "node_modules/web-streams-polyfill": { "version": "3.3.3", - "resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "license": "MIT", "engines": { @@ -7864,7 +9762,7 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { @@ -7877,15 +9775,24 @@ "node": ">= 8" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" + "node_modules/which-command": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/which-command/-/which-command-0.1.0.tgz", + "integrity": "sha512-XZyoF5/5hZtXitIwzrU4NKK+Wtbb9aB9CezUEw2Q0wlYK8NUYQxC1rRXgNueYLtBAJwXIb+/tFVk4dozciNJMA==", + "license": "MIT", + "bin": { + "which-command": "cli.js" + }, + "engines": { + "node": ">=22" + }, + "funding": { + "url": "https://github.com/sindresorhus/which-command?sponsor=1" + } }, "node_modules/ws": { "version": "8.22.0", - "resolved": "https://registry.npmmirror.com/ws/-/ws-8.22.0.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz", "integrity": "sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==", "license": "MIT", "engines": { @@ -7906,7 +9813,7 @@ }, "node_modules/wsl-utils": { "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-1.0.1.tgz", "integrity": "sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==", "license": "MIT", "dependencies": { @@ -7920,9 +9827,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, "node_modules/yaml": { "version": "2.9.1", - "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.9.1.tgz", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", "license": "ISC", "bin": { @@ -7935,50 +9848,37 @@ "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/zod": { - "version": "4.6.7", - "resolved": "https://registry.npmmirror.com/zod/-/zod-4.6.7.tgz", - "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", + "engines": { + "node": ">=12.20" + }, "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.25.2", - "resolved": "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", - "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.25.28 || ^4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zustand": { - "version": "4.4.7", - "resolved": "https://registry.npmmirror.com/zustand/-/zustand-4.4.7.tgz", - "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", + "node_modules/yoctocolors": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz", + "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==", "license": "MIT", - "dependencies": { - "use-sync-external-store": "1.2.0" - }, "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "@types/react": ">=16.8", - "immer": ">=9.0", - "react": ">=16.8" + "node": ">=18" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } } } diff --git a/runtime/harness/package.json b/runtime/harness/package.json index 348882e..68c6859 100644 --- a/runtime/harness/package.json +++ b/runtime/harness/package.json @@ -10,104 +10,6 @@ "@google/genai": false }, "dependencies": { - "@deepseek-ai/dsh": "0.1.1-rc.2", - "@deepseek-ai/cordis": "4.0.1", - "@deepseek-ai/cordis-plugin-group": "1.0.1", - "@deepseek-ai/cordis-plugin-hmr": "1.0.16", - "@deepseek-ai/cordis-plugin-include": "1.0.6", - "@deepseek-ai/cordis-plugin-loader": "1.0.2", - "@deepseek-ai/cordis-plugin-timer": "1.1.3", - "@deepseek-ai/dsh-agent": "0.1.1-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.1-rc.2", - "@deepseek-ai/dsh-agent-presets": "0.1.1-rc.2", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.1-rc.2", - "@deepseek-ai/dsh-api-gateway": "0.1.1-rc.2", - "@deepseek-ai/dsh-api-remotes": "0.1.1-rc.2", - "@deepseek-ai/dsh-atomic-write": "0.1.1-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.1-rc.2", - "@deepseek-ai/dsh-authorization": "0.1.1-rc.2", - "@deepseek-ai/dsh-bash-local": "0.1.1-rc.2", - "@deepseek-ai/dsh-brand": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-connection": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-locale": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-modules": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "0.1.1-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "0.1.1-rc.2", - "@deepseek-ai/dsh-code-runtime": "0.1.1-rc.2", - "@deepseek-ai/dsh-command-feedback": "0.1.1-rc.2", - "@deepseek-ai/dsh-commands": "0.1.1-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.1-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "0.1.1-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "0.1.1-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.1-rc.2", - "@deepseek-ai/dsh-file-reference": "0.1.1-rc.2", - "@deepseek-ai/dsh-fs": "0.1.1-rc.2", - "@deepseek-ai/dsh-fs-local": "0.1.1-rc.2", - "@deepseek-ai/dsh-goal": "0.1.1-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.1-rc.2", - "@deepseek-ai/dsh-host-apiproxy": "0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "0.1.1-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "0.1.1-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "0.1.1-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.1-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.1-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.1-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.1-rc.2", - "@deepseek-ai/dsh-llm": "0.1.1-rc.2", - "@deepseek-ai/dsh-llm-retry": "0.1.1-rc.2", - "@deepseek-ai/dsh-message-feedback": "0.1.1-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.1-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.1-rc.2", - "@deepseek-ai/dsh-plan-mode": "0.1.1-rc.2", - "@deepseek-ai/dsh-pwsh-local": "0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.1-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.1-rc.2", - "@deepseek-ai/dsh-scope": "0.1.1-rc.2", - "@deepseek-ai/dsh-session": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-reference": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-stats": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-telemetry": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.1-rc.2", - "@deepseek-ai/dsh-session-title-llm": "0.1.1-rc.2", - "@deepseek-ai/dsh-settings": "0.1.1-rc.2", - "@deepseek-ai/dsh-shell": "0.1.1-rc.2", - "@deepseek-ai/dsh-shell-env": "0.1.1-rc.2", - "@deepseek-ai/dsh-skill": "0.1.1-rc.2", - "@deepseek-ai/dsh-spill": "0.1.1-rc.2", - "@deepseek-ai/dsh-storage": "0.1.1-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.1-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.1-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.1-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.1-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.1-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.1-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.1-rc.2", - "@deepseek-ai/dsh-tool-workflow": "0.1.1-rc.2", - "@deepseek-ai/dsh-tools": "0.1.1-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.1-rc.2", - "@deepseek-ai/dsh-typert-registry": "0.1.1-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.1-rc.2", - "@deepseek-ai/dsh-user-questions": "0.1.1-rc.2", - "@deepseek-ai/dsh-web": "0.1.1-rc.2", - "@deepseek-ai/dsh-workflow": "0.1.1-rc.2", - "@deepseek-ai/schemastery": "3.18.1", - "node-addon-require-builtin": "0.1.5" + "@deepseek-ai/dsh": "0.2.1-rc.2" } } diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh index d14d309..769a7f9 100755 --- a/scripts/smoke-test.sh +++ b/scripts/smoke-test.sh @@ -51,7 +51,7 @@ if [[ "$ready" != true ]]; then fi export SMOKE_URL="http://$(docker port "$container" 3000/tcp | head -n 1)" python3 - <<'PY' -import base64, json, os, struct, time, urllib.error, urllib.request +import base64, http.cookiejar, json, os, struct, time, urllib.error, urllib.request url = os.environ['SMOKE_URL'] + '/' try: urllib.request.urlopen(url, timeout=5) @@ -60,10 +60,13 @@ except urllib.error.HTTPError as error: else: raise SystemExit('Browser unexpectedly allows anonymous access') headers = {'Authorization': 'Basic ' + base64.b64encode(('weharbor:' + os.environ['PASSWORD']).encode()).decode()} +# DSH 0.2 exchanges its launch token for an HttpOnly browser session cookie. +# Keep anonymous transport checks on urllib's separate default opener. +browser = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(http.cookiejar.CookieJar())) def wait_for(path, predicate=lambda response, body: response.status == 200): for attempt in range(120): try: - with urllib.request.urlopen(urllib.request.Request(url + path, headers=headers), timeout=5) as response: + with browser.open(urllib.request.Request(url + path, headers=headers), timeout=5) as response: body = response.read() if predicate(response, body): return body except (OSError, ValueError): @@ -80,18 +83,28 @@ assistant = wait_for('assistant/', lambda r, b: r.status == 200 and b' args.indexOf('--no-open') && args.includes('--no-open')) process.exit(8); +const port = Number(args[args.lastIndexOf('--port') + 1]); +const token = 'test_launch_token_never_log'; +const server = http.createServer((req, res) => { + const url = new URL(req.url, 'http://localhost'); + if (url.pathname === '/' && url.searchParams.get('token') === token) { + res.writeHead(303, {'set-cookie': 'dsh-auth-test=signed; Path=/; HttpOnly; SameSite=Strict', location: './'}); + res.end(); return; + } + if (!req.headers.cookie?.includes('dsh-auth-test=signed')) { res.writeHead(401); res.end(); return; } + if (url.pathname === '/api/message') { + res.setHeader('content-type', 'application/json'); + res.end(JSON.stringify({text: '/api/private user content'})); return; + } + res.setHeader('content-type', 'text/html'); + res.end(''); +}); +server.on('upgrade', (req, socket) => { + const allowed = req.headers.cookie?.includes('dsh-auth-test=signed') && + req.headers.origin === `http://127.0.0.1:${port}`; + socket.end(`HTTP/1.1 ${allowed ? '101 Switching Protocols' : '401 Unauthorized'}\r\nConnection: close\r\n\r\n`); +}); +server.listen(port, '127.0.0.1', () => { + process.stdout.write(`dsh web: http://127.0.0.1:${port}/?tok`); + setTimeout(() => process.stdout.write(`en=${token}\n`), 5); +}); +''' + +def free_port(): + with socket.socket() as sock: + sock.bind(('127.0.0.1', 0)) + return sock.getsockname()[1] + +@unittest.skipUnless(shutil.which('node'), 'Node runtime required') +class HarnessProxyTests(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.temp = tempfile.TemporaryDirectory() + directory = Path(cls.temp.name) + fake = directory / 'dsh.mjs' + fake.write_text(FAKE_DSH) + cls.logfile = directory / 'startup.log' + cls.log = cls.logfile.open('w') + cls.port, upstream = free_port(), free_port() + cls.origin = f'http://127.0.0.1:{cls.port}' + cls.base = cls.origin + '/assistant/' + cls.process = subprocess.Popen( + ['node', str(ROOT / 'root/scripts/workspace/harness-proxy.mjs'), + '--port', str(cls.port), '--patch', str(directory / 'patch.yml')], + env=dict(os.environ, DSH_BIN=str(fake), DSH_WORKSPACE=str(directory), + DSH_WEB_PROXY_PREFIX='/assistant', DSH_WEB_UPSTREAM_PORT=str(upstream)), + stdout=cls.log, stderr=cls.log, start_new_session=True) + cls.jar = http.cookiejar.CookieJar() + cls.browser = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cls.jar)) + for _ in range(100): + try: + with cls.browser.open(cls.base, timeout=1) as response: + if response.status == 200: + cls.html = response.read().decode() + break + except (OSError, urllib.error.URLError): + pass + time.sleep(.05) + else: + cls.tearDownClass() + raise AssertionError('Harness proxy did not establish a browser session') + + @classmethod + def tearDownClass(cls): + os.killpg(cls.process.pid, signal.SIGTERM) + cls.process.wait(timeout=10) + cls.log.close() + cls.temp.cleanup() + + def test_index_bootstraps_scoped_cookie_and_mounted_assets(self): + self.assertIn('src="/assistant/assets/app.js"', self.html) + cookie = next(iter(self.jar)) + self.assertEqual(cookie.path, '/assistant/') + self.assertTrue(cookie.has_nonstandard_attr('HttpOnly')) + self.assertNotIn('test_launch_token_never_log', self.logfile.read_text()) + + def test_api_requires_cookie_and_preserves_message_content(self): + with self.assertRaises(urllib.error.HTTPError) as failure: + urllib.request.urlopen(self.base + 'api/message') + self.assertEqual(failure.exception.code, 401) + with self.browser.open(self.base + 'api/message') as response: + self.assertEqual(response.read(), b'{"text":"/api/private user content"}') + + def test_cross_origin_and_cross_site_cannot_bootstrap(self): + for headers in [{'Origin': 'https://evil.test'}, {'Sec-Fetch-Site': 'cross-site'}]: + with self.assertRaises(urllib.error.HTTPError) as failure: + urllib.request.urlopen(urllib.request.Request(self.base, headers=headers)) + self.assertEqual(failure.exception.code, 403) + + def test_websocket_preserves_auth_and_validates_original_origin(self): + for cookie, origin, expected in [('', self.origin, 401), + ('dsh-auth-test=signed', self.origin, 101), + ('dsh-auth-test=signed', 'https://evil.test', 403)]: + connection = http.client.HTTPConnection('127.0.0.1', self.port, timeout=3) + connection.request('GET', '/assistant/api/socket', headers={ + 'Connection': 'Upgrade', 'Upgrade': 'websocket', 'Origin': origin, 'Cookie': cookie}) + self.assertEqual(connection.getresponse().status, expected) + connection.close() diff --git a/tests/test_session_identity.py b/tests/test_session_identity.py new file mode 100644 index 0000000..3389ee3 --- /dev/null +++ b/tests/test_session_identity.py @@ -0,0 +1,131 @@ +"""Current-chat proof rejects stale heap data, ambiguous pages and races.""" +import json +from pathlib import Path +import struct +import subprocess +import sys +import unittest +from unittest.mock import patch + +sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'root/scripts/workspace')) +import session_identity as identity +import desktop + + +class SessionIdentityTests(unittest.TestCase): + def setUp(self): + self.mem = object.__new__(identity.Memory) + self.mem.base = 0x100000 + self.mem.fd = 123 + self.mem.maps = [(0x100000, 0x102000, 'r-xp', str(identity.EXE), 0), + (0x300000, 0x301000, 'rw-p', '[heap]', 0)] + self.bytes = {} + self.layout = {'field': 0x100, 'vtables': [0x200], 'functions': [0x400], + 'meta': 0x800, 'handler': 0x1000, 'handler_bytes': (b'H' * 200).hex()} + self.put(0x100200, struct.pack(' 1: + return bytes(count) + return value + + with patch.object(identity.os, 'pread', side_effect=racing): + with self.assertRaisesRegex(identity.IdentityError, 'SESSION_MEMORY_CHANGED'): + self.mem.username(0x300100) + + def test_malformed_or_wrong_arch_elf_fails(self): + for value in [bytes(64), bytes.fromhex('7f454c460101') + bytes(100)]: + with self.assertRaises(identity.IdentityError): + identity.Elf(value) + + +class DesktopMemoryBindingTests(unittest.TestCase): + def test_exact_account_and_username_required_without_leaking_helper_output(self): + driver = object.__new__(desktop.Desktop) + binding = {'account': 'local', 'username': 'wxid_target'} + valid = dict(binding, verified=True) + for evidence in [valid, dict(valid, username='wxid_other'), + dict(valid, account='other'), dict(valid, verified=False), {}, None, []]: + result = subprocess.CompletedProcess([], 0, json.dumps(evidence), '') + with patch.object(desktop.subprocess, 'run', return_value=result) as run: + if evidence == valid: + driver._identity(binding) + else: + with self.assertRaises(desktop.DesktopError) as failure: + driver._identity(binding) + self.assertNotIn('wxid_', str(failure.exception)) + self.assertEqual(run.call_args.args[0], ['sudo', '-n', '/usr/local/bin/weharbor-capture-key']) + with patch.object(desktop.subprocess, 'run', side_effect=subprocess.TimeoutExpired([], 20)): + with self.assertRaises(desktop.DesktopError): + driver._identity(binding) diff --git a/tests/test_workspace.py b/tests/test_workspace.py index 9788153..e5d6490 100644 --- a/tests/test_workspace.py +++ b/tests/test_workspace.py @@ -260,17 +260,22 @@ def driver(self, fingerprints, visible=True, sidebar=False): n = self.Node editor = n(states=['show','edit','multi']) send = n('Send', 'button', ['show']) - evidence = [n('Unique Contact', states=['show'])] + [n(v, states=['show'] if visible else []) for v in fingerprints] + evidence = [n('Unique Contact', states=['show'] if visible else [])] + [n(v, states=['show'] if visible else []) for v in fingerprints] chat = n(role='panel', children=[editor, send] + ([] if sidebar else evidence)) frame = n(role='frame', children=[chat] + (evidence if sidebar else [])) d = object.__new__(desktop.Desktop) d.a = SimpleNamespace(StateType=SimpleNamespace(EDITABLE='edit', MULTI_LINE='multi', SHOWING='show')) d.nodes = lambda: d._subtree(frame) d._account = lambda account: None + d._identity = lambda binding: None d._foreground = lambda editor: None return d - def test_only_visible_chat_evidence_proves_identity(self): + def test_visible_unique_title_is_still_required_after_memory_identity(self): binding = {'account':'a','username':'wxid_target','names':['Unique Contact'],'messages':['recent message one','recent message two']} self.driver(binding['messages'])._controls(binding) - for d in [self.driver(binding['messages'], visible=False), self.driver(binding['messages'], sidebar=True), self.driver(['recent message one'])]: + self.driver([])._controls(binding) + for d in [self.driver(binding['messages'], sidebar=True), self.driver([], visible=False)]: with self.assertRaises(desktop.DesktopError): d._controls(binding) + driver = self.driver([]) + driver._identity = lambda _: (_ for _ in ()).throw(desktop.DesktopError('wrong session')) + with self.assertRaises(desktop.DesktopError): driver._controls(binding) diff --git a/versions.lock.json b/versions.lock.json index 5434304..f46f95f 100644 --- a/versions.lock.json +++ b/versions.lock.json @@ -11,10 +11,10 @@ "sha256": "b7d0f8d53e9f648bc2c77a6096a04100d008f2d9f0d3988a2a4859b5992aca0a" }, "analysis": { - "version": "9ba2b71dc1b8018ab7feb59b028713beeb314f1b", + "version": "fd61b10d24ba2aaabc08f39f53a2cbb7486668cd", "filename": "analysis.tar.gz", - "url": "https://codeload.github.com/fliaping/WeChatDataAnalysis/tar.gz/9ba2b71dc1b8018ab7feb59b028713beeb314f1b", - "sha256": "9a5465bca8fd7b3ced050e7daff6dce50949ae4dbcceb1b854cb0627010c5f99" + "url": "https://codeload.github.com/fliaping/WeChatDataAnalysis/tar.gz/fd61b10d24ba2aaabc08f39f53a2cbb7486668cd", + "sha256": "b8857c97cf903ce2ac090aa85185caec499dc84ff8930db58a4347247da88381" }, "node": { "version": "24.16.0", @@ -34,7 +34,11 @@ "url": "https://github.com/cloudflare/cloudflared/releases/download/2026.10.1/cloudflared-linux-amd64", "sha256": "3bfc539f45d2620c71debb7a86be0efa737ed5ccbad9eb85c787116900e5c586" }, - "harness": {"version": "0.1.1-rc.2", "package": "@deepseek-ai/dsh", "integrity": "runtime/harness/package-lock.json"}, + "harness": { + "version": "0.2.1-rc.2", + "package": "@deepseek-ai/dsh", + "integrity": "runtime/harness/package-lock.json" + }, "selkies": { "version": "2.0.0", "note": "bundled by the LinuxServer.io baseimage-selkies debiantrixie image" From ea5be61b7502c13ee1df4ecb0511cb0a97dadfb0 Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 14:36:03 +0800 Subject: [PATCH 02/10] Pin watcher registration recovery and record validated coverage --- docs/workspace-validation.md | 4 ++-- versions.lock.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index 79e9ea8..6eb961d 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -7,11 +7,11 @@ not committed. The preceding baseline image was ## October 20 event-sync and Harness update -- Analysis fork pinned to `fd61b10d24ba2aaabc08f39f53a2cbb7486668cd`: Linux +- Analysis fork pinned to `f9be0a3a1bd0e9abfff5d1563ea29dbb35f28b24`: Linux DB/WAL notifications debounce for 150 ms, with a two-second fallback scan. Revision SSE checks run every 200 ms. The target is 1–3 seconds after a stable database write; decryption duration still limits actual latency. -- Passed 69 targeted analysis tests and 91 integration/source tests. The +- Passed 70 targeted analysis tests and 91 integration/source tests. The filesystem test exercises writes and rename replacement, while existing tests cover authenticated decryption, WAL recovery and publication failures. - DSH `0.2.1-rc.2` was the official npm latest on October 20, 2026. A fresh diff --git a/versions.lock.json b/versions.lock.json index f46f95f..457a92f 100644 --- a/versions.lock.json +++ b/versions.lock.json @@ -11,10 +11,10 @@ "sha256": "b7d0f8d53e9f648bc2c77a6096a04100d008f2d9f0d3988a2a4859b5992aca0a" }, "analysis": { - "version": "fd61b10d24ba2aaabc08f39f53a2cbb7486668cd", + "version": "f9be0a3a1bd0e9abfff5d1563ea29dbb35f28b24", "filename": "analysis.tar.gz", - "url": "https://codeload.github.com/fliaping/WeChatDataAnalysis/tar.gz/fd61b10d24ba2aaabc08f39f53a2cbb7486668cd", - "sha256": "b8857c97cf903ce2ac090aa85185caec499dc84ff8930db58a4347247da88381" + "url": "https://codeload.github.com/fliaping/WeChatDataAnalysis/tar.gz/f9be0a3a1bd0e9abfff5d1563ea29dbb35f28b24", + "sha256": "54948cb2eb52135e1a91a3361bc7bab8d7dd0ea58ddc53f84590ca81194af884" }, "node": { "version": "24.16.0", From d248e9875f8421e34369cb90380f7b79381159de Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 15:10:50 +0800 Subject: [PATCH 03/10] Preserve native Harness transport channels behind subpath proxy --- docs/workspace-validation.md | 7 ++++++- root/scripts/workspace/harness-proxy.mjs | 9 ++++++--- scripts/smoke-test.sh | 24 ++++++++++++++++++++--- tests/test_harness_proxy.py | 25 ++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index 6eb961d..3bcbe38 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -11,7 +11,7 @@ not committed. The preceding baseline image was DB/WAL notifications debounce for 150 ms, with a two-second fallback scan. Revision SSE checks run every 200 ms. The target is 1–3 seconds after a stable database write; decryption duration still limits actual latency. -- Passed 70 targeted analysis tests and 91 integration/source tests. The +- Passed 70 targeted analysis tests and 92 integration/source tests. The filesystem test exercises writes and rename replacement, while existing tests cover authenticated decryption, WAL recovery and publication failures. - DSH `0.2.1-rc.2` was the official npm latest on October 20, 2026. A fresh @@ -19,6 +19,11 @@ not committed. The preceding baseline image was twelve tools, including send preparation. No tool call or model request was made. The proxy now supports signed browser sessions, scoped cookies and the current settings RPC while preserving foreign-origin rejection. +- Browser verification against the official DSH bundle found that logical + RPC channels must not be rewritten by the subpath proxy. JavaScript now + passes through unchanged; a regression test exercises channel validation + and one-time base-URI resolution. A fresh browser profile connects and + displays model configuration without making a model request. - Current-chat proof derives the session-name field from the installed original WeChat ELF metadata and handler code. It reads process memory without attaching a debugger or writing memory. Only an exact first-two- diff --git a/root/scripts/workspace/harness-proxy.mjs b/root/scripts/workspace/harness-proxy.mjs index abbacb6..b74325e 100644 --- a/root/scripts/workspace/harness-proxy.mjs +++ b/root/scripts/workspace/harness-proxy.mjs @@ -119,7 +119,7 @@ function upstreamPath(requestUrl = "/") { } function rewriteBrowserPaths(value) { - const roots = "(?:(?:assets|plugins|api)(?:/|(?=[^A-Za-z0-9_.-]))|manifest\\.webmanifest|favicon\\.svg)"; + const roots = "(?:(?:assets|plugins)(?:/|(?=[^A-Za-z0-9_.-]))|manifest\\.webmanifest|favicon\\.svg)"; const quotedRoot = new RegExp( "([\"'\\u0060])/(?=" + roots + ")", "gu", @@ -143,8 +143,11 @@ function browserCompatibility(value, headers) { function isTextResponse(headers) { const type = String(headers["content-type"] || "").toLowerCase(); - // API JSON and SSE carry user messages; rewriting those changes content. - return /(?:text\/html|text\/css|javascript|manifest)/u.test(type); + // DSH resolves transports against document.baseURI itself. JavaScript also + // contains logical RPC channels such as /api; prefixing those breaks both + // channel validation and WebSocket URL resolution. Pass bundles through. + // API JSON and SSE carry user messages and must remain unchanged too. + return /(?:text\/html|text\/css|manifest)/u.test(type); } const child = spawn( diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh index 769a7f9..7929ffd 100755 --- a/scripts/smoke-test.sh +++ b/scripts/smoke-test.sh @@ -32,7 +32,10 @@ for relative in ['.local/share/com.alpha.guard', '.local/state/alpha']: PY # The base image hands PASSWORD to `openssl passwd`, which reads a leading "-" as an option. export PASSWORD="$(python3 -c 'import secrets; print("w" + secrets.token_urlsafe(24))')" +# Chromium requires private temporary-directory modes, including under nested +# fuse-overlayfs. DSH also loads native addons from its temporary cache. docker run -d --name "$container" --shm-size=1gb --cap-add SYS_PTRACE \ + --tmpfs /tmp:rw,exec,nosuid,nodev,mode=1777 \ -e CUSTOM_USER=weharbor -e PASSWORD -e PUID="${WEHARBOR_TEST_UID:-1000}" -e PGID="${WEHARBOR_TEST_GID:-1000}" \ -e TZ=Asia/Shanghai -v "$test_directory/config:/config" \ -p 127.0.0.1::3000 "$image" >/dev/null @@ -51,7 +54,7 @@ if [[ "$ready" != true ]]; then fi export SMOKE_URL="http://$(docker port "$container" 3000/tcp | head -n 1)" python3 - <<'PY' -import base64, http.cookiejar, json, os, struct, time, urllib.error, urllib.request +import base64, html, http.cookiejar, json, os, re, struct, time, urllib.error, urllib.parse, urllib.request url = os.environ['SMOKE_URL'] + '/' try: urllib.request.urlopen(url, timeout=5) @@ -80,7 +83,13 @@ assert b'/analysis/_nuxt/' in analysis wait_for('analysis/agreement') wait_for('workspace/health') assistant = wait_for('assistant/', lambda r, b: r.status == 200 and b']+src="([^"]+)"', assistant.decode()) +assert any('/assets/' in path for path in scripts), 'DSH entry script is absent' +for path in scripts: + asset_url = urllib.parse.urljoin(url + 'assistant/', html.unescape(path)) + assert asset_url.startswith(url + 'assistant/'), asset_url + with browser.open(urllib.request.Request(asset_url, headers=headers), timeout=15) as response: + assert response.status == 200 and response.read(), asset_url assert b'crypto.randomUUID' in assistant # Exercise an actual same-origin RPC through the proxy, not only the HTML shell. assistant_rpc = url + 'assistant/api/settings/describe' @@ -211,6 +220,12 @@ with urllib.request.urlopen(request, timeout=5) as response: tools = json.load(response)['result']['tools'] assert len(tools) == 12 print('Authenticated MCP exposes twelve tools') +identity = subprocess.run(['s6-setuidgid', 'abc', 'sudo', '-n', + '/usr/local/bin/weharbor-capture-key'], input=json.dumps( + {'mode': 'session', 'account': 'synthetic'}), + text=True, capture_output=True, check=True, timeout=20) +assert json.loads(identity.stdout) == {'verified': False, 'error': 'SESSION_IDENTITY_UNAVAILABLE'} +print('Fixed privileged identity helper rejects an account absent from the fresh desktop') for relative in ['.local/share/com.alpha.guard', '.local/state/alpha']: root = Path('/config') / relative directory = root / 'weharbor-permission-fixture' @@ -281,6 +296,8 @@ for executable in Path('/proc').glob('[0-9]*/exe'): assert clients, 'WeChat did not restart' print('Window helper, main-only maximize defaults and repeatable restart passed') PY +# Docker may allocate a different ephemeral host port when restarting. +export SMOKE_URL="http://$(docker port "$container" 3000/tcp | head -n 1)" python3 - <<'PY' import base64, http.cookiejar, json, os, time, urllib.error, urllib.request url = os.environ['SMOKE_URL'] + '/assistant/' @@ -292,7 +309,8 @@ browser = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(http.co for attempt in range(90): try: with browser.open(urllib.request.Request(url, headers=headers), timeout=5) as response: - assert b'/assistant/assets/' in response.read() + page = response.read() + assert b'crypto.randomUUID' in page and b'assets/' in page payload = {'type':'client-request', 'rpcId':'weharbor-restart', 'method':'settings/describe', 'payload':{'args':{}}} request = urllib.request.Request(url + 'api/settings/describe', diff --git a/tests/test_harness_proxy.py b/tests/test_harness_proxy.py index 2b0bc62..5ab40c3 100644 --- a/tests/test_harness_proxy.py +++ b/tests/test_harness_proxy.py @@ -14,6 +14,11 @@ import urllib.request ROOT = Path(__file__).resolve().parents[1] +TRANSPORT_JS = '''export const channel = "/api"; +export const socketPath = "/api/remote.mux"; +export const resolveSocket = base => new URL(socketPath.slice(1), base).href; +export const callPath = endpoint => `${channel}/${endpoint}`.slice(1); +''' FAKE_DSH = r''' import http from 'node:http'; const args = process.argv.slice(2); @@ -28,6 +33,10 @@ res.end(); return; } if (!req.headers.cookie?.includes('dsh-auth-test=signed')) { res.writeHead(401); res.end(); return; } + if (url.pathname === '/assets/transport.js') { + res.setHeader('content-type', 'text/javascript'); + res.end(process.env.TEST_TRANSPORT_JS); return; + } if (url.pathname === '/api/message') { res.setHeader('content-type', 'application/json'); res.end(JSON.stringify({text: '/api/private user content'})); return; @@ -68,6 +77,7 @@ def setUpClass(cls): ['node', str(ROOT / 'root/scripts/workspace/harness-proxy.mjs'), '--port', str(cls.port), '--patch', str(directory / 'patch.yml')], env=dict(os.environ, DSH_BIN=str(fake), DSH_WORKSPACE=str(directory), + TEST_TRANSPORT_JS=TRANSPORT_JS, DSH_WEB_PROXY_PREFIX='/assistant', DSH_WEB_UPSTREAM_PORT=str(upstream)), stdout=cls.log, stderr=cls.log, start_new_session=True) cls.jar = http.cookiejar.CookieJar() @@ -106,6 +116,21 @@ def test_api_requires_cookie_and_preserves_message_content(self): with self.browser.open(self.base + 'api/message') as response: self.assertEqual(response.read(), b'{"text":"/api/private user content"}') + def test_native_transport_keeps_logical_channel_and_resolves_prefix_once(self): + with self.browser.open(self.base + 'assets/transport.js') as response: + source = response.read().decode() + self.assertEqual(source, TRANSPORT_JS) + # Exercise the DSH browser transport's channel and base-URI contract. + script = source.replace('export ', '') + f''' +import assert from 'node:assert/strict'; +assert.match(channel, /^\\/[A-Za-z0-9._~-]+$/); +assert.equal(resolveSocket({self.base!r}), {self.base + 'api/remote.mux'!r}); +assert.equal(new URL(callPath('settings/describe'), {self.base!r}).href, + {self.base + 'api/settings/describe'!r}); +''' + subprocess.run(['node', '--input-type=module', '-e', script], check=True, + capture_output=True, text=True, timeout=5) + def test_cross_origin_and_cross_site_cannot_bootstrap(self): for headers in [{'Origin': 'https://evil.test'}, {'Sec-Fetch-Site': 'cross-site'}]: with self.assertRaises(urllib.error.HTTPError) as failure: From 2601767acd2d54de60c270ea7731d598f54ddb5f Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 15:25:14 +0800 Subject: [PATCH 04/10] Record final NAS rollout and browser transport validation --- docs/workspace-validation.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index 3bcbe38..a4a8d4b 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -24,6 +24,22 @@ not committed. The preceding baseline image was passes through unchanged; a regression test exercises channel validation and one-time base-URI resolution. A fresh browser profile connects and displays model configuration without making a model request. +- Final image `sha256:b8fa1b571a93db07da9513678854382552722709c8bc55d7232fd1dfd36a10f8` + was built from application revision `d248e9875f8421e34369cb90380f7b79381159de`. + Fresh-profile smoke tests passed locally and on the NAS, including restart, + browser authentication, origin rejection, MCP discovery and unchanged + original WeChat/Alpha package files. The existing-profile container was + replaced with this image and reports healthy. +- Production checks show filesystem-event monitoring with a two-second + fallback, SSE ready, 26 synchronized databases and zero failed accounts. + The actual NAS browser connects without a reconnect banner or console + errors, and opens the API-key form. No key or model was configured. The + Harness MCP plugin is active and exposes twelve tools. Protected integration + state fingerprints match the backup. +- An isolated 8 KiB encrypted DB/WAL fixture on the NAS completed three + authenticated decrypt/validated snapshot/SSE updates in 403 ms each. This + verifies the synthetic event path; it does not establish latency for real + messages or larger databases. - Current-chat proof derives the session-name field from the installed original WeChat ELF metadata and handler code. It reads process memory without attaching a debugger or writing memory. Only an exact first-two- @@ -118,6 +134,10 @@ selects the locally built image without pulling it. The original profile volume is preserved. Before deploying, the original Compose configuration and private container metadata were backed up, and the previous image was tagged locally. Keep that backup and image until the pending account/model/network checks pass. +The event-sync rollout backup is `event-sync-20261020-064151` under the private +deployment backup directory. The preceding image remains tagged +`weharbor:before-fast-sync-20261020`; the intermediate Harness integration +image is also retained as `weharbor:before-harness-fix-20261020`. No combined image was published. Upstream analysis licensing and the vendor redistribution conditions in `THIRD_PARTY_NOTICES.md` still require clarification From 22b9f4b2c4b42c1dc294c39ea588d19dc5be8e87 Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 16:06:28 +0800 Subject: [PATCH 05/10] fix: verify painted WeChat send control and Qt accessibility interfaces --- Dockerfile | 1 + docs/workspace.md | 6 ++ root/scripts/workspace/desktop.py | 70 +++++++++----- root/scripts/workspace/visual_send.py | 131 ++++++++++++++++++++++++++ tests/test_visual_send.py | 28 ++++++ tests/test_workspace.py | 35 +++++++ 6 files changed, 247 insertions(+), 24 deletions(-) create mode 100644 root/scripts/workspace/visual_send.py create mode 100644 tests/test_visual_send.py diff --git a/Dockerfile b/Dockerfile index d84a4eb..aeec7cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -58,6 +58,7 @@ RUN test "${TARGETARCH:-amd64}" = amd64 \ dbus-x11 gnome-keyring libsecret-1-0 inotify-tools stalonetray \ python3-dbus python3-xlib python3-gi gir1.2-atspi-2.0 at-spi2-core \ python3-venv python3-dev build-essential gdb sudo \ + tesseract-ocr tesseract-ocr-chi-sim \ libatomic1 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 \ libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 libxcb-xkb1 \ libxkbcommon-x11-0 libnss3 libgbm1 libasound2t64 \ diff --git a/docs/workspace.md b/docs/workspace.md index 91d66a3..8e095e1 100644 --- a/docs/workspace.md +++ b/docs/workspace.md @@ -79,6 +79,12 @@ revision, desktop checks and persistent receipt. Scheduling uses the same checks and requires the selected target chat to remain ready at the due time. Preparation alone never schedules a send: commit activates a future action. The independent AT-SPI driver does not patch WeChat or copy Qibox code/offsets. +Qt's search editor is disambiguated inside the titled chat pane. For the painted +Send button absent from AT-SPI, local Tesseract OCR must recognize one complete +Send caption with at least 80% confidence per word inside the composer's right +toolbar region and enabled green button. X11 geometry corrects Qt high-DPI +coordinates, and a moved or changed window prevents clicking. No screenshot or +chat text is sent to an OCR service. It verifies the open account from process file descriptors. A fixed root helper reads the original WeChat process without writing or injecting code. Qt metadata in the installed ELF identifies the session-loaded handler and derives the diff --git a/root/scripts/workspace/desktop.py b/root/scripts/workspace/desktop.py index c1c8a89..1921a22 100644 --- a/root/scripts/workspace/desktop.py +++ b/root/scripts/workspace/desktop.py @@ -101,30 +101,47 @@ def _identity(self, binding): or evidence.get('username') != binding['username']): raise DesktopError('CHAT_IDENTITY_UNVERIFIED: unlock WeChat and open the exact target chat') - def _controls(self, binding): + def _controls(self, binding, require_send=False): self._account(binding['account']) nodes = self.nodes() editors = [n for n in nodes if n.get_state_set().contains(self.a.StateType.EDITABLE) and n.get_state_set().contains(self.a.StateType.MULTI_LINE) and self._visible(n)] sends = [n for n in nodes if n.get_name() in ['发送', 'Send'] and n.get_role_name() in ['button', 'push button'] and self._visible(n)] - if len(editors) != 1 or len(sends) != 1: - raise DesktopError('CHAT_CONTROLS_AMBIGUOUS') self._identity(binding) # Use the chat pane containing the editor, not the contact sidebar or # invisible cached Qt widgets. The read-only Qt session identity must # match the exact account/username as well as a unique visible DB title. - pane = editors[0].get_parent() - for _ in range(8): - if pane is None or pane.get_role_name() in ['application', 'frame']: - break - subtree = self._subtree(pane) - names = {n.get_name().strip() for n in subtree if self._visible(n) and n.get_name()} - title = any(name in names for name in binding['names']) - if sends[0] in subtree and title: - self._foreground(editors[0]) - return editors[0], sends[0] - pane = pane.get_parent() + matches = [] + for editor in editors: + pane = editor.get_parent() + for _ in range(8): + if pane is None or pane.get_role_name() in ['application', 'frame']: + break + subtree = self._subtree(pane) + names = {n.get_name().strip() for n in subtree if self._visible(n) and n.get_name()} + title = any(name in names for name in binding['names']) + pane_editors = [n for n in editors if n in subtree] + pane_sends = [n for n in sends if n in subtree] + # Qt marks the search box MULTI_LINE too, and omits the disabled + # Send control while the composer is empty. A unique editor in + # the titled chat pane plus its composer toolbar is required. + toolbar = {'发送收藏', '发送文件'} <= names or {'Send Favorites', 'Send File'} <= names + if title and len(pane_editors) == 1 and (len(pane_sends) == 1 or (not require_send and not pane_sends and toolbar)): + matches.append((editor, pane_sends[0] if pane_sends else None)) + break + if title and len(pane_editors) == 1 and not pane_sends and toolbar and require_send: + self._foreground(editor) + try: + from visual_send import find_send + matches.append((editor, find_send(self, editor, pane))) + except Exception: + raise DesktopError('SEND_VISUAL_UNVERIFIED: no unique visible Send button') from None + break + pane = pane.get_parent() + if len(matches) == 1: + self._foreground(matches[0][0]) + return matches[0] raise DesktopError('CHAT_IDENTITY_UNVERIFIED: the verified session needs its unique contact title in the visible chat pane') def _foreground(self, editor): @@ -150,32 +167,37 @@ def _foreground(self, editor): def ready(self, binding): editor, _ = self._controls(binding) - text = editor.get_text_iface() - if text.get_text(0, -1): + if self.a.Text.get_text(editor, 0, -1): raise DesktopError('EXISTING_DRAFT: preserve the user draft') return True def send(self, binding, text, before_click): editor, _ = self._controls(binding) - if editor.get_text_iface().get_text(0, -1): + if self.a.Text.get_text(editor, 0, -1): raise DesktopError('EXISTING_DRAFT') - if not editor.get_component_iface().grab_focus(): + if not self.a.Component.grab_focus(editor): raise DesktopError('EDITOR_FOCUS_FAILED') - editor.get_editable_text_iface().set_text_contents(text) - editor2, send = self._controls(binding) - if editor2 != editor or editor.get_text_iface().get_text(0, -1) != text: + if not self.a.EditableText.set_text_contents(editor, text): + raise DesktopError('EDITOR_WRITE_FAILED') + editor2, send = self._controls(binding, require_send=True) + if editor2 != editor or self.a.Text.get_text(editor, 0, -1) != text: raise DesktopError('CHAT_OR_DRAFT_CHANGED') # Persist submitted before any action can reach WeChat. An interrupted # click is uncertain and must never be retried automatically. before_click() + from visual_send import VisualSend, click_send + if isinstance(send, VisualSend): + self._foreground(editor) + click_send(send) + return {'submitted': True} action = send.get_action_iface() - if action and action.get_n_actions() == 1: - if not action.do_action(0): + if action and self.a.Action.get_n_actions(send) == 1: + if not self.a.Action.do_action(send, 0): raise DesktopError('SEND_ACTION_UNCERTAIN') else: from Xlib import X, display from Xlib.ext import xtest - box = send.get_component_iface().get_extents(self.a.CoordType.SCREEN) + box = self.a.Component.get_extents(send, self.a.CoordType.SCREEN) if box.width <= 0 or box.height <= 0: raise DesktopError('SEND_BOUNDS_INVALID') d = display.Display() diff --git a/root/scripts/workspace/visual_send.py b/root/scripts/workspace/visual_send.py new file mode 100644 index 0000000..448f440 --- /dev/null +++ b/root/scripts/workspace/visual_send.py @@ -0,0 +1,131 @@ +"""Local OCR for WeChat's painted Send control, scoped to a verified composer.""" +import csv +import io +import subprocess +from dataclasses import dataclass + + +@dataclass(frozen=True) +class VisualSend: + x: int + y: int + width: int + height: int + window: int + geometry: tuple + + +def send_label(tsv): + """Accept one complete, confident line; never match '发送文件'.""" + lines = {} + try: + for row in csv.DictReader(io.StringIO(tsv), delimiter=' '): + if row['level'] != '5' or not row['text'].strip(): + continue + key = tuple(row[k] for k in ['page_num', 'block_num', 'par_num', 'line_num']) + lines.setdefault(key, []).append((row['text'].strip(), float(row['conf']))) + matches = [words for words in lines.values() + if ''.join(word for word, _ in words) in ['发送', 'Send'] + and all(conf >= 80 for _, conf in words)] + return len(matches) == 1 and len(lines) == 1 + except (KeyError, TypeError, ValueError): + return False + + +def active_window(connection): + from Xlib import X + root = connection.screen().root + prop = root.get_full_property(connection.intern_atom('_NET_ACTIVE_WINDOW'), X.AnyPropertyType) + if prop is None or not len(prop.value): + raise ValueError('No active window') + window = connection.create_resource_object('window', int(prop.value[0])) + geometry = window.get_geometry() + position = root.translate_coords(window, 0, 0) + return window.id, (position.x, position.y, geometry.width, geometry.height) + + +def find_send(driver, editor, pane): + from PIL import Image, ImageGrab, ImageOps + from Xlib import display + frame = editor + while frame is not None and frame.get_role_name() != 'frame': + frame = frame.get_parent() + if frame is None: + raise ValueError('No chat frame') + bounds = driver.a.Component.get_extents(frame, driver.a.CoordType.SCREEN) + connection = display.Display() + try: + window, geometry = active_window(connection) + finally: + connection.close() + x, y, width, height = geometry + sx, sy = width / bounds.width, height / bounds.height + if not (.5 <= sx <= 4 and abs(sx - sy) < .02): + raise ValueError('Inconsistent desktop scaling') + eb = driver.a.Component.get_extents(editor, driver.a.CoordType.SCREEN) + regions = set() + for toolbar in driver._subtree(pane): + if toolbar.get_role_name() != 'tool bar' or not driver._visible(toolbar): + continue + tb = driver.a.Component.get_extents(toolbar, driver.a.CoordType.SCREEN) + if tb.y < eb.y + eb.height - 2 or tb.width < eb.width * .8: + continue + for node in driver._subtree(toolbar): + if node.get_role_name() != 'filler' or not driver._visible(node): + continue + r = driver.a.Component.get_extents(node, driver.a.CoordType.SCREEN) + if (20 <= r.width < tb.width / 3 and r.x > tb.x + tb.width * .6 + and tb.y <= r.y and r.y + r.height <= tb.y + tb.height + and r.x + r.width <= tb.x + tb.width): + regions.add((r.x, r.y, r.width, r.height)) + screenshot = ImageGrab.grab() + candidates = [] + for rx, ry, rw, rh in regions: + box = (round(x + (rx - bounds.x) * sx), round(y + (ry - bounds.y) * sy), + round(x + (rx + rw - bounds.x) * sx), round(y + (ry + rh - bounds.y) * sy)) + if (box[0] < 0 or box[1] < 0 or box[2] > screenshot.width or box[3] > screenshot.height + or not (0 < box[2] - box[0] <= 1000 and 0 < box[3] - box[1] <= 300)): + continue + image = screenshot.crop(box).convert('RGB') + pixels = image.tobytes() + mask = Image.new('L', image.size) + mask.putdata([255 if g > 100 and g > r * 1.3 and g > b * 1.15 else 0 + for r, g, b in zip(pixels[::3], pixels[1::3], pixels[2::3])]) + green = mask.getbbox() + if green is None: + continue + left, top, right, bottom = green + bw, bh = right - left, bottom - top + if not (1.2 <= bw / bh <= 4 and bw >= 30 * sx and bh >= 18 * sy): + continue + # Trim rounded corners before thresholding the white button caption. + inset = max(2, round(4 * sx)) + caption = image.crop((left + inset, top + inset, right - inset, bottom - inset)) + caption = caption.convert('L').point(lambda p: 0 if p > 210 else 255) + caption = ImageOps.expand(caption, border=12, fill=255) + caption = caption.resize((caption.width * 2, caption.height * 2)) + encoded = io.BytesIO() + caption.save(encoded, format='PNG') + result = subprocess.run(['tesseract', 'stdin', 'stdout', '-l', 'chi_sim+eng', '--psm', '6', 'tsv'], + input=encoded.getvalue(), capture_output=True, check=True, timeout=5) + if send_label(result.stdout.decode()): + candidates.append(VisualSend(box[0] + left, box[1] + top, bw, bh, window, geometry)) + candidates = list(dict.fromkeys(candidates)) + if len(candidates) != 1: + raise ValueError('No unique visible Send caption') + return candidates[0] + + +def click_send(target): + from Xlib import X, display + from Xlib.ext import xtest + connection = display.Display() + try: + if active_window(connection) != (target.window, target.geometry): + raise ValueError('Chat window moved or changed') + xtest.fake_input(connection, X.MotionNotify, x=target.x + target.width // 2, y=target.y + target.height // 2) + xtest.fake_input(connection, X.ButtonPress, 1) + xtest.fake_input(connection, X.ButtonRelease, 1) + connection.sync() + finally: + connection.close() diff --git a/tests/test_visual_send.py b/tests/test_visual_send.py new file mode 100644 index 0000000..86641d4 --- /dev/null +++ b/tests/test_visual_send.py @@ -0,0 +1,28 @@ +import importlib.util +import sys +import unittest +from pathlib import Path + +path = Path(__file__).resolve().parents[1] / 'root/scripts/workspace/visual_send.py' +spec = importlib.util.spec_from_file_location('visual_send', path) +visual_send = importlib.util.module_from_spec(spec) +sys.modules['visual_send'] = visual_send +spec.loader.exec_module(visual_send) + + +class SendCaptionTests(unittest.TestCase): + def tsv(self, words): + header = 'level\tpage_num\tblock_num\tpar_num\tline_num\tword_num\tleft\ttop\twidth\theight\tconf\ttext\n' + return header + ''.join('5\t1\t1\t1\t1\t%d\t0\t0\t10\t10\t%s\t%s\n' % (i, conf, word) + for i, (word, conf) in enumerate(words, 1)) + + def test_exact_chinese_split_caption_and_english(self): + self.assertTrue(visual_send.send_label(self.tsv([('发', 93.3), ('送', 93.2)]))) + self.assertTrue(visual_send.send_label(self.tsv([('Send', 96)]))) + + def test_low_confidence_and_other_send_actions_are_rejected(self): + for words in [[('发', 4.6), ('送', 81)], [('发送', 99), ('文件', 99)], + [('发送收藏', 99)], [('Send', 99), ('File', 99)], [('发送', 99), ('发送', 99)]]: + with self.subTest(words=words): + self.assertFalse(visual_send.send_label(self.tsv(words))) + self.assertFalse(visual_send.send_label('invalid')) diff --git a/tests/test_workspace.py b/tests/test_workspace.py index e5d6490..a9218b3 100644 --- a/tests/test_workspace.py +++ b/tests/test_workspace.py @@ -279,3 +279,38 @@ def test_visible_unique_title_is_still_required_after_memory_identity(self): driver = self.driver([]) driver._identity = lambda _: (_ for _ in ()).throw(desktop.DesktopError('wrong session')) with self.assertRaises(desktop.DesktopError): driver._controls(binding) + + def test_qt_search_editor_and_disabled_send_are_not_ambiguous(self): + binding = {'account':'a','username':'target','names':['Unique Contact']} + d = self.driver([]) + frame = d.nodes()[0] + chat = frame.children[0] + editor, send = chat.children[:2] + chat.children.remove(send) + for name in ['发送收藏', '发送文件']: + child = self.Node(name, 'button', ['show']); child.parent = chat + chat.children.append(child) + search = self.Node(role='text', states=['show','edit','multi']) + search.parent = frame; frame.children.append(search) + self.assertEqual(d._controls(binding), (editor, None)) + with self.assertRaises(desktop.DesktopError): + d._controls(binding, require_send=True) + chat.children.append(send) + self.assertEqual(d._controls(binding, require_send=True), (editor, send)) + + def test_two_composers_in_the_titled_pane_fail_closed(self): + d = self.driver([]) + chat = d.nodes()[1] + extra = self.Node(states=['show','edit','multi']); extra.parent = chat + chat.children.append(extra) + with self.assertRaises(desktop.DesktopError): + d._controls({'account':'a','username':'target','names':['Unique Contact']}) + + def test_text_interface_uses_gi_static_dispatch(self): + d = self.driver([]) + d.a.Text = SimpleNamespace(get_text=lambda node, start, end: '') + binding = {'account':'a','username':'target','names':['Unique Contact']} + self.assertTrue(d.ready(binding)) + d.a.Text.get_text = lambda node, start, end: 'existing draft' + with self.assertRaisesRegex(desktop.DesktopError, 'EXISTING_DRAFT'): + d.ready(binding) From 8223ce5634ef2b7e945009d7f83d0a080299876e Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 16:19:36 +0800 Subject: [PATCH 06/10] test: record verified Qt send rollout and prevent moved-window clicks --- docs/workspace-validation.md | 63 ++++++++++++++++++++++++++++++------ tests/test_visual_send.py | 14 ++++++++ 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index a4a8d4b..fe3dc1c 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -5,6 +5,47 @@ contains counts and status only; keys, chat contents and account identities are not committed. The preceding baseline image was `sha256:5e7b6ef5b43e12e135251d23f51076e6b81a540c507a43e2c59584f67ceb5d7c`. +## October 20 unlocked-chat validation + +- After the owner unlocked WeChat and selected the authorized one-to-one chat, + original-process session proof and the unique database contact title matched. + Qt marks both search and composer as multiline, so the driver now selects the + unique editor within the titled chat pane. GI text/component/action calls use + explicit interface dispatch to avoid Accessible method-name collisions. +- The installed WeChat paints Send without an AT-SPI button. The driver now + recognizes the enabled caption locally with Tesseract, scoped to the right + composer toolbar and green button. The two Chinese words scored above 93% + in the deployment probe; acceptance requires at least 80% per word. X11/Qt + frame geometry corrects the observed 2x DPI scale, and movement cancels clicks. +- One initial attempt stopped before submission when Send was absent from + AT-SPI. Its action remains failed. Recovery checked that failure, exact owned + test draft, session identity and visible Send, and cleared only that draft. + No mouse send event occurred for that failed attempt. +- All three authorized marker messages then completed through HTTP prepare and + commit. Each has a unique new self-message database receipt and occurs once + in the selected chat. Replaying each completed commit kept its sent status + and did not add a message. The composer is empty. A mismatched username was + rejected by the current-session proof before typing. +- From observing the persisted submitted state to API visibility, bounded + probes measured 1,791 ms, 1,735 ms and 2,082 ms. Polling adds uncertainty of + about one 100 ms interval. The first two appeared before the commit receipt's + two-second refresh; the third can include that refresh. These are outgoing + self-message visibility checks, not independent incoming-message latency, + recipient delivery or read receipts. +- Passed 98 integration/source tests, including low-confidence or incorrect + Send captions and cancellation before all mouse events when a window moves. + Image `sha256:cd573b40b1a19509e0a78397d9cdc479f86cd72aa1453e2b7ed1e5712661515e` + was built from application revision `22b9f4b2c4b42c1dc294c39ea588d19dc5be8e87`. + Its local fresh-profile smoke test passed, including restart, authentication, + MCP discovery, app switching and unchanged original vendor package files. + The image's English and Simplified Chinese OCR data are installed. +- The production driver was updated in place and only the workspace service + restarted, preserving the unlocked WeChat process. The running container + remains based on image `b8fa1b571a93`; its two driver source hashes and OCR + dependencies match the new image. The full new image was loaded on the NAS + and `compose.workspace.yml` now selects `weharbor:realtime-20261020-qt` for + the next recreation. No container recreation occurred in this validation. + ## October 20 event-sync and Harness update - Analysis fork pinned to `f9be0a3a1bd0e9abfff5d1563ea29dbb35f28b24`: Linux @@ -46,9 +87,8 @@ not committed. The preceding baseline image was component version match is eligible; unsupported layouts fail closed. Live QObject ownership, unique page, stable reads, account, username and visible title are checked before UI actions. -- The production desktop still asks for phone confirmation and exposes no - Send control. No test message has been sent. Real delivery and newly received - message latency require an unlocked account and the selected authorized chat. +- At the earlier image rollout the desktop asked for phone confirmation. The + later unlocked-chat results above supersede that pending send check. ## October 20 earlier baseline @@ -111,12 +151,10 @@ The previous image remains tagged locally as `weharbor:before-realtime-20261020` ## Pending deployment checks -The running desktop exposes 169 accessibility nodes and asks for phone -confirmation. No real message was prepared or sent. The independent AT-SPI -driver still needs validation against a logged-in real chat, with an explicitly -authorized recipient and text. It currently requires that target chat to be -selected; it does not automatically navigate arbitrary chats or attachments. -Synthetic receipts do not establish real recipient delivery. +The driver has now passed the authorized real-chat tests above. It requires +that target chat to be selected; it does not automatically navigate arbitrary +chats or attachments. Independent incoming-message latency, recipient delivery +and read receipts remain unverified. Model dialogue awaits Harness model credentials. Tailscale login and named Cloudflare Tunnel credentials/DNS await the owner's configuration. Their @@ -138,6 +176,13 @@ The event-sync rollout backup is `event-sync-20261020-064151` under the private deployment backup directory. The preceding image remains tagged `weharbor:before-fast-sync-20261020`; the intermediate Harness integration image is also retained as `weharbor:before-harness-fix-20261020`. +The Qt Send update backup is `qt-send-20261020-081901` in that directory, with +the preceding override and a hash-only image/source manifest. Its base image +is retained as `weharbor:before-qt-send-20261020`. The in-place desktop driver +backup is `/config/.local/share/weharbor/desktop-before-qt-controls.py` inside +the production container. Recreating from the selected new image preserves the +profile volume but restarts WeChat, so it was staged rather than forced while +the owner's unlocked chat was in use. No combined image was published. Upstream analysis licensing and the vendor redistribution conditions in `THIRD_PARTY_NOTICES.md` still require clarification diff --git a/tests/test_visual_send.py b/tests/test_visual_send.py index 86641d4..18b1351 100644 --- a/tests/test_visual_send.py +++ b/tests/test_visual_send.py @@ -2,6 +2,8 @@ import sys import unittest from pathlib import Path +from types import SimpleNamespace +from unittest.mock import Mock, patch path = Path(__file__).resolve().parents[1] / 'root/scripts/workspace/visual_send.py' spec = importlib.util.spec_from_file_location('visual_send', path) @@ -26,3 +28,15 @@ def test_low_confidence_and_other_send_actions_are_rejected(self): with self.subTest(words=words): self.assertFalse(visual_send.send_label(self.tsv(words))) self.assertFalse(visual_send.send_label('invalid')) + + def test_moved_window_prevents_all_mouse_events(self): + connection = Mock() + xtest = SimpleNamespace(fake_input=Mock()) + modules = {'Xlib': SimpleNamespace(X=SimpleNamespace(), display=SimpleNamespace(Display=lambda: connection)), + 'Xlib.ext': SimpleNamespace(xtest=xtest)} + target = visual_send.VisualSend(100, 200, 50, 30, 42, (0, 0, 1200, 800)) + with patch.dict(sys.modules, modules), patch.object(visual_send, 'active_window', return_value=(42, (50, 0, 1200, 800))): + with self.assertRaisesRegex(ValueError, 'moved or changed'): + visual_send.click_send(target) + xtest.fake_input.assert_not_called() + connection.close.assert_called_once() From 4bd9d2df0ded6c1b76c866984ff6e3f53d5575cd Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 18:02:09 +0800 Subject: [PATCH 07/10] Navigate verified WeChat chats and recover blocked actions safely --- docs/workspace-validation.md | 22 ++- docs/workspace.md | 22 ++- root/scripts/workspace/actions.py | 64 ++++-- root/scripts/workspace/desktop.py | 75 ++++++- root/scripts/workspace/desktop_navigation.py | 194 +++++++++++++++++++ root/scripts/workspace/reader.py | 9 +- root/scripts/workspace/server.py | 27 ++- root/usr/share/weharbor/workspace/index.html | 3 +- root/usr/share/weharbor/workspace/ui.js | 24 ++- scripts/smoke-test.sh | 5 +- skills/weharbor-api/SKILL.md | 28 ++- tests/test_desktop_navigation.py | 131 +++++++++++++ tests/test_workspace.py | 92 +++++++++ 13 files changed, 654 insertions(+), 42 deletions(-) create mode 100644 root/scripts/workspace/desktop_navigation.py create mode 100644 tests/test_desktop_navigation.py diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index fe3dc1c..a7f766f 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -5,6 +5,22 @@ contains counts and status only; keys, chat contents and account identities are not committed. The preceding baseline image was `sha256:5e7b6ef5b43e12e135251d23f51076e6b81a540c507a43e2c59584f67ceb5d7c`. +## October 20 navigation and recovery validation + +- Passed 117 integration/source tests, covering exact-result navigation, duplicate + titles, exclusion of history/message results, draft and manual-search + preservation, structured recovery, pre-input retry, context cancellation, + expiration during navigation and no retry after attempted composer writes. +- On the unlocked NAS, the new driver opened the authorized target from the + Contacts page and verified its exact original-process session. It cleared only + its own search query. An owned synthetic draft blocked navigation and readiness + checks and remained unchanged; after removing only that draft, readiness + recovered. No message was sent during these navigation/recovery checks. +- MCP now exposes fourteen tools, including read-only desktop readiness and + exact-target navigation. Scheduled transient pre-input failures may recover + for at most five minutes after due time; changed context cancels the action. + Expiry is checked again before editor writes and submission. + ## October 20 unlocked-chat validation - After the owner unlocked WeChat and selected the authorized one-to-one chat, @@ -151,9 +167,9 @@ The previous image remains tagged locally as `weharbor:before-realtime-20261020` ## Pending deployment checks -The driver has now passed the authorized real-chat tests above. It requires -that target chat to be selected; it does not automatically navigate arbitrary -chats or attachments. Independent incoming-message latency, recipient delivery +The driver has now passed the authorized real-chat tests above and exact-target +navigation through the accessible Contacts search results. It does not send +attachments, quoted replies, mentions or forwards. Independent incoming-message latency, recipient delivery and read receipts remain unverified. Model dialogue awaits Harness model credentials. Tailscale login and named diff --git a/docs/workspace.md b/docs/workspace.md index 8e095e1..ff165b2 100644 --- a/docs/workspace.md +++ b/docs/workspace.md @@ -76,8 +76,22 @@ WebSocket traffic; the external browser authentication remains required. Read, search, summarize and suggest replies use message MCP tools. Sending is a separate prepare/commit action with an exact username, idempotency key, context revision, desktop checks and persistent receipt. Scheduling uses the same -checks and requires the selected target chat to remain ready at the due time. +checks and automatically opens and verifies the exact target at the due time. Preparation alone never schedules a send: commit activates a future action. +Only transient failures before a composer write may wait for recovery; scheduled +actions retry every five seconds for at most five minutes after their due time. +An immediate action retains its original 120-second lifetime. Context changes +cancel execution, and any failure after an attempted composer write prevents +automatic retry. Submitted or uncertain actions are never retried. + +The fourteen MCP tools include read-only `wechat_desktop_status` and +`wechat_open_chat`, which opens an exact account/username without typing a +message. The Connections page shows desktop readiness, recovery instructions +and blocked action reasons, with bounded retry and cancellation controls. +Navigation uses only exact labels in accessible Contacts/Groups search results, +never history results. It checks active X11 geometry before clicking and verifies +the original-process session after opening. Search queries are cleared only if +they still exactly match the driver's own input. Manual input is preserved. The independent AT-SPI driver does not patch WeChat or copy Qibox code/offsets. Qt's search editor is disambiguated inside the titled chat pane. For the painted Send button absent from AT-SPI, local Tesseract OCR must recognize one complete @@ -90,8 +104,10 @@ reads the original WeChat process without writing or injecting code. Qt metadata in the installed ELF identifies the session-loaded handler and derives the current session-name field; a live QObject backlink, runtime code checks and stable reads reject stale or racing heap data. Exactly one live typed chat page -must resolve the requested username, and its visible title must uniquely match -the database contact. Account and session are checked again before submission. +must resolve the requested username, and its visible chat title must match +the database contact with a unique composer. A globally unique nickname is not +required because the exact process session supplies identity. Account and session +are checked again before submission. Version eligibility compares the first two numeric components, without a major version ceiling; it never replaces structural validation. No external offset table is copied. Unsupported or ambiguous layouts fail closed. Existing drafts and manual input diff --git a/root/scripts/workspace/actions.py b/root/scripts/workspace/actions.py index 594060e..277dd26 100644 --- a/root/scripts/workspace/actions.py +++ b/root/scripts/workspace/actions.py @@ -7,7 +7,7 @@ import time import uuid from reader import STATE -from desktop import Desktop +from desktop import Desktop, DesktopError def rows(payload, *keys): if isinstance(payload, list): @@ -78,10 +78,40 @@ async def binding(self, account, username, context): if len(target) != 1: raise ValueError('The exact username must resolve to one contact') names = {target[0].get(k) for k in ['displayName', 'remark', 'nickname'] if target[0].get(k)} - unique = [name for name in names if sum(any(c.get(k) == name for k in ['displayName', 'remark', 'nickname']) for c in contacts) == 1] + names = {name.strip() for name in names if isinstance(name, str) and name.strip()} + unique = sorted(name for name in names if sum(any(c.get(k) == name for k in ['displayName', 'remark', 'nickname']) for c in contacts) == 1) fingerprints = list(dict.fromkeys(m.get('content') or m.get('text') for m in rows(context, 'messages', 'items') if isinstance(m.get('content') or m.get('text'), str) and 8 <= len(m.get('content') or m.get('text')) <= 2000)) - return {'account': account, 'username': username, 'names': unique, 'alias': target[0].get('alias'), 'messages': fingerprints} + alias = target[0].get('alias') + if not isinstance(alias, str): + alias = None + return {'account': account, 'username': username, 'names': sorted(names), 'alias': alias, + 'search_queries': list(dict.fromkeys(unique + ([alias] if alias else []) + sorted(names))), + 'messages': fingerprints} + + async def desktop_status(self, account=None, username=None): + if bool(account) != bool(username): + raise ValueError('Provide both account and exact username, or neither') + async with self.lock: + binding = None + if account: + binding = await self.binding(account, username, {}) + return await asyncio.to_thread(self.desktop_factory().status, binding) + + async def open_chat(self, account, username): + if not all(isinstance(x, str) and x.strip() for x in [account, username]): + raise ValueError('Account and exact username are required') + async with self.lock: + binding = await self.binding(account, username, {}) + return await asyncio.to_thread(self.desktop_factory().open_chat, binding) + + def failure(self, item, exc): + submitted = self.get(item['id'])['status'] == 'submitted' + detail = exc.public() if isinstance(exc, DesktopError) else { + 'code': 'ACTION_FAILED', 'message': '操作未完成', 'recovery': '检查微信和服务状态。', 'retryable': False} + status = ('uncertain' if submitted else 'expired' if detail['code'] == 'ACTION_EXPIRED' + else 'blocked' if detail['retryable'] else 'failed') + self.update(item['id'], status, json.dumps(detail, ensure_ascii=False)) async def prepare(self, account, username, text, idempotency_key, due=None): if not all(isinstance(x, str) and x.strip() for x in [account, username, text, idempotency_key]): @@ -105,7 +135,9 @@ async def prepare(self, account, username, text, idempotency_key, due=None): self.require_local() baseline = await self.context(account, username) binding = await self.binding(account, username, baseline) - await asyncio.to_thread(self.desktop_factory().ready, binding) + driver = self.desktop_factory() + await asyncio.to_thread(driver.open_chat, binding) + await asyncio.to_thread(driver.ready, binding) action_id = uuid.uuid4().hex with self.db() as db: db.execute('INSERT INTO actions VALUES (?,?,?,?,?,?,?,?,?,?)', @@ -115,28 +147,34 @@ async def prepare(self, account, username, text, idempotency_key, due=None): async def commit(self, action_id): async with self.lock: item = self.get(action_id) - if item['status'] not in ['prepared', 'scheduled']: + if item['status'] not in ['prepared', 'scheduled', 'blocked']: return item - if item['status'] == 'prepared' and time.time() - item['created'] > 120: + if (((item['status'] == 'prepared' or not item['due']) and time.time() - item['created'] > 120) + or (item['due'] and time.time() > item['due'] + 300)): self.update(action_id, 'expired') raise ValueError('Prepared action expired; prepare again') if item['due'] and item['due'] > time.time(): if item['status'] == 'prepared': self.update(action_id, 'scheduled', 'Authorized for the requested due time') return self.get(action_id) - await self.reader.sync() - current = await self.context(item['account'], item['username']) + try: + await self.reader.sync() + current = await self.context(item['account'], item['username']) + except (OSError, RuntimeError): + exc = DesktopError('LOCAL_READER_UNAVAILABLE') + self.failure(item, exc) + raise exc from None if revision(current) != revision(json.loads(item['baseline'])): self.update(action_id, 'cancelled', 'Conversation changed; prepare a new action') raise ValueError('Conversation changed') try: driver = self.desktop_factory() binding = await self.binding(item['account'], item['username'], current) + binding['expires_at'] = item['due'] + 300 if item['due'] else item['created'] + 120 await asyncio.to_thread(driver.send, binding, item['text'], lambda: self.update(action_id, 'submitted')) - except Exception: - status = 'uncertain' if self.get(action_id)['status'] == 'submitted' else 'failed' - self.update(action_id, status, 'Desktop verification or submission failed') + except Exception as exc: + self.failure(item, exc) raise baseline_ids = {message_id(m) for m in rows(current, 'messages', 'items')} for _ in range(6): @@ -161,7 +199,7 @@ async def commit(self, action_id): async def cancel(self, action_id): async with self.lock: - if self.get(action_id)['status'] not in ['prepared', 'scheduled']: + if self.get(action_id)['status'] not in ['prepared', 'scheduled', 'blocked']: raise ValueError('Only pending actions can be cancelled') self.update(action_id, 'cancelled') return self.get(action_id) @@ -169,7 +207,7 @@ async def cancel(self, action_id): async def scheduler(self): while True: with self.db() as db: - due = [r[0] for r in db.execute("SELECT id FROM actions WHERE status='scheduled' AND due<=?", (time.time(),))] + due = [r[0] for r in db.execute("SELECT id FROM actions WHERE status IN ('scheduled','blocked') AND due IS NOT NULL AND due<=?", (time.time(),))] for action_id in due: try: await self.commit(action_id) diff --git a/root/scripts/workspace/desktop.py b/root/scripts/workspace/desktop.py index 1921a22..b71f517 100644 --- a/root/scripts/workspace/desktop.py +++ b/root/scripts/workspace/desktop.py @@ -5,8 +5,44 @@ import time from pathlib import Path +RECOVERY = { + 'ACTION_EXPIRED': ('操作已过期', '核对当前会话后重新准备需要执行的操作。', False), + 'WECHAT_ACCESSIBILITY_UNAVAILABLE': ('微信辅助功能不可用', '启动微信并确认已启用辅助功能。', False), + 'ACTIVE_ACCOUNT_UNVERIFIED': ('微信账号未就绪', '登录与请求匹配的本地微信账号。', True), + 'CHAT_IDENTITY_UNAVAILABLE': ('无法核验当前会话', '确认微信已解锁;不支持的版本布局需更新驱动。', False), + 'CHAT_IDENTITY_UNVERIFIED': ('当前聊天与目标不匹配', '使用打开聊天操作重新定位并核验目标。', True), + 'WECHAT_NOT_FOREGROUND': ('微信不在前台', '切回微信桌面后重试。', True), + 'WECHAT_WINDOW_UNVERIFIED': ('微信窗口不唯一或不可见', '恢复微信主窗口并关闭额外窗口后重试。', True), + 'WECHAT_LOCKED': ('微信已锁定', '手动解锁微信后重试。', True), + 'WECHAT_LOGIN_REQUIRED': ('微信尚未登录', '在微信中完成登录或手机确认后重试。', True), + 'WECHAT_DIALOG_OPEN': ('微信存在弹窗或菜单', '手动处理弹窗或关闭菜单后重试。', True), + 'EXISTING_DRAFT': ('聊天中有未发送草稿', '先发送或自行保存、清空草稿;系统不会覆盖它。', True), + 'MANUAL_INPUT_ACTIVE': ('检测到键鼠操作', '松开按键并暂停手动操作后重试。', True), + 'SEARCH_INPUT_BUSY': ('微信搜索框正在使用', '先结束或清空当前搜索后重试。', True), + 'SEARCH_INPUT_CHANGED': ('搜索内容被改动', '结束手动操作并清空搜索后重试。', True), + 'CHAT_SEARCH_UNAVAILABLE': ('找不到唯一的联系人搜索框', '切回微信聊天主界面后重试。', True), + 'CHAT_TARGET_NOT_FOUND': ('没有找到可核验的目标聊天', '确认联系人存在,或手动打开准确的目标聊天。', True), + 'CHAT_SEARCH_AMBIGUOUS': ('搜索结果过多,无法准确定位', '手动打开目标聊天后重试。', True), + 'CHAT_NAVIGATION_TIMEOUT': ('定位聊天超时', '确认微信响应正常后重试。', True), + 'LOCAL_READER_UNAVAILABLE': ('本地消息服务暂不可用', '等待本地消息服务恢复后重试。', True), + 'SEND_VISUAL_UNVERIFIED': ('无法核验发送按钮', '检查窗口、主题和微信版本;不要重复提交结果不确定的消息。', False), +} + + class DesktopError(RuntimeError): - pass + def __init__(self, message, *, retry_safe=True): + super().__init__(message) + self.retry_safe = retry_safe + + @property + def code(self): + return str(self).split(':', 1)[0] + + def public(self): + message, recovery, retryable = RECOVERY.get(self.code, + ('微信操作检查未通过', '检查微信窗口与操作记录后再决定下一步。', False)) + return {'code': self.code, 'message': message, 'recovery': recovery, + 'retryable': retryable and self.retry_safe} def session_environment(): for proc in Path('/proc').iterdir(): @@ -162,9 +198,30 @@ def _foreground(self, editor): if pointer.mask & (X.Button1Mask | X.Button2Mask | X.Button3Mask | X.ShiftMask | X.ControlMask | X.Mod1Mask): raise DesktopError('MANUAL_INPUT_ACTIVE') break + if any(d.query_keymap()): + raise DesktopError('MANUAL_INPUT_ACTIVE') finally: d.close() + def status(self, binding=None): + try: + from desktop_navigation import guard, search_control + nodes = self.nodes() + main = guard(self, nodes) + self._foreground(main) + search_control(self, nodes) + if binding: + self._account(binding['account']) + self.ready(binding) + return {'state': 'ready', 'code': 'READY', 'message': '微信桌面就绪', + 'recovery': '', 'retryable': False, 'chat_verified': binding is not None} + except DesktopError as exc: + return {'state': 'blocked', 'chat_verified': False, **exc.public()} + + def open_chat(self, binding): + from desktop_navigation import open_chat + return open_chat(self, binding) + def ready(self, binding): editor, _ = self._controls(binding) if self.a.Text.get_text(editor, 0, -1): @@ -172,16 +229,32 @@ def ready(self, binding): return True def send(self, binding, text, before_click): + self.open_chat(binding) editor, _ = self._controls(binding) if self.a.Text.get_text(editor, 0, -1): raise DesktopError('EXISTING_DRAFT') if not self.a.Component.grab_focus(editor): raise DesktopError('EDITOR_FOCUS_FAILED') + self._not_expired(binding) + try: + return self._submit(editor, binding, text, before_click) + except DesktopError as exc: + # Once any editor write was attempted, preserve the draft and + # require inspection. A transient UI fault cannot authorize retry. + exc.retry_safe = False + raise + + def _not_expired(self, binding): + if binding.get('expires_at') is not None and time.time() > binding['expires_at']: + raise DesktopError('ACTION_EXPIRED', retry_safe=False) + + def _submit(self, editor, binding, text, before_click): if not self.a.EditableText.set_text_contents(editor, text): raise DesktopError('EDITOR_WRITE_FAILED') editor2, send = self._controls(binding, require_send=True) if editor2 != editor or self.a.Text.get_text(editor, 0, -1) != text: raise DesktopError('CHAT_OR_DRAFT_CHANGED') + self._not_expired(binding) # Persist submitted before any action can reach WeChat. An interrupted # click is uncertain and must never be retried automatically. before_click() diff --git a/root/scripts/workspace/desktop_navigation.py b/root/scripts/workspace/desktop_navigation.py new file mode 100644 index 0000000..8aa384c --- /dev/null +++ b/root/scripts/workspace/desktop_navigation.py @@ -0,0 +1,194 @@ +"""Bounded navigation through WeChat's accessible contact search results.""" +import time + +from desktop import DesktopError + +SEARCH = {'搜索', 'Search'} +SECTIONS = {'联系人', 'Contacts', '群聊', 'Group Chats', 'Groups'} + + +def text(driver, node): + return driver.a.Text.get_text(node, 0, -1) + + +def frame(driver, nodes): + frames = [n for n in nodes if n.get_role_name() == 'frame' and driver._visible(n)] + if len(frames) != 1: + raise DesktopError('WECHAT_WINDOW_UNVERIFIED') + return frames[0] + + +def is_search(node): + return node.get_name().strip() in SEARCH + + +def guard(driver, nodes, owned_query=None): + """Never dismiss arbitrary UI or overwrite user input to make progress.""" + for n in nodes: + if not driver._visible(n): + continue + role, name = n.get_role_name(), n.get_name().strip() + if role in ['dialog', 'alert', 'menu']: + raise DesktopError('WECHAT_DIALOG_OPEN') + if role in ['button', 'push button'] and name in ['解锁', 'Unlock']: + raise DesktopError('WECHAT_LOCKED') + if role in ['button', 'push button'] and name in ['登录', 'Log In', 'Log in', '登录微信', '进入微信']: + raise DesktopError('WECHAT_LOGIN_REQUIRED') + if n.get_state_set().contains(driver.a.StateType.EDITABLE): + value = text(driver, n) + if value and (not is_search(n) or value != owned_query): + raise DesktopError('SEARCH_INPUT_BUSY' if is_search(n) else 'EXISTING_DRAFT') + return frame(driver, nodes) + + +def search_control(driver, nodes): + result = [n for n in nodes if driver._visible(n) and is_search(n) + and n.get_state_set().contains(driver.a.StateType.EDITABLE)] + if len(result) != 1: + raise DesktopError('CHAT_SEARCH_UNAVAILABLE') + return result[0] + + +def candidates(driver, nodes, names): + """Only popup Contacts/Groups rows; never chat-history or message matches.""" + matches = [] + for parent in nodes: + if parent.get_role_name() != 'list' or not driver._visible(parent): + continue + ancestor = parent.get_parent() + in_frame = False + while ancestor is not None and ancestor.get_role_name() != 'application': + if ancestor.get_role_name() == 'frame': + in_frame = True + break + ancestor = ancestor.get_parent() + if in_frame: + continue + header_height = None + for index in range(min(parent.get_child_count(), 100)): + child = parent.get_child_at_index(index) + if not driver._visible(child) or child.get_role_name() != 'list item': + continue + label = child.get_name().strip() + box = driver.a.Component.get_extents(child, driver.a.CoordType.SCREEN) + if label in SECTIONS: + header_height = box.height + continue + # This Qt search popup uses shorter rows for section headers and + # history results. A new section must have a recognized heading. + if header_height is not None and box.height <= header_height * 1.25: + header_height = None + if header_height and label in names: + matches.append(child) + return matches[:6] + + +def click_control(driver, node, main): + """Scale the identified accessible row against a stable active X11 frame.""" + from Xlib import display + from visual_send import VisualSend, active_window, click_send + driver._foreground(node) + bounds = driver.a.Component.get_extents(main, driver.a.CoordType.SCREEN) + box = driver.a.Component.get_extents(node, driver.a.CoordType.SCREEN) + connection = display.Display() + try: + window, geometry = active_window(connection) + finally: + connection.close() + x, y, width, height = geometry + sx, sy = width / bounds.width, height / bounds.height + if not (.5 <= sx <= 4 and abs(sx - sy) < .02 and box.width > 0 and box.height > 0 + and bounds.x <= box.x and bounds.y <= box.y + and box.x + box.width <= bounds.x + bounds.width + and box.y + box.height <= bounds.y + bounds.height): + raise DesktopError('NAVIGATION_BOUNDS_UNVERIFIED') + target = VisualSend(round(x + (box.x - bounds.x) * sx), round(y + (box.y - bounds.y) * sy), + round(box.width * sx), round(box.height * sy), window, geometry) + driver._foreground(node) + click_send(target) + + +def clear_owned_search(driver, query): + nodes = driver.nodes() + search = search_control(driver, nodes) + value = text(driver, search) + if not value: + return + if value != query: + raise DesktopError('SEARCH_INPUT_CHANGED') + guard(driver, nodes, query) + driver._foreground(search) + if not driver.a.EditableText.set_text_contents(search, ''): + raise DesktopError('SEARCH_CLEAR_FAILED') + + +def open_chat(driver, binding): + driver._account(binding['account']) + nodes = driver.nodes() + guard(driver, nodes) + try: + driver._controls(binding) + return {'verified': True, 'navigated': False} + except DesktopError as exc: + if exc.code != 'CHAT_IDENTITY_UNVERIFIED': + raise + names = set(binding['names']) | {binding['username']} + if binding.get('alias'): + names.add(binding['alias']) + queries = binding.get('search_queries') or binding['names'] + queries = list(dict.fromkeys(q for q in queries if isinstance(q, str) and 0 < len(q) <= 256 + and not any(ord(c) < 32 for c in q)))[:4] + if not queries: + raise DesktopError('CHAT_SEARCH_NAME_UNAVAILABLE') + deadline = time.monotonic() + 60 + for query in queries: + attempted = 0 + for ordinal in range(5): + if time.monotonic() >= deadline: + raise DesktopError('CHAT_NAVIGATION_TIMEOUT') + nodes = driver.nodes() + main = guard(driver, nodes) + search = search_control(driver, nodes) + driver._foreground(search) + if not driver.a.Component.grab_focus(search): + raise DesktopError('SEARCH_FOCUS_FAILED') + if not driver.a.EditableText.set_text_contents(search, query): + raise DesktopError('SEARCH_WRITE_FAILED') + try: + if text(driver, search) != query: + raise DesktopError('SEARCH_INPUT_CHANGED') + # Search results are asynchronous. Read twice after a bounded + # settling interval, and select from the fresh tree only. + time.sleep(.4) + until = min(deadline, time.monotonic() + 2) + found = [] + while time.monotonic() < until: + nodes = driver.nodes() + main = guard(driver, nodes, query) + if text(driver, search_control(driver, nodes)) != query: + raise DesktopError('SEARCH_INPUT_CHANGED') + found = candidates(driver, nodes, names) + if len(found) > ordinal: + break + time.sleep(.15) + if len(found) <= ordinal: + break + # A broad ambiguous result set is not permission to browse it. + if len(found) > 5: + raise DesktopError('CHAT_SEARCH_AMBIGUOUS') + driver._account(binding['account']) + click_control(driver, found[ordinal], main) + attempted += 1 + time.sleep(.3) + clear_owned_search(driver, query) + try: + driver.ready(binding) + return {'verified': True, 'navigated': True} + except DesktopError as exc: + if exc.code != 'CHAT_IDENTITY_UNVERIFIED': + raise + finally: + clear_owned_search(driver, query) + if not attempted: + continue + raise DesktopError('CHAT_TARGET_NOT_FOUND') diff --git a/root/scripts/workspace/reader.py b/root/scripts/workspace/reader.py index 8e7e90c..a0a120e 100644 --- a/root/scripts/workspace/reader.py +++ b/root/scripts/workspace/reader.py @@ -134,6 +134,9 @@ async def get_local(self, path, params=None): async def sync(self): # Only local source refreshes are allowed; credentials never cross to another transport. async with httpx.AsyncClient(timeout=600, trust_env=False) as client: - r = await client.post(LOCAL + '/api/linux/sync', headers={'X-WeHarbor-Action': 'sync'}) - r.raise_for_status() - return r.json() + try: + r = await client.post(LOCAL + '/api/linux/sync', headers={'X-WeHarbor-Action': 'sync'}) + r.raise_for_status() + return r.json() + except (httpx.HTTPError, ValueError) as exc: + raise RuntimeError('Local desktop message synchronization is unavailable') from exc diff --git a/root/scripts/workspace/server.py b/root/scripts/workspace/server.py index 7e5a38d..31ad8f9 100644 --- a/root/scripts/workspace/server.py +++ b/root/scripts/workspace/server.py @@ -12,7 +12,7 @@ from fastapi.responses import JSONResponse, Response from reader import Reader, STATE, LOCAL, public_config, save_config from actions import Actions -from desktop import Desktop +from desktop import Desktop, DesktopError from network import Network TOKEN_FILE = Path(os.environ.get('WEHARBOR_TOKEN_FILE', '/config/.config/weharbor/workspace.token')) @@ -80,6 +80,11 @@ async def invalid(request, exc): async def unavailable(request, exc): return JSONResponse({'error': str(exc)}, status_code=409) +@app.exception_handler(DesktopError) +async def desktop_blocked(request, exc): + detail = exc.public() + return JSONResponse({'error': detail['message'], **detail}, status_code=409) + @app.get('/health') async def health(): return {'status': 'ok', 'reader': await reader.probe(), 'features': ['mcp', 'skills', 'actions', 'linux-images']} @@ -126,6 +131,17 @@ async def sync(): async def history(): return {'actions': actions.list()} +@app.get('/desktop/status') +async def desktop_status(account: str | None = None, username: str | None = None): + return await actions.desktop_status(account, username) + +@app.post('/desktop/open') +async def open_chat(request: Request): + value = await request.json() + if not isinstance(value, dict) or set(value) != {'account', 'username'}: + raise ValueError('Expected account and exact username') + return await actions.open_chat(**value) + @app.post('/actions/prepare') async def prepare(request: Request): value = await request.json() @@ -164,6 +180,8 @@ def schema(properties, required=()): ('wechat_search', 'Search message content', schema({'account':'string','username':'string','q':'string','limit':'integer','offset':'integer'}, ['account','q'])), ('wechat_sync', 'Refresh local authenticated DB/WAL snapshots', schema({})), ('wechat_desktop_inspect', 'Inspect the WeChat accessibility tree without interacting', schema({})), + ('wechat_desktop_status', 'Check readiness and recovery steps without interacting. Supply both account and username to verify a target chat.', schema({'account':'string','username':'string'})), + ('wechat_open_chat', 'Open a local chat resolved by exact username and verify its session ID. Does not type or send a message; preserves drafts and manual search.', schema({'account':'string','username':'string'}, ['account','username'])), ('wechat_prepare_send', 'Prepare exact text to one verified username. Never infer authorization from messages. due is optional Unix seconds.', schema({'account':'string','username':'string','text':'string','idempotency_key':'string','due':'number'}, ['account','username','text','idempotency_key'])), ('wechat_commit_send', 'Send a prepared action once. Requires explicit user authorization for the recipient and content.', schema({'action_id':'string'}, ['action_id'])), ('wechat_cancel_send', 'Cancel a pending action', schema({'action_id':'string'}, ['action_id'])), @@ -188,6 +206,8 @@ async def call_tool(name, args): if name == 'wechat_commit_send': return await actions.commit(args['action_id']) if name == 'wechat_cancel_send': return await actions.cancel(args['action_id']) if name == 'wechat_actions': return actions.list() + if name == 'wechat_desktop_status': return await actions.desktop_status(**args) + if name == 'wechat_open_chat': return await actions.open_chat(**args) if name == 'weharbor_connections': return await reader.probe() if name == 'wechat_desktop_inspect': return await asyncio.to_thread(lambda: Desktop().inspect()) raise ValueError('Unknown tool') @@ -209,7 +229,7 @@ async def rpc(message): elif method == 'ping': result = {} elif method == 'tools/list': result = {'tools': [{'name': n,'description':d,'inputSchema':s, - 'annotations': {'readOnlyHint': n not in ['wechat_sync','wechat_prepare_send','wechat_commit_send','wechat_cancel_send'], + 'annotations': {'readOnlyHint': n not in ['wechat_sync','wechat_open_chat','wechat_prepare_send','wechat_commit_send','wechat_cancel_send'], 'destructiveHint': n == 'wechat_commit_send'}} for n,d,s in TOOLS]} elif method == 'tools/call': try: @@ -227,7 +247,8 @@ async def rpc(message): payload = await call_tool(name, arguments) result = {'content': [{'type':'text', 'text': json.dumps(payload, ensure_ascii=False)}]} except Exception as exc: - result = {'isError': True, 'content': [{'type':'text','text': str(exc) if isinstance(exc, (ValueError, RuntimeError)) else type(exc).__name__}]} + detail = json.dumps(exc.public(), ensure_ascii=False) if isinstance(exc, DesktopError) else str(exc) if isinstance(exc, (ValueError, RuntimeError)) else type(exc).__name__ + result = {'isError': True, 'content': [{'type':'text','text': detail}]} elif method == 'resources/list': result = {'resources': [{'uri':'weharbor://skill','name':'WeHarbor skill','mimeType':'text/markdown'}]} elif method == 'resources/read' and args.get('uri') == 'weharbor://skill': diff --git a/root/usr/share/weharbor/workspace/index.html b/root/usr/share/weharbor/workspace/index.html index 801d105..f5b423e 100644 --- a/root/usr/share/weharbor/workspace/index.html +++ b/root/usr/share/weharbor/workspace/index.html @@ -11,7 +11,8 @@

Tailscale

检测中

加入私有网络后,可读取另一台设备的消息服务,无需开放公网端口。

Cloudflare Tunnel

检测中

用已有 Tunnel 连接此工作区。将该 Tunnel 的公开域名指向 http://localhost:3000。

工作区保留网页登录,消息接口继续要求 API Token。

连接 AI 工具

DeepSeek 助手已通过本机 MCP 接口连接。其他 AI 工具可使用下面的 HTTP MCP 地址。

读取 Skill
Token 与域名直连配置

API Token 文件:/config/.config/weharbor/workspace.token。在 AI 工具中设置 Authorization: Bearer <token>,不要把 Token 填入 URL。

域名直连时,将反向代理指向容器的网页端口 3000,启用 HTTPS 和 WebSocket 转发。数据分析、助手与 MCP 使用同一域名。

发送操作先准备、再提交;只有观察到本机数据库新增的本人消息才标记为已发送。结果不确定时请核对微信,不要重复提交。

-

操作记录

准备中的消息和定时任务可取消。此记录不表示对方已收到或已读。

正在读取记录…

+

微信操作状态

检测中

正在检查微信桌面…

发送时会自动定位并核验目标聊天。草稿、手动搜索和未处理的弹窗会暂停操作。

+

操作记录

准备中的消息、定时任务和受阻操作可取消。已授权定时任务受阻时最多等待 5 分钟,期间恢复后重试;不确定的提交不会重试。此记录不表示对方已收到或已读。

正在读取记录…

连接 Cloudflare Tunnel

在 Cloudflare 控制台创建 Tunnel,将连接令牌保存在此设备。

diff --git a/root/usr/share/weharbor/workspace/ui.js b/root/usr/share/weharbor/workspace/ui.js index e434b69..a29938a 100644 --- a/root/usr/share/weharbor/workspace/ui.js +++ b/root/usr/share/weharbor/workspace/ui.js @@ -8,12 +8,16 @@ const r = await fetch('/workspace/' + path, {credentials: 'same-origin', cache: 'no-store', ...(body !== undefined ? {method: 'POST', headers: {'Content-Type':'application/json', 'X-WeHarbor-Action':'workspace'}, body: JSON.stringify(body)} : {})}); const data = await r.json(); - if (!r.ok) throw new Error(data.error || data.detail || '服务请求失败'); + if (!r.ok) throw new Error([data.error || data.detail || '服务请求失败', data.recovery].filter(Boolean).join(';')); return data; } function badge(id, text, ok) { $(id).textContent = text; $(id).className = 'badge ' + (ok ? 'ok' : 'warn'); } async function refresh() { - const data = await api('connections'); + const [data, history, desktop] = await Promise.all([api('connections'), api('actions'), + api('desktop/status').catch(() => ({state:'blocked', message:'无法检查微信桌面', recovery:'请确认操作服务运行正常后刷新。'}))]); + badge('desktop-state', desktop.state === 'ready' ? '就绪' : '需要处理', desktop.state === 'ready'); + $('desktop-message').textContent = desktop.message; + $('desktop-recovery').textContent = desktop.recovery; connections = data.connections; badge('selected', data.selected === 'local' ? '正在使用本地服务' : data.selected ? '正在使用网络连接' : '没有可用连接', !!data.selected); $('connections').replaceChildren(); @@ -37,20 +41,28 @@ $('ts-ips').textContent = ts.ips.join(' · '); $('ts-login').disabled = !ts.installed; badge('cf-state', !cf.installed ? '未安装' : cf.running ? '连接进程运行中' : cf.configured ? '已配置 · 未运行' : '未配置', cf.running); $('cf-open').disabled = !cf.installed; - const history = await api('actions'); $('actions').replaceChildren(); if (!history.actions.length) { const p = document.createElement('p'); p.className = 'empty subtle'; p.textContent = '暂无操作记录。AI 准备或发送消息后,记录会显示在这里。'; $('actions').append(p); return; } const table = document.createElement('table'); - table.innerHTML = '时间目标账号状态操作'; + table.innerHTML = '时间目标账号状态说明操作'; const body = document.createElement('tbody'); - const labels = {prepared:'待提交',scheduled:'已定时',submitted:'已提交',sent:'已发送',uncertain:'待核对',failed:'失败',cancelled:'已取消',expired:'已过期'}; + const labels = {prepared:'待提交',scheduled:'已定时',blocked:'等待恢复',submitted:'已提交',sent:'本地已记录',uncertain:'待核对',failed:'失败',cancelled:'已取消',expired:'已过期'}; for (const a of history.actions) { const row = document.createElement('tr'); for (const value of [new Date((a.due || a.created)*1000).toLocaleString(), a.username, labels[a.status] || a.status]) { const td = document.createElement('td'); td.textContent = value; row.append(td); } + const explanation = document.createElement('td'); + explanation.style.whiteSpace = 'normal'; explanation.style.minWidth = '200px'; + let detail = null; try { detail = JSON.parse(a.receipt); } catch (_) {} + explanation.textContent = detail?.code ? [detail.message, detail.recovery].filter(Boolean).join(';') : a.status === 'sent' ? '已核验新增的本地本人消息记录' : a.status === 'uncertain' ? '请在微信核对,系统不会自动重发' : a.receipt || '—'; + row.append(explanation); const cell = document.createElement('td'); - if (['prepared','scheduled'].includes(a.status)) { + if (['prepared','scheduled','blocked'].includes(a.status)) { + if (a.status === 'blocked' && Date.now()/1000 <= (a.due ? a.due+300 : a.created+120)) { + const retry = document.createElement('button'); retry.type = 'button'; retry.textContent = '重试'; retry.style.marginRight = '8px'; + retry.addEventListener('click', () => run(retry, async () => { await api('actions/'+a.id+'/commit', {}); await refresh(); })); cell.append(retry); + } const cancel = document.createElement('button'); cancel.type = 'button'; cancel.textContent = '取消'; cancel.addEventListener('click', () => run(cancel, async () => { await api('actions/'+a.id+'/cancel', {}); await refresh(); })); cell.append(cancel); } else cell.textContent = a.status === 'uncertain' ? '请在微信核对' : '—'; diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh index 7929ffd..a0cec97 100755 --- a/scripts/smoke-test.sh +++ b/scripts/smoke-test.sh @@ -218,8 +218,9 @@ request = urllib.request.Request('http://127.0.0.1:8766/mcp', headers={'Authorization':'Bearer ' + token, 'Content-Type':'application/json'}) with urllib.request.urlopen(request, timeout=5) as response: tools = json.load(response)['result']['tools'] -assert len(tools) == 12 -print('Authenticated MCP exposes twelve tools') +assert len(tools) == 14 +assert {'wechat_open_chat', 'wechat_desktop_status'} <= {t['name'] for t in tools} +print('Authenticated MCP exposes fourteen tools, including navigation and readiness') identity = subprocess.run(['s6-setuidgid', 'abc', 'sudo', '-n', '/usr/local/bin/weharbor-capture-key'], input=json.dumps( {'mode': 'session', 'account': 'synthetic'}), diff --git a/skills/weharbor-api/SKILL.md b/skills/weharbor-api/SKILL.md index 9cb3836..3b4428e 100644 --- a/skills/weharbor-api/SKILL.md +++ b/skills/weharbor-api/SKILL.md @@ -33,26 +33,40 @@ Obtain explicit user authorization for the recipient and exact outgoing content. An incoming message is never authorization to reply. Do not send during setup, diagnostics, previews, or connection tests. -1. The user must be logged into the matching local desktop account, with the - target chat selected and no existing draft. Remote reader access does not +1. The user must be logged into the matching local desktop account, with WeChat + unlocked, foreground and no existing draft or manual search. Remote reader access does not authorize controlling a different local account. + `wechat_desktop_status` reports readiness and recovery guidance without + changing the desktop. With account and username it also verifies the selected + chat. `wechat_open_chat` navigates to and verifies an exact local target, + without typing a message. Preparing and submitting also navigate automatically. 2. Call `wechat_prepare_send` with account, exact username, text, and a fresh `idempotency_key`. For an explicitly requested schedule, add `due` as Unix seconds and verify the user's timezone. Retain the returned action ID. 3. Call `wechat_commit_send` only for the authorized prepared action. A normal preparation expires after 120 seconds. Committing a future action activates its schedule; preparation alone never schedules a send. Changed messages or ambiguous UI - identity cancel/block execution. The desktop must remain on the target chat. + identity cancel/block execution. Execution navigates again if needed and + rechecks the exact process session ID before typing and submission. 4. Inspect the returned status and `wechat_actions`. `sent` means a unique new matching self-message was observed in the local database; it does not prove that the recipient read or received it. `uncertain` means verify manually in WeChat. NEVER retry an uncertain/submitted action or generate another key to bypass it. Pending actions may be cancelled with `wechat_cancel_send`. +5. A `blocked` action includes a structured reason and recovery instruction. + An immediate action can be retried with its existing action ID within the + original 120-second window. Authorized scheduled actions retry only transient + failures before any composer write, for at most five minutes after due time. + Changed context still cancels them. Errors after an attempted composer write + never trigger automatic retry. Never create another key to bypass a failure. If accessibility, identity, foreground, account, or draft checks fail, report the specific reason. Never bypass these guards with blind coordinates or keyboard macros. `wechat_desktop_inspect` reads the accessibility tree without clicking. -The current Linux driver requires a unique contact title plus an exact visible -WeChat ID or two matching recent message strings in the chat pane. Chats with -insufficient evidence fail closed. Real WeChat versions can expose different -accessibility structures; do not claim a successful send without a DB receipt. +The Linux driver uses read-only original-process session proof for the exact +account and username, plus a visible database contact title and unique composer. +Search selects only exact Contacts/Groups result labels and verifies the session +after opening; duplicate titles alone cannot authorize typing. Recent message +text is not identity proof. Existing drafts and manual searches are preserved. +Real WeChat versions can expose different accessibility structures; unsupported +or ambiguous layouts fail closed. Do not claim a successful send without a DB receipt. diff --git a/tests/test_desktop_navigation.py b/tests/test_desktop_navigation.py new file mode 100644 index 0000000..e507aa9 --- /dev/null +++ b/tests/test_desktop_navigation.py @@ -0,0 +1,131 @@ +"""Navigation must not mistake message/history text for a contact or alter drafts.""" +import sys +import unittest +from pathlib import Path +from types import SimpleNamespace +from unittest.mock import Mock, patch + +sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'root/scripts/workspace')) +from desktop import Desktop, DesktopError +import desktop_navigation as navigation + + +class Node: + def __init__(self, role='filler', name='', children=(), value='', editable=False, showing=True, height=64): + self.role, self.name, self.value = role, name, value + self.children, self.parent = list(children), None + self.states = ({'show'} if showing else set()) | ({'edit'} if editable else set()) + self.box = SimpleNamespace(x=100, y=100, width=320, height=height) + for child in self.children: + child.parent = self + def get_role_name(self): return self.role + def get_name(self): return self.name + def get_parent(self): return self.parent + def get_child_count(self): return len(self.children) + def get_child_at_index(self, index): return self.children[index] + def get_state_set(self): return self + def contains(self, state): return state in self.states + + +class NavigationTests(unittest.TestCase): + def setUp(self): + self.search = Node('text', 'Search', editable=True) + self.editor = Node('text', editable=True) + self.main = Node('frame', children=[self.search, self.editor]) + self.target = Node('list item', 'Target') + self.history = Node('list item', 'Target', height=34) + self.popup_list = Node('list', children=[Node('list item', 'Contacts', height=32), self.target, + Node('list item', 'Chat History', height=32), self.history]) + self.popup = Node(children=[self.popup_list]) + self.app = Node('application', children=[self.main, self.popup]) + self.d = object.__new__(Desktop) + self.writes = [] + def write(node, value): + self.writes.append((node, value)); node.value = value + return True + self.d.a = SimpleNamespace(StateType=SimpleNamespace(EDITABLE='edit', SHOWING='show'), + CoordType=SimpleNamespace(SCREEN='screen'), + Text=SimpleNamespace(get_text=lambda n, start, end: n.value), + Component=SimpleNamespace(get_extents=lambda n, coord: n.box, grab_focus=lambda n: True), + EditableText=SimpleNamespace(set_text_contents=write)) + self.d.nodes = lambda: self.d._subtree(self.app) + self.d._account = Mock() + self.d._foreground = Mock() + self.d._controls = Mock(side_effect=DesktopError('CHAT_IDENTITY_UNVERIFIED')) + self.d.ready = Mock(return_value=True) + self.binding = {'account':'account', 'username':'wxid_target', 'names':['Target'], 'search_queries':['Target']} + + def test_only_contact_popup_rows_are_candidates(self): + # A forged message and a real-looking row inside the main frame must + # never become navigation controls; history results are excluded too. + fake = Node('list', children=[Node('list item', 'Contacts', height=32), Node('list item', 'Target')]) + fake.parent = self.main; self.main.children.append(fake) + self.assertEqual(navigation.candidates(self.d, self.d.nodes(), {'Target'}), [self.target]) + + def test_navigation_verifies_exact_binding_without_writing_message_editor(self): + with patch.object(navigation, 'click_control') as click, patch.object(navigation.time, 'sleep'): + result = navigation.open_chat(self.d, self.binding) + self.assertTrue(result['verified']) + self.assertTrue(result['navigated']) + self.d.ready.assert_called_once_with(self.binding) + click.assert_called_once_with(self.d, self.target, self.main) + self.assertEqual(self.writes, [(self.search, 'Target'), (self.search, '')]) + self.assertEqual(self.editor.value, '') + + def test_selected_target_does_not_open_search(self): + self.d._controls.side_effect = None + self.assertFalse(navigation.open_chat(self.d, self.binding)['navigated']) + self.assertEqual(self.writes, []) + + def test_existing_draft_or_search_blocks_all_mutation(self): + for node, code in [(self.editor, 'EXISTING_DRAFT'), (self.search, 'SEARCH_INPUT_BUSY')]: + node.value = 'user input' + with self.assertRaisesRegex(DesktopError, code): navigation.open_chat(self.d, self.binding) + self.assertEqual(node.value, 'user input') + node.value = '' + self.assertEqual(self.writes, []) + + def test_user_changes_search_during_navigation_is_preserved_without_click(self): + def human_input(_): self.search.value = 'manual query' + with patch.object(navigation, 'click_control') as click, patch.object(navigation.time, 'sleep', side_effect=human_input): + with self.assertRaisesRegex(DesktopError, 'SEARCH_INPUT_CHANGED'): + navigation.open_chat(self.d, self.binding) + click.assert_not_called() + self.assertEqual(self.search.value, 'manual query') + self.assertEqual(self.writes, [(self.search, 'Target')]) + + def test_hidden_unlock_does_not_block_but_visible_dialog_does(self): + hidden = Node('button', 'Unlock', showing=False) + self.assertEqual(navigation.guard(self.d, self.d.nodes()+[hidden]), self.main) + for node, code in [(Node('button','Unlock'), 'WECHAT_LOCKED'), (Node('dialog'), 'WECHAT_DIALOG_OPEN')]: + with self.assertRaisesRegex(DesktopError, code): navigation.guard(self.d, self.d.nodes()+[node]) + + def test_readiness_requires_the_logged_in_search_control(self): + self.assertEqual(self.d.status()['state'], 'ready') + self.search.states.discard('show') + self.assertEqual(self.d.status()['code'], 'CHAT_SEARCH_UNAVAILABLE') + + def test_error_after_attempted_editor_write_cannot_be_automatically_retried(self): + self.d.open_chat = Mock() + self.d._controls = Mock(return_value=(self.editor, None)) + self.d._submit = Mock(side_effect=DesktopError('WECHAT_DIALOG_OPEN')) + with self.assertRaises(DesktopError) as caught: + self.d.send(self.binding, 'authorized text', Mock()) + self.assertFalse(caught.exception.public()['retryable']) + + def test_action_expiring_during_navigation_does_not_write_a_message(self): + self.d.open_chat = Mock() + self.d._controls = Mock(return_value=(self.editor, None)) + self.binding['expires_at'] = 1 + with self.assertRaisesRegex(DesktopError, 'ACTION_EXPIRED'): + self.d.send(self.binding, 'authorized text', Mock()) + self.assertEqual(self.writes, []) + + def test_duplicate_title_candidate_is_not_accepted_without_session_proof(self): + second = Node('list item', 'Target'); second.parent = self.popup_list + self.popup_list.children.insert(2, second) + self.d.ready = Mock(side_effect=[DesktopError('CHAT_IDENTITY_UNVERIFIED'), True]) + with patch.object(navigation, 'click_control') as click, patch.object(navigation.time, 'sleep'): + self.assertTrue(navigation.open_chat(self.d, self.binding)['verified']) + self.assertEqual([c.args[1] for c in click.call_args_list], [self.target, second]) + self.assertTrue(all(node is self.search for node, _ in self.writes)) diff --git a/tests/test_workspace.py b/tests/test_workspace.py index a9218b3..f7c2609 100644 --- a/tests/test_workspace.py +++ b/tests/test_workspace.py @@ -35,6 +35,8 @@ async def get_local(self, path, params): class FakeDesktop: def __init__(self, owner): self.owner = owner + def open_chat(self, binding): return {'verified': True, 'navigated': False} + def status(self, binding=None): return {'state': 'ready', 'chat_verified': binding is not None} def ready(self, binding): return True def send(self, binding, text, submitted): submitted() @@ -138,6 +140,75 @@ async def test_schedule_requires_commit_before_automatic_execution(self): with patch('actions.time.time', return_value=due + 1): self.assertEqual((await self.actions.commit(item['id']))['status'], 'sent') self.assertEqual(self.clicks, 1) + + async def test_scheduled_pre_input_block_can_recover_without_duplicate_submission(self): + due = time.time() + 600 + item = await self.actions.prepare('account', 'wxid_target', 'message', 'scheduled-block', due) + await self.actions.commit(item['id']) + with patch('actions.time.time', return_value=due + 1), patch.object(FakeDesktop, 'send', side_effect=desktop.DesktopError('WECHAT_LOCKED')): + with self.assertRaises(desktop.DesktopError): await self.actions.commit(item['id']) + blocked = self.actions.get(item['id']) + self.assertEqual(blocked['status'], 'blocked') + self.assertEqual(json.loads(blocked['receipt'])['code'], 'WECHAT_LOCKED') + self.assertEqual(self.clicks, 0) + with patch('actions.time.time', return_value=due + 2): + self.assertEqual((await self.actions.commit(item['id']))['status'], 'sent') + self.assertEqual(self.clicks, 1) + + async def test_schedule_block_expires_instead_of_sending_late(self): + due = time.time() + 600 + item = await self.actions.prepare('account', 'wxid_target', 'message', 'late-schedule', due) + await self.actions.commit(item['id']) + self.actions.update(item['id'], 'blocked') + with patch('actions.time.time', return_value=due + 301): + with self.assertRaises(ValueError): await self.actions.commit(item['id']) + self.assertEqual(self.actions.get(item['id'])['status'], 'expired') + self.assertEqual(self.clicks, 0) + + async def test_reader_outage_waits_before_input_and_context_change_cancels(self): + item = await self.prepare() + self.reader.fail_sync = True + with self.assertRaisesRegex(desktop.DesktopError, 'LOCAL_READER_UNAVAILABLE'): + await self.actions.commit(item['id']) + self.assertEqual(self.actions.get(item['id'])['status'], 'blocked') + self.reader.fail_sync = False + self.reader.messages.append({'id':'incoming', 'content':'new context'}) + with self.assertRaisesRegex(ValueError, 'Conversation changed'): + await self.actions.commit(item['id']) + self.assertEqual(self.actions.get(item['id'])['status'], 'cancelled') + self.assertEqual(self.clicks, 0) + + async def test_never_retry_a_block_after_editor_write(self): + item = await self.prepare() + with patch.object(FakeDesktop, 'send', side_effect=desktop.DesktopError('WECHAT_DIALOG_OPEN', retry_safe=False)): + with self.assertRaises(desktop.DesktopError): await self.actions.commit(item['id']) + self.assertEqual(self.actions.get(item['id'])['status'], 'failed') + await self.actions.commit(item['id']) + self.assertEqual(self.clicks, 0) + + async def test_cancel_blocked_action_and_expire_old_immediate_retry(self): + item = await self.prepare() + self.actions.update(item['id'], 'blocked') + with patch('actions.time.time', return_value=item['created'] + 121): + with self.assertRaises(ValueError): await self.actions.commit(item['id']) + self.assertEqual(self.actions.get(item['id'])['status'], 'expired') + second = await self.prepare('second') + self.actions.update(second['id'], 'blocked') + self.assertEqual((await self.actions.cancel(second['id']))['status'], 'cancelled') + + async def test_future_preparation_still_expires_before_schedule_authorization(self): + item = await self.actions.prepare('account', 'wxid_target', 'message', 'uncommitted', time.time() + 600) + with patch('actions.time.time', return_value=item['created'] + 121): + with self.assertRaises(ValueError): await self.actions.commit(item['id']) + self.assertEqual(self.actions.get(item['id'])['status'], 'expired') + + async def test_read_only_status_and_open_chat_share_exact_local_binding(self): + self.assertTrue((await self.actions.desktop_status('account', 'wxid_target'))['chat_verified']) + with patch.object(FakeDesktop, 'open_chat', return_value={'verified': True, 'navigated': True}) as opened: + self.assertTrue((await self.actions.open_chat('account', 'wxid_target'))['navigated']) + self.assertEqual(opened.call_args.args[0]['username'], 'wxid_target') + self.assertEqual(self.actions.list(), []) + with self.assertRaises(ValueError): await self.actions.desktop_status('account') def test_revision_ignores_refresh_metadata(self): self.assertEqual(actions.revision({'messages':self.reader.messages,'time':1}), actions.revision({'messages':self.reader.messages,'time':2})) @@ -212,6 +283,13 @@ async def test_local_action_reads_never_fall_back_to_remote(self): self.assertEqual(len(self.requests), 1) self.assertEqual(str(self.requests[0].url), reader.LOCAL + '/api/chat/messages') + async def test_sync_failure_has_recoverable_local_service_error(self): + with self.clients(lambda request: self.httpx.Response(503)): + with self.assertRaisesRegex(RuntimeError, 'synchronization is unavailable'): + await reader.Reader().sync() + self.assertEqual(len(self.requests), 1) + self.assertEqual(str(self.requests[0].url), reader.LOCAL + '/api/linux/sync') + class McpTests(unittest.IsolatedAsyncioTestCase): async def asyncSetUp(self): self.directory = tempfile.TemporaryDirectory() @@ -243,6 +321,20 @@ async def test_mcp_initialize_list_and_type_validation(self): malformed = await self.server.rpc({'id':4,'method':'tools/call','params':[]}) self.assertEqual(malformed['error']['code'], -32602) + async def test_navigation_auth_schema_and_structured_block_recovery(self): + from unittest.mock import AsyncMock + headers = {'Authorization': 'Bearer ' + self.server.TOKEN} + self.assertEqual(self.client.post('/desktop/open', json={'account':'a','username':'u'}).status_code, 401) + self.assertEqual(self.client.post('/desktop/open', headers=headers, json={'account':'a','username':'u','text':'no'}).status_code, 400) + with patch.object(self.server.actions, 'open_chat', new=AsyncMock(side_effect=desktop.DesktopError('EXISTING_DRAFT'))): + response = self.client.post('/desktop/open', headers=headers, json={'account':'a','username':'u'}) + self.assertEqual(response.status_code, 409) + self.assertEqual(response.json()['code'], 'EXISTING_DRAFT') + self.assertTrue(response.json()['recovery']) + result = await self.server.rpc({'id':5, 'method':'tools/call', 'params':{'name':'wechat_open_chat','arguments':{'account':'a','username':'u'}}}) + self.assertTrue(result['result']['isError']) + self.assertEqual(json.loads(result['result']['content'][0]['text'])['code'], 'EXISTING_DRAFT') + class DesktopIdentityTests(unittest.TestCase): class Node: def __init__(self, name='', role='label', states=(), children=()): From f9c63439a372c3860954258d3a27614df230fc2e Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 18:05:03 +0800 Subject: [PATCH 08/10] Allow local navigation before transport discovery --- root/scripts/workspace/actions.py | 4 +++- tests/test_workspace.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/root/scripts/workspace/actions.py b/root/scripts/workspace/actions.py index 277dd26..365a972 100644 --- a/root/scripts/workspace/actions.py +++ b/root/scripts/workspace/actions.py @@ -73,7 +73,9 @@ def require_local(self): async def binding(self, account, username, context): contacts = rows(await self.reader.get_local('chat/contacts', {'account': account, 'source': 'decrypted'}), 'contacts', 'items') - self.require_local() + # This response is pinned to the local reader. Navigation/readiness must + # work immediately after service startup, before transport discovery. + # Preparation separately rejects authorization from a remote reader. target = [c for c in contacts if (c.get('username') or c.get('userName')) == username] if len(target) != 1: raise ValueError('The exact username must resolve to one contact') diff --git a/tests/test_workspace.py b/tests/test_workspace.py index f7c2609..163c643 100644 --- a/tests/test_workspace.py +++ b/tests/test_workspace.py @@ -203,6 +203,7 @@ async def test_future_preparation_still_expires_before_schedule_authorization(se self.assertEqual(self.actions.get(item['id'])['status'], 'expired') async def test_read_only_status_and_open_chat_share_exact_local_binding(self): + self.reader.selected = None self.assertTrue((await self.actions.desktop_status('account', 'wxid_target'))['chat_verified']) with patch.object(FakeDesktop, 'open_chat', return_value={'verified': True, 'navigated': True}) as opened: self.assertTrue((await self.actions.open_chat('account', 'wxid_target'))['navigated']) From c730ca0137289016e5b68efb31ffbad7807b56b5 Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 18:13:11 +0800 Subject: [PATCH 09/10] Handle disconnected network status and validate navigation workspace --- docs/workspace-validation.md | 12 +++++++++++- root/scripts/workspace/network.py | 2 +- root/usr/share/weharbor/workspace/index.html | 1 + root/usr/share/weharbor/workspace/ui.js | 2 +- scripts/smoke-test.sh | 7 +++++++ tests/test_workspace.py | 11 +++++++++++ 6 files changed, 32 insertions(+), 3 deletions(-) diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index a7f766f..7e3e11c 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -7,7 +7,7 @@ not committed. The preceding baseline image was ## October 20 navigation and recovery validation -- Passed 117 integration/source tests, covering exact-result navigation, duplicate +- Passed 118 integration/source tests, covering exact-result navigation, duplicate titles, exclusion of history/message results, draft and manual-search preservation, structured recovery, pre-input retry, context cancellation, expiration during navigation and no retry after attempted composer writes. @@ -20,6 +20,16 @@ not committed. The preceding baseline image was exact-target navigation. Scheduled transient pre-input failures may recover for at most five minutes after due time; changed context cancels the action. Expiry is checked again before editor writes and submission. +- Authenticated HTTP and MCP both navigated to the exact target. Missing + authentication, foreign origins and invalid request schemas were rejected. + Two synthetic operations were prepared and cancelled without submitting; + replaying a cancelled commit kept it cancelled, and the composer stayed empty. + The assistant workspace resolves the updated portable Skill from its source. +- The production workspace was updated in place while retaining the unlocked + original WeChat process. Browser checks at 1280px and 390px confirmed ready + status and no page overflow; the action table scrolls inside its card. An + unauthenticated Tailscale daemon can return null IPs; both the status response + and UI now handle that state without interrupting action-list rendering. ## October 20 unlocked-chat validation diff --git a/root/scripts/workspace/network.py b/root/scripts/workspace/network.py index c73ce10..6ad2d0a 100644 --- a/root/scripts/workspace/network.py +++ b/root/scripts/workspace/network.py @@ -72,7 +72,7 @@ async def status(self): code, out, _ = await self.command('status', '--json') if code == 0: data = json.loads(out) - ts.update(running=True, state=data.get('BackendState'), ips=data.get('TailscaleIPs', [])) + ts.update(running=True, state=data.get('BackendState'), ips=data.get('TailscaleIPs') or []) except (OSError, ValueError): pass cf = self.children.get('cloudflare') return {'tailscale': ts, 'cloudflare': {'installed': Path(CF).is_file(), diff --git a/root/usr/share/weharbor/workspace/index.html b/root/usr/share/weharbor/workspace/index.html index f5b423e..e65e10e 100644 --- a/root/usr/share/weharbor/workspace/index.html +++ b/root/usr/share/weharbor/workspace/index.html @@ -2,6 +2,7 @@ 连接与操作记录 · WeHarbor
WEHARBOR / WORKSPACE

连接与操作记录

连接消息服务,让桌面与 AI 使用同一份微信数据。

diff --git a/root/usr/share/weharbor/workspace/ui.js b/root/usr/share/weharbor/workspace/ui.js index a29938a..35e169e 100644 --- a/root/usr/share/weharbor/workspace/ui.js +++ b/root/usr/share/weharbor/workspace/ui.js @@ -38,7 +38,7 @@ } const ts = data.network.tailscale, cf = data.network.cloudflare; badge('ts-state', !ts.installed ? '未安装' : ts.state === 'Running' ? '已连接' : ts.state || '未连接', ts.state === 'Running'); - $('ts-ips').textContent = ts.ips.join(' · '); $('ts-login').disabled = !ts.installed; + $('ts-ips').textContent = (Array.isArray(ts.ips) ? ts.ips : []).join(' · '); $('ts-login').disabled = !ts.installed; badge('cf-state', !cf.installed ? '未安装' : cf.running ? '连接进程运行中' : cf.configured ? '已配置 · 未运行' : '未配置', cf.running); $('cf-open').disabled = !cf.installed; $('actions').replaceChildren(); diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh index a0cec97..5642681 100755 --- a/scripts/smoke-test.sh +++ b/scripts/smoke-test.sh @@ -221,6 +221,13 @@ with urllib.request.urlopen(request, timeout=5) as response: assert len(tools) == 14 assert {'wechat_open_chat', 'wechat_desktop_status'} <= {t['name'] for t in tools} print('Authenticated MCP exposes fourteen tools, including navigation and readiness') +request = urllib.request.Request('http://127.0.0.1:8766/desktop/status', + headers={'Authorization':'Bearer ' + token}) +with urllib.request.urlopen(request, timeout=30) as response: + readiness = json.load(response) +assert readiness['state'] == 'blocked', 'A fresh logged-out profile cannot be ready' +assert readiness['code'] and readiness['recovery'] and isinstance(readiness['retryable'], bool) +print('Fresh-profile desktop readiness reports a structured blocker') identity = subprocess.run(['s6-setuidgid', 'abc', 'sudo', '-n', '/usr/local/bin/weharbor-capture-key'], input=json.dumps( {'mode': 'session', 'account': 'synthetic'}), diff --git a/tests/test_workspace.py b/tests/test_workspace.py index 163c643..0aed6b8 100644 --- a/tests/test_workspace.py +++ b/tests/test_workspace.py @@ -291,6 +291,17 @@ async def test_sync_failure_has_recoverable_local_service_error(self): self.assertEqual(len(self.requests), 1) self.assertEqual(str(self.requests[0].url), reader.LOCAL + '/api/linux/sync') +class NetworkStatusTests(unittest.IsolatedAsyncioTestCase): + async def test_logged_out_tailscale_null_ips_is_an_empty_list(self): + import network + from unittest.mock import AsyncMock + with patch.object(network, 'SOCKET', SimpleNamespace(exists=lambda:True)): + with patch.object(network.Path, 'is_file', return_value=True), patch.object(network.Network, 'command', + new=AsyncMock(return_value=(0,json.dumps({'BackendState':'NeedsLogin','TailscaleIPs':None}),''))): + result=await network.Network().status() + self.assertEqual(result['tailscale']['ips'], []) + self.assertEqual(result['tailscale']['state'], 'NeedsLogin') + class McpTests(unittest.IsolatedAsyncioTestCase): async def asyncSetUp(self): self.directory = tempfile.TemporaryDirectory() From 8d9ea52b5342145d402944461e486d349a5f7e51 Mon Sep 17 00:00:00 2001 From: fliaping <269832017@qq.com> Date: Tue, 20 Oct 2026 18:24:47 +0800 Subject: [PATCH 10/10] Record navigation rollout, smoke validation, and session-preserving rollback --- docs/workspace-validation.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/workspace-validation.md b/docs/workspace-validation.md index 7e3e11c..1b15a78 100644 --- a/docs/workspace-validation.md +++ b/docs/workspace-validation.md @@ -30,6 +30,21 @@ not committed. The preceding baseline image was status and no page overflow; the action table scrolls inside its card. An unauthenticated Tailscale daemon can return null IPs; both the status response and UI now handle that state without interrupting action-list rendering. +- Harness was restarted separately to refresh MCP discovery; its plugin inventory + reports the WeHarbor MCP plugin active. The original WeChat process was + preserved, and no model request was made. Rechecking the three earlier approved + sends found each marker exactly once; completed commit replays stayed sent, + the composer was empty and a mismatched exact username was rejected. +- Image `sha256:3d74e20955a0c6349003355451c630859e30eba3172d6d12a8749655088ed332` + was built from application revision + `c730ca0137289016e5b68efb31ffbad7807b56b5`. + Its full fresh-profile smoke test passed, including container restart, + authentication, origin rejection, app switching, fourteen MCP tools, + structured logged-out readiness, Harness RPC and original vendor file checks. +- The final image is loaded on the NAS. Nine updated runtime files match its + hashes. The persistent override selects `weharbor:realtime-20261020-navigation` + for the next recreation. The live container retains base image `b8fa1b571a93` + and its original unlocked WeChat process; it was not recreated. ## October 20 unlocked-chat validation @@ -210,6 +225,16 @@ the production container. Recreating from the selected new image preserves the profile volume but restarts WeChat, so it was staged rather than forced while the owner's unlocked chat was in use. +The later navigation rollout backup is `navigation-20261020-102426` under the +same private deployment backup directory. It retains the preceding override +and hash-only manifest. `weharbor:before-navigation-20261020` retains the Qt +image. The pre-navigation runtime files and private action-database backup are +inside `/config/.local/share/weharbor/before-navigation-20261020-100304` in the +production container. A runtime-only rollback should restore the saved program +files while the workspace service is stopped, then restart that service; do not +replace the live action database with an older backup. This preserves subsequent +operation records and the unlocked WeChat session. + No combined image was published. Upstream analysis licensing and the vendor redistribution conditions in `THIRD_PARTY_NOTICES.md` still require clarification before publishing one.