From bf0a0a5696d144e1830c03d4c7a68e3e29bf1ec9 Mon Sep 17 00:00:00 2001 From: yaojin Date: Wed, 19 Aug 2026 21:32:16 -0700 Subject: [PATCH 1/6] Upgrade Harness to 0.1.0-rc.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebuild every dependency patch against rc.8 and take the desktop shell off ui-sidebar entirely. Harness rc.8 adds `sidebar.brand.mark`, `sidebar.brand.name`, and `sidebar.footer.action` slots, which cover everything the sidebar patch was doing by hand. Branding and the phone-pairing entry now ship as a local plugin (packages/dsh-desktop-shell), so the patch is deleted and the preload loses its MutationObserver, its DOM injection, and its 1s status poll in favour of a contextBridge pair the plugin calls. The plugin is registered in the patched dsh manifest because Harness builds the profile link farm from that manifest, not from this project's. rc.8 also took the model select-all toggle upstream, so those hunks are gone from the settings-models patch; the remaining rework covers the provider search, provider ranking, and the multi-provider onboarding dialog against rc.8's reshaped code (ProviderEditor now takes `schema`). Harness rc.8 opens the loopback URL in the system browser on launch, which would pop a browser tab over the desktop window every start. Pass --no-open. Patch surface drops from 1825 to 1712 lines with one fewer patched package. Tests resolve patch files by package name instead of hardcoding the version, so the next upgrade renames patches without breaking every assertion. The release guard now identifies a package by the segment after its last node_modules/ — rc.8 nests React 19 under ui-trajectory, which the old prefix check misread as a peer-only DSH package. --- README.md | 4 +- README.zh.md | 4 +- build/dsh-desktop.patch.yml | 5 + package-lock.json | 5365 +++++++---------- package.json | 39 +- packages/dsh-desktop-shell/client.js | 208 + packages/dsh-desktop-shell/index.js | 8 + packages/dsh-desktop-shell/package.json | 23 + ...atch => @deepseek-ai+dsh+0.1.0-rc.8.patch} | 3 +- ...h-client-ui-agent-preset+0.1.0-rc.8.patch} | 59 +- ...h-client-ui-conversation+0.1.0-rc.8.patch} | 48 +- ...h-client-ui-deliverables+0.1.0-rc.8.patch} | 0 ...-directory-picker-native+0.1.0-rc.8.patch} | 0 ...-ai+dsh-client-ui-layout+0.1.0-rc.8.patch} | 0 ...lient-ui-settings-models+0.1.0-rc.8.patch} | 166 +- ...-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch | 117 - ...eek-ai+dsh-host-apiproxy+0.1.0-rc.8.patch} | 27 +- src/main/runtime/harness-runtime.ts | 3 + src/preload/index.ts | 82 +- test/branding-patch.test.ts | 76 +- test/directory-picker.test.ts | 5 +- test/local-path-links.test.ts | 10 +- test/model-picker-patch.test.ts | 51 +- test/onboarding-patch.test.ts | 3 +- test/patch-path.ts | 35 + test/preset-transfer-patch.test.ts | 27 +- test/query-rail-patch.test.ts | 13 +- test/release.test.ts | 12 +- test/runtime.test.ts | 7 + 29 files changed, 2597 insertions(+), 3803 deletions(-) create mode 100644 packages/dsh-desktop-shell/client.js create mode 100644 packages/dsh-desktop-shell/index.js create mode 100644 packages/dsh-desktop-shell/package.json rename patches/{@deepseek-ai+dsh+0.1.0-rc.7.patch => @deepseek-ai+dsh+0.1.0-rc.8.patch} (88%) rename patches/{@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch => @deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.8.patch} (67%) rename patches/{@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.7.patch => @deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.8.patch} (91%) rename patches/{@deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.7.patch => @deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.8.patch} (100%) rename patches/{@deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.7.patch => @deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.8.patch} (100%) rename patches/{@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.7.patch => @deepseek-ai+dsh-client-ui-layout+0.1.0-rc.8.patch} (100%) rename patches/{@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.7.patch => @deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.8.patch} (76%) delete mode 100644 patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch rename patches/{@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch => @deepseek-ai+dsh-host-apiproxy+0.1.0-rc.8.patch} (95%) create mode 100644 test/patch-path.ts diff --git a/README.md b/README.md index bc44c5fb..4bf66273 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ DSH Desktop packages the local DeepSeek Harness web experience as a desktop application. It launches a local Harness instance automatically, manages a random loopback port, persists profiles, plugins, and sessions, and opens the full interface as soon as Harness is ready. Project workspaces are added and managed entirely in the Harness interface. > [!IMPORTANT] -> DSH Desktop is currently an early preview and depends on the rapidly evolving `@deepseek-ai/dsh@0.1.0-rc.7`. macOS releases are code-signed and notarized by Apple; current installers are distributed through the official website. +> DSH Desktop is currently an early preview and depends on the rapidly evolving `@deepseek-ai/dsh@0.1.0-rc.8`. macOS releases are code-signed and notarized by Apple; current installers are distributed through the official website. ## Download @@ -155,7 +155,7 @@ build/ Application icon assets ## Upstream version and patches -The project currently pins `@deepseek-ai/dsh@0.1.0-rc.7`. The initial provider list and desktop preset-transfer surface are captured with [`patch-package`](https://github.com/ds300/patch-package) under [`patches/`](patches/) rather than relying on untracked changes in `node_modules`. +The project currently pins `@deepseek-ai/dsh@0.1.0-rc.8`. The initial provider list and desktop preset-transfer surface are captured with [`patch-package`](https://github.com/ds300/patch-package) under [`patches/`](patches/) rather than relying on untracked changes in `node_modules`. Sidebar branding and the phone-pairing entry now fill the `sidebar.brand.*` and `sidebar.footer.action` slots that Harness exposes, so they need no patch at all. When upgrading DSH: diff --git a/README.zh.md b/README.zh.md index 9c2e26d5..878d5157 100644 --- a/README.zh.md +++ b/README.zh.md @@ -25,7 +25,7 @@ DSH Desktop 把 DeepSeek Harness 的本地 Web 体验封装为桌面应用:应用会自动启动本地 Harness、管理随机回环端口、持久化 Profile/插件/会话,并在 Harness 就绪后直接进入完整界面。项目工作区在 Harness 界面中统一添加和管理。 > [!IMPORTANT] -> DSH Desktop 当前处于早期预览阶段,并依赖仍在快速迭代的 `@deepseek-ai/dsh@0.1.0-rc.7`。macOS 正式包已完成代码签名并通过 Apple 公证,当前安装包统一通过官网分发。 +> DSH Desktop 当前处于早期预览阶段,并依赖仍在快速迭代的 `@deepseek-ai/dsh@0.1.0-rc.8`。macOS 正式包已完成代码签名并通过 Apple 公证,当前安装包统一通过官网分发。 ## 下载安装 @@ -155,7 +155,7 @@ build/ 应用图标资源 ## 上游版本与补丁 -项目当前固定依赖 `@deepseek-ai/dsh@0.1.0-rc.7`。首启 Provider 列表与桌面端 Preset 导入导出界面由 [`patch-package`](https://github.com/ds300/patch-package) 固化在 [`patches/`](patches/) 中,而不是依赖未跟踪的 `node_modules` 修改。 +项目当前固定依赖 `@deepseek-ai/dsh@0.1.0-rc.8`。首启 Provider 列表与桌面端 Preset 导入导出界面由 [`patch-package`](https://github.com/ds300/patch-package) 固化在 [`patches/`](patches/) 中,而不是依赖未跟踪的 `node_modules` 修改。侧边栏品牌标识与手机配对入口改为填充 Harness 提供的 `sidebar.brand.*` 与 `sidebar.footer.action` 插槽,不再需要补丁。 升级 DSH 时必须: diff --git a/build/dsh-desktop.patch.yml b/build/dsh-desktop.patch.yml index 34c24083..ec7f4b66 100644 --- a/build/dsh-desktop.patch.yml +++ b/build/dsh-desktop.patch.yml @@ -8,6 +8,11 @@ - id: directory-picker-electron-desktop-surface name: '@deepseek-ai/dsh-client-ui-directory-picker-native' + # Desktop branding and the phone-pairing entry ride the sidebar slots that + # Harness exposes, so neither needs a patch against ui-sidebar. + - id: dsh-desktop-shell + name: dsh-desktop-shell + # DSH Desktop owns the fixed-target dsh-market installer and its lightweight # settings entry. After dshmarket is installed and Harness restarts, the # community plugin replaces the placeholder with its complete market UI. diff --git a/package-lock.json b/package-lock.json index fc2f5fac..07925ed9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,26 +11,27 @@ "license": "MIT", "dependencies": { "@deepseek-ai/cordis-plugin-group": "1.0.1", - "@deepseek-ai/dsh": "0.1.0-rc.7", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.0-rc.7", - "@deepseek-ai/dsh-atomic-write": "0.1.0-rc.7", - "@deepseek-ai/dsh-bash-local": "0.1.0-rc.7", - "@deepseek-ai/dsh-code-runtime": "0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "0.1.0-rc.7", - "@deepseek-ai/dsh-fs": "0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "0.1.0-rc.7", - "@deepseek-ai/dsh-output-retention": "0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "0.1.0-rc.7", - "@deepseek-ai/dsh-session-telemetry": "0.1.0-rc.7", - "@deepseek-ai/dsh-session-title-llm": "0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "0.1.0-rc.7", - "@deepseek-ai/dsh-spill": "0.1.0-rc.7", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "0.1.0-rc.7", - "@deepseek-ai/dsh-workflow": "0.1.0-rc.7", + "@deepseek-ai/dsh": "0.1.0-rc.8", + "@deepseek-ai/dsh-anonymous-user-id": "0.1.0-rc.8", + "@deepseek-ai/dsh-atomic-write": "0.1.0-rc.8", + "@deepseek-ai/dsh-bash-local": "0.1.0-rc.8", + "@deepseek-ai/dsh-code-runtime": "0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "0.1.0-rc.8", + "@deepseek-ai/dsh-fs": "0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "0.1.0-rc.8", + "@deepseek-ai/dsh-output-retention": "0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "0.1.0-rc.8", + "@deepseek-ai/dsh-session-telemetry": "0.1.0-rc.8", + "@deepseek-ai/dsh-session-title-llm": "0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "0.1.0-rc.8", + "@deepseek-ai/dsh-spill": "0.1.0-rc.8", + "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "0.1.0-rc.8", + "@deepseek-ai/dsh-workflow": "0.1.0-rc.8", "dsh-desktop-market-installer": "file:packages/dsh-desktop-market-installer", + "dsh-desktop-shell": "file:packages/dsh-desktop-shell", "electron-updater": "^6.8.9", "node": "24.9.0", "pnpm": "10.34.5", @@ -896,9 +897,9 @@ "license": "MIT" }, "node_modules/@deepseek-ai/dsh": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh/-/dsh-0.1.0-rc.7.tgz", - "integrity": "sha512-ZceDCJ8FAywih+USW/OMk9jEhunlvJBGEz4kqrhau23hPzbciOazZrywH0nBRsaalSeAJ1JGBmjtw4OSjToStw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh/-/dsh-0.1.0-rc.8.tgz", + "integrity": "sha512-VQU5NlomrKLRgcXuOf+sxWFvqxPA8q9vMhrKPlPPXiOJEhGlGlAdiyxZvZxkCVI+v0zbhe21cY3/luLyxpSzzA==", "license": "MIT", "dependencies": { "@deepseek-ai/cordis": "^4.0.1", @@ -906,59 +907,60 @@ "@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.0-rc.7", - "@deepseek-ai/dsh-agent-tool-presentation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-app-boot": "^0.1.0-rc.7", - "@deepseek-ai/dsh-base": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-cordis": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cmdline": "^0.1.0-rc.7", - "@deepseek-ai/dsh-command-compact": "^0.1.0-rc.7", - "@deepseek-ai/dsh-command-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction-basic": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-client-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal-round-driver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-headless": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-mcp-client": "^0.1.0-rc.7", - "@deepseek-ai/dsh-persona": "^0.1.0-rc.7", - "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.7", - "@deepseek-ai/dsh-pwsh-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-schedule": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-reference": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.7", - "@deepseek-ai/dsh-terminal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.7", - "@deepseek-ai/dsh-time-context": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tmux-context": "^0.1.0-rc.7", - "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-bash": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-fs-search": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-pwsh": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-ralph": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-subagent-control": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-todo": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-web": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.7", - "@deepseek-ai/dsh-web-app": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workflow-worker-thread": "^0.1.0-rc.7", + "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-tool-presentation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-app-boot": "^0.1.0-rc.8", + "@deepseek-ai/dsh-base": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-cordis": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cmdline": "^0.1.0-rc.8", + "@deepseek-ai/dsh-command-compact": "^0.1.0-rc.8", + "@deepseek-ai/dsh-command-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction-basic": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-client-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal-round-driver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-headless": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-mcp-client": "^0.1.0-rc.8", + "@deepseek-ai/dsh-persona": "^0.1.0-rc.8", + "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.8", + "@deepseek-ai/dsh-pwsh-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-schedule": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.8", + "@deepseek-ai/dsh-terminal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.8", + "@deepseek-ai/dsh-time-context": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tmux-context": "^0.1.0-rc.8", + "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-bash": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-fs-search": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-pwsh": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-pwsh-persistent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-ralph": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-subagent-control": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-todo": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-web": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.8", + "@deepseek-ai/dsh-web-app": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workflow-worker-thread": "^0.1.0-rc.8", "commander": "^15.0.0", "js-yaml": "^4.2.0", "node-addon-require-builtin": "^0.1.4" @@ -968,80 +970,80 @@ } }, "node_modules/@deepseek-ai/dsh-agent": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent/-/dsh-agent-0.1.0-rc.7.tgz", - "integrity": "sha512-AqBQavJYgbCUUYBHP7OGCaw8WN5082NXYQOoOfNRO72bub3E+/nWkl8b4B7BAJdFfyLo9ce+Kgb1BCHSJU/JLg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent/-/dsh-agent-0.1.0-rc.8.tgz", + "integrity": "sha512-fOl46ZvzoYHalrlyfOJAHNhzyKeVDTUnZZKNSJEr9GY/98WJTjcV21agVEofTXldkJ7a/ws2HpJkVNJVFMtslg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-agent-default-model": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-default-model/-/dsh-agent-default-model-0.1.0-rc.7.tgz", - "integrity": "sha512-zHtD4FAqxzidyNiyx1bpvLHdOTTsKnmjlHRqDS1KegIMSTNFmmp1B2bHdAUXp/OH7fPDmv+1ZXzDoJhBNUY9jA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-default-model/-/dsh-agent-default-model-0.1.0-rc.8.tgz", + "integrity": "sha512-FSmgVy8yeVYx3krUwfWZR3JokLD202FSuEd/ZfGdxA+BhOKAOfhNv539kujatVqXyzCG3XiRNda7zWxCh2h7/A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-agent-instructions": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-instructions/-/dsh-agent-instructions-0.1.0-rc.7.tgz", - "integrity": "sha512-laLz5ee7tKqVzrj15ztHuOnJLxDiGlqFOm6mEJUjJPWWD9Yzj1Iq+6WHZZ3Hw66vrNzYKqEN0TBofWF3DA7OzQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-instructions/-/dsh-agent-instructions-0.1.0-rc.8.tgz", + "integrity": "sha512-T+JER2gUZbopOxNeHKUE7EfNof30yihsi7GXKB/lOLoy1XMvd5mlzjSHA/OzqjLxiZyyN4V7XAGURApVD3Z7sw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-agent-loop": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-loop/-/dsh-agent-loop-0.1.0-rc.7.tgz", - "integrity": "sha512-98jV+6XnkZ93g4C1BJ/hCcC8k4GVhH+oNrkhLFvc6aOQz6o+9kdV8IrgEVr0qRcAfHKlCMfiV4BIDz4eBBoziw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-loop/-/dsh-agent-loop-0.1.0-rc.8.tgz", + "integrity": "sha512-6Vg5oLy3UZ6lJKMPxldqqBylKSMOpbV/FRrqzDqn3hGdksYBzt9K2hUJm/rE2RyguYKUKFPm2hExs0nn4HKmWA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-agent-presets": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-presets/-/dsh-agent-presets-0.1.0-rc.7.tgz", - "integrity": "sha512-T/VcMV7lrXCFmRKrtoMTAz5DAdUmku6hz95wbikRvRc0WizIwQ3R04ke9KIeDiQcxK8xkE8cx+IYqEWa9C5gPg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-presets/-/dsh-agent-presets-0.1.0-rc.8.tgz", + "integrity": "sha512-7h+kE0KDrJCk2Y8GAqF4fu4YqZmFi5U8/AarFkGUqRI3HDugD6oYf05c7ZWNF7lQXh1OmwmrSbuPhT/YXJapOg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -1051,88 +1053,90 @@ "@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.0-rc.7", - "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-agent-tool-presentation": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-tool-presentation/-/dsh-agent-tool-presentation-0.1.0-rc.7.tgz", - "integrity": "sha512-RAtrfRyLZ/ob9lW5/fKeU7T4LYPTXYP7qCmu2i7ZBqwHseMdYHk0U1Ti8z2kr2NF4LIzHNUXIwaE9s7za5cwuA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-agent-tool-presentation/-/dsh-agent-tool-presentation-0.1.0-rc.8.tgz", + "integrity": "sha512-DQouZBh0yjKy8bi0EHQZrZ1B0E+Sc321o5oIyrrmL3hh1sbBsWVrnTvwKPP+SU7J6gnIzyITJ7qEV7pcCGOB2w==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-anonymous-user-id": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-anonymous-user-id/-/dsh-anonymous-user-id-0.1.0-rc.7.tgz", - "integrity": "sha512-g39W2HSWum6ghJG3src3rLVR8mnCsc0xCBSRpef1Fxgsjjn1LS2KNstKThXQtn7lYQZM/DNE7uiaOmsLxayeJQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-anonymous-user-id/-/dsh-anonymous-user-id-0.1.0-rc.8.tgz", + "integrity": "sha512-vUESbXtDdqIyelCNqX3ijOfqNfw65iSaJaqzfiqQhmSd9ZrNJ1fPUHl8FoW1BdfK8FjrDyh32R6BtuVpI7Zdhw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-api-gateway": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-gateway/-/dsh-api-gateway-0.1.0-rc.7.tgz", - "integrity": "sha512-tcoOuHMSqYqCtMxLjWBHKN+glS56XaUo3ImphvDvUkB84FyU3btHNJbYeAt2oXoWbHfOedcIRWpfNN4tSmhPwQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-gateway/-/dsh-api-gateway-0.1.0-rc.8.tgz", + "integrity": "sha512-rNA9+Sq3lXFDmyoFLpXNbcuWg7iFeepCwDi+jt1oGjwZTdZJ2nEWpU6GKlOiqadQjHYzfwEbCqmcuJy32qke/A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-api-remotes": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-remotes/-/dsh-api-remotes-0.1.0-rc.7.tgz", - "integrity": "sha512-dsP69u0avHRcJTPzngudqCm73UaTxNvGi/557DNPi3cOSoIh1SyPzPgk8W8rQQEFTL07rkwt8KfdQoMU5ga1fg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-api-remotes/-/dsh-api-remotes-0.1.0-rc.8.tgz", + "integrity": "sha512-s/zmFmU6R+dDxUWbHucIyfVgJG4v8kXa3YRjwjMO+Bu871ZG5Zsht6cvRqeSyu0A/Gs06ZfKYeKE0sdbCZ1NiA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.7", - "@deepseek-ai/dsh-api-gateway": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-message-feedback": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-api-gateway": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials": "^0.1.0-rc.8", + "@deepseek-ai/dsh-file-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-message-feedback": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-app-boot": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-app-boot/-/dsh-app-boot-0.1.0-rc.7.tgz", - "integrity": "sha512-3qgv994YzNGrlDcOyarL4vqNky3ttmYsUhDsMgGdefALK6gpL7ZCWF+9m0ehZjGY0Rb4VcBdieJYOY2EgpWb0w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-app-boot/-/dsh-app-boot-0.1.0-rc.8.tgz", + "integrity": "sha512-DS63o1PhX2Gvqdgl6Wd8vZnLl0qo8gJ9LpSHXeJBJL9HITpLPhdVYE3X6S0icIYdbGO2plNyhxVJOSN6ibO7VA==", "license": "MIT", "dependencies": { "js-yaml": "^4.2.0" @@ -1143,10 +1147,10 @@ "@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.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-hmr": { @@ -1155,30 +1159,30 @@ } }, "node_modules/@deepseek-ai/dsh-atomic-write": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-atomic-write/-/dsh-atomic-write-0.1.0-rc.7.tgz", - "integrity": "sha512-LxRx6K8FJ8bXZHiNhH6Rvj+jh/ZIpolmsmi138XrvMUGvbOBWE6QLbdzcgTgwrYZm5GP2kqqLe/3gQlgtt2bXA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-atomic-write/-/dsh-atomic-write-0.1.0-rc.8.tgz", + "integrity": "sha512-SWP+NAat3oteaPi47zLPz4vxeYCHNVmFpN1aeKDuPHpe/ouNTl+WcyIONAJ+1MbZ+8APWhSaJIVu6ORJEUhVGw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-attachment": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-attachment/-/dsh-attachment-0.1.0-rc.7.tgz", - "integrity": "sha512-rsR/xVNOGIig8gXxhrKnkd6YD7aYliGtA/e7b4DlPawMpLhsItAh0HQ832n8LJn1aGZxKf68y9PRgzfljsveOQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-attachment/-/dsh-attachment-0.1.0-rc.8.tgz", + "integrity": "sha512-cCrg4WWiav7pGtbdU8dJTpAG28cPnkWVB2YPOrlBCgBbhQziGcG9Dv67Ti6L3PI4OQKC55gYBFinQghFO/7FGg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-attachment-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-attachment-local/-/dsh-attachment-local-0.1.0-rc.7.tgz", - "integrity": "sha512-7i2Fuj811MFeqrUYnpEG3VBoShZEjQ7zNXdLOa1W5hZ4TWV+tUjX7pJoN88U1LOgEOWMc9uzSPqGA5/aKBYgdQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-attachment-local/-/dsh-attachment-local-0.1.0-rc.8.tgz", + "integrity": "sha512-TPsDbDPA8yoE3hw1MtrW61AMh72oMiCY+rkO3bDnvc4MtGwKvXcHWtbNPeVpLgMeznaXsnTU3GUp9Fa6PXdp8A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -1186,166 +1190,166 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-base": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-base/-/dsh-base-0.1.0-rc.7.tgz", - "integrity": "sha512-lpAMUO3PdxZwLnCQOdOZ/fu7eI27Ckz3Ec9MB9QYL4u34yatndCliTrGaFBDoNHoWt3V4gojzszRFrEx+Vce/g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-base/-/dsh-base-0.1.0-rc.8.tgz", + "integrity": "sha512-aMjXT6d5t8SGQg24geOSX6O0ky+hJLijhzZklDcICrBvGSKXvuS8jxLOcL5u4s4pFCODXhuOpvTfFuUhN2RK3Q==", "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.0-rc.7", - "@deepseek-ai/dsh-agent-default-model": "^0.1.0-rc.7", - "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.7", - "@deepseek-ai/dsh-agent-loop": "^0.1.0-rc.7", - "@deepseek-ai/dsh-api-gateway": "^0.1.0-rc.7", - "@deepseek-ai/dsh-attachment-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-bash-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-command-compact": "^0.1.0-rc.7", - "@deepseek-ai/dsh-command-feedback": "^0.1.0-rc.7", - "@deepseek-ai/dsh-command-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction-basic": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs-observation-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal-round-driver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm-deepseek": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm-pi-ai": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm-retry": "^0.1.0-rc.7", - "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.7", - "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.7", - "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-repeat-tool-reminder": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-query-sqlite": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-telemetry-otel": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title-first-prompt-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings-file": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill-badge": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.7", - "@deepseek-ai/dsh-spill-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-spill-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent-fork-in-process": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent-spawn-in-process": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-bash": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-call-timeout-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-fs-search": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-pwsh": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-ralph": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-subagent-control": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-subagent-report": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-todo": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-web": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-loader": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.7", - "@deepseek-ai/dsh-web": "^0.1.0-rc.7", - "@deepseek-ai/dsh-web-search-deepseek": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workflow-worker-thread": "^0.1.0-rc.7" - }, - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-default-model": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-loop": "^0.1.0-rc.8", + "@deepseek-ai/dsh-api-gateway": "^0.1.0-rc.8", + "@deepseek-ai/dsh-attachment-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-bash-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-command-compact": "^0.1.0-rc.8", + "@deepseek-ai/dsh-command-feedback": "^0.1.0-rc.8", + "@deepseek-ai/dsh-command-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction-basic": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs-observation-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal-round-driver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm-deepseek": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm-pi-ai": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm-retry": "^0.1.0-rc.8", + "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.8", + "@deepseek-ai/dsh-pwsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-repeat-tool-reminder": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-query-sqlite": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-telemetry-otel": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title-first-prompt-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings-file": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill-badge": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill-filesystem": "^0.1.0-rc.8", + "@deepseek-ai/dsh-spill-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-spill-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent-fork-in-process": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent-spawn-in-process": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-bash": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-call-timeout-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-fs-search": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-pwsh": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-ralph": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-str-replace-editor": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-subagent-control": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-subagent-report": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-todo": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-web": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-loader": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.8", + "@deepseek-ai/dsh-web": "^0.1.0-rc.8", + "@deepseek-ai/dsh-web-search-deepseek": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workflow-worker-thread": "^0.1.0-rc.8" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-bash-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-bash-local/-/dsh-bash-local-0.1.0-rc.7.tgz", - "integrity": "sha512-fsw2Ex5ExyX4A62P1+fodbnUG4PXOSyHAM4YtaLg2kcPcElLwatYNPG3gEuulxwbpWDlx/OWvbjHThnJUuzaoA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-bash-local/-/dsh-bash-local-0.1.0-rc.8.tgz", + "integrity": "sha512-vMf3dMRrvVvwWCLJxobYONSebPtWqy2ZZKpRZ6o5fBrZbM88irbvL6F/6r/mu4ADTIDigUtpoxlRpOEQKbSuTg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-bash-sandbox": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-bash-sandbox/-/dsh-bash-sandbox-0.1.0-rc.7.tgz", - "integrity": "sha512-xX+XhqPeRaOqMPDNk8dPboHza2pP13hTIMt+ztvd8WpD0t35idrNrcsXEYs+CtKiFWn6I05WB1BeAimWkLDOcg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-bash-sandbox/-/dsh-bash-sandbox-0.1.0-rc.8.tgz", + "integrity": "sha512-gCFrmFwYyxjXJsSRrzs5RbvCli0I0Tn9JAJEHCWSskE8x9iCVU7ljtmrKvgRYr0J4YeXwzteNSfNhlJqasu/QQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-bash-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7" + "@deepseek-ai/dsh-bash-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-brand": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-brand/-/dsh-brand-0.1.0-rc.7.tgz", - "integrity": "sha512-P7+w0fN40yXXQkV360p6jQi63pcl68OOWebNGN5gf8w8sguvni2mA1cU8RLZzDkRNFSZD+BCw3D4uWYM+hhh7A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-brand/-/dsh-brand-0.1.0-rc.8.tgz", + "integrity": "sha512-402aUAfHxIZJrArBV4gDf0I/A/69A/By26FX6HTIOyFmCnB4wUBKh8jnglz1CorKWdZy8AKldAhh8HQhQEbGOQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-connection": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-connection/-/dsh-client-connection-0.1.0-rc.7.tgz", - "integrity": "sha512-JZWDKCbwKHOUcm7+JadKA3aJCSEB34XfPycCtPgdWfABIiHMaSpnmSVy/8Jed4hw6hxhnR6A3rnvW02Xr2yqwA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-connection/-/dsh-client-connection-0.1.0-rc.8.tgz", + "integrity": "sha512-O1Y1NmkvJjpR/rCYkzulRrKbFwUbpMlINR4G6fbpGXaLy0VzTqN+ptk0b3wJ4RrnKPi4WWLKNNdV647Fg/1sCw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-apiproxy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", "@deepseek-ai/schemastery": "^3.18.1", "ws": "^8.21.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-apiproxy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-hmr": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-hmr/-/dsh-client-hmr-0.1.0-rc.7.tgz", - "integrity": "sha512-uJVHLMgmf19JI7UCqrC8jipf/5oaM539RPJ5sNv+BJCbt9Ik6VqaKbu4uiF+gz8i8EqbXV3D9criL1IiCS+pdg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-hmr/-/dsh-client-hmr-0.1.0-rc.8.tgz", + "integrity": "sha512-Olzlpiw+2VIhNOZVEgi22b2U0jSv6HciAQpKj41TggI7oV+jhRDC2GuYFJoRQ8XBs3mcJCLG0DZtAcGrRP8n9Q==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" @@ -1353,648 +1357,565 @@ "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-locale": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-locale/-/dsh-client-locale-0.1.0-rc.7.tgz", - "integrity": "sha512-1onX79wXJfAzdwIJPUI9jEVYeVQJfWwyQvyL/OmGrnkCs8srJHIXBdYtsUC7ILlR13y5nOY4j6bifBOAoGRn6w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-locale/-/dsh-client-locale-0.1.0-rc.8.tgz", + "integrity": "sha512-S8ztym/oFU1aWPDtSZLTGWfprUBIuhfOrRNlw/qMAwhavJiQU/Ag0plg19JffGiOMAQuz2BU2n2mW/xhbpA5Vw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-modules": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-modules/-/dsh-client-modules-0.1.0-rc.7.tgz", - "integrity": "sha512-hczFl0TRH5sLt/dS0+TMCtQvfDoeLw/r88L6n3rXfY6Q1e4Yddg6RAv4kGsUoMoLYgWi7qPwD6HcUGgyKkDPHg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-modules/-/dsh-client-modules-0.1.0-rc.8.tgz", + "integrity": "sha512-K+uDZSmSbpmHFpvrKkdctHHDIjimv1NWDZoc7CYy7QIk0Vuis4jShDau6H5L0B9TScWBDyXAz/R7rXttFlwseA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/cordis-plugin-loader": "^1.0.2", + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-runtime": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-runtime/-/dsh-client-runtime-0.1.0-rc.7.tgz", - "integrity": "sha512-Ish2uFML2FibTpzo7QyVSt29jf/iG4j9BFQ41ychVMPRR3trJGM3h8CMuam3oKWlvB8OXVXFd6gO929w6PI0Ew==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-apiproxy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm-retry": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-runtime/-/dsh-client-runtime-0.1.0-rc.8.tgz", + "integrity": "sha512-wW/nktO/GVbGO/k163NlyJab/rK4D6xS5EL0bhYw4ojF1mxmWfrb3RUEYR5LcEUpFx/yXUHsUSgeO1ezmgIrvw==", + "license": "MIT", + "dependencies": { "immer": "^10.1.1", - "react": "^18.2.0", "zustand": "~4.4.7" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-apiproxy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm-retry": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-schema-form": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-schema-form/-/dsh-client-schema-form-0.1.0-rc.7.tgz", - "integrity": "sha512-acGeXjGl2lMqCO+jY1z9/FKbIiskk7FZO266OSBOwHJQP6yBd5MBnrvtPJUB3glP6xsQK8neFLLtRwVgRJ+GqQ==", + "node_modules/@deepseek-ai/dsh-client-ui-agent-preset": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-agent-preset/-/dsh-client-ui-agent-preset-0.1.0-rc.8.tgz", + "integrity": "sha512-z+okJSOT2/uAA4oomx1WNNl/2k9HsoNDmtewOeQVfSy9C8Ey9YBoVoiSQDsYyDHhesxxlBI8RMLU44Pj/w1uug==", "license": "MIT", - "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" - }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-ui-agent-preset": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-agent-preset/-/dsh-client-ui-agent-preset-0.1.0-rc.7.tgz", - "integrity": "sha512-85GLGfg3iEISMhHxn9ZePkB/mtXIJdWkpvSHCm9bZizK8KiyRfA/OjDpKfk5kvG16xKNV0KQo65HOf0JdwtyXQ==", + "node_modules/@deepseek-ai/dsh-client-ui-attachment": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-attachment/-/dsh-client-ui-attachment-0.1.0-rc.8.tgz", + "integrity": "sha512-TiKZEUGd22AFxkWpgQCLW9VmuSgWQ11RlIQd0941wPAc4RDZxtkjQWDMOlvRS/m8Oqod/5oKr3U6WRCZKS81vA==", "license": "MIT", + "dependencies": { + "clsx": "^2.0.0" + }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-ui-attachment": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-attachment/-/dsh-client-ui-attachment-0.1.0-rc.7.tgz", - "integrity": "sha512-IRA778yZpOaoJEkODlfydd6yuASf7hF229s64IY5zaY+22K7D+X1cmDo8D13UylxQXFPAomTlHtQtQpCtghKXw==", + "node_modules/@deepseek-ai/dsh-client-ui-brand-official": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-brand-official/-/dsh-client-ui-brand-official-0.1.0-rc.8.tgz", + "integrity": "sha512-eHzJkJGOKlQpap6uYaAZSh62MyJFEoPX8EvIp/kV3YHFDr4bZNc7Yg+ZLMaEXfIjPXKp26FhPiCIia9SP56n8A==", "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "clsx": "^2.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-commands": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-commands/-/dsh-client-ui-commands-0.1.0-rc.7.tgz", - "integrity": "sha512-gLuzEmgVhEIjVeLlmIAdKX/SEEFavnVOD0mQPlHIMqFAX/80yzYfRD7CMxXc0amOj7uBcw7qsSa4WzFvaWso3w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-commands/-/dsh-client-ui-commands-0.1.0-rc.8.tgz", + "integrity": "sha512-nMDF0MbRM03AEmQJzXCbXQWZxSfVPHBO0z+9DqR6LgGXshYLkzVMp1zkfvqLs5QwFAwDSci4vi/GONJOBSL5WA==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-conversation": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-conversation/-/dsh-client-ui-conversation-0.1.0-rc.7.tgz", - "integrity": "sha512-CyjFjP+oRJQ4ydX8WVrKUeloQnAJRA/fN6RRY6NAHldFC9pd1l8YogmTcR1JuCIlqzMnLRyYlGODQBYz8WOjmA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-conversation/-/dsh-client-ui-conversation-0.1.0-rc.8.tgz", + "integrity": "sha512-GnQSE47/goSm1UzxQpYQrQnMJLyTmYFH6NENdrOxrVJxQnB55ruactgM1kVwfFnc/WUQVYy0599AK7pxjbxjMg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", "@deepseek-ai/schemastery": "^3.18.1", "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm-retry": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-stats": "^0.1.0-rc.7", - "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm-retry": "^0.1.0-rc.8", + "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-stats": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-todo": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-cordis": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-cordis/-/dsh-client-ui-cordis-0.1.0-rc.7.tgz", - "integrity": "sha512-8OwbFdMHRIE7L2PvoIGwSOkhUYsznr9u773K3s64DMxp4oLLl3ZzHc2hfaOfQTTmyE7ItpDJm8Von42LsJBKaw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-cordis/-/dsh-client-ui-cordis-0.1.0-rc.8.tgz", + "integrity": "sha512-NvaSJxqC+HNPLPYPINHzJGRHI427mHSB2aaTGoyc9EFrYVJjvKpNu1QusWwObae5Y/Tx43I2NpFKTAcNVPXkOw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-tool": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-client-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-tool": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-client-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-deliverables": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-deliverables/-/dsh-client-ui-deliverables-0.1.0-rc.7.tgz", - "integrity": "sha512-uVN7TXKrGQMACKToSTPxOIeDlebQgi2OMiKBaKrYcI7jBsCRief3CTLziZ6Kups2h2s72Eo6gu/0eueccwLYew==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-deliverables/-/dsh-client-ui-deliverables-0.1.0-rc.8.tgz", + "integrity": "sha512-b0XZ/V7FPpTTtmHoKNEVOgl9bJGXGqktzMNNJgifHGl/Us1nNnQVDhM9XDbuUV5iXFPnRrKsR29OTnuTB+txZA==", "license": "MIT", - "dependencies": { - "react": "^18.2.0" - }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-directory-picker-browse/-/dsh-client-ui-directory-picker-browse-0.1.0-rc.7.tgz", - "integrity": "sha512-5lj27c68wWqroyIOXmFPGUDFQxICDYEcYAJSuV5ZbnHXyN2cBTTDTW4zJPwisY5GhKfiJXjhS0YZqLi54/Xn+Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-directory-picker-browse/-/dsh-client-ui-directory-picker-browse-0.1.0-rc.8.tgz", + "integrity": "sha512-sjQcMuut8CRjqnFZHzX1Zzs1zISDlp/gYQVM9Wkyt9KF+XJfV5pHP0KTHZHwOslAqt2OJMnE38uW2yVncLg3sA==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-workspace": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-directory-picker-native/-/dsh-client-ui-directory-picker-native-0.1.0-rc.7.tgz", - "integrity": "sha512-SZ9NuuIDrBjHJsEcnqwhbiCZknjkyNd0ZBHDl453p2WHkfA8zwDMUJRdAMWd0sC95WH2Yu4rMzkAVYjZwCBjVw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-directory-picker-native/-/dsh-client-ui-directory-picker-native-0.1.0-rc.8.tgz", + "integrity": "sha512-UPR5kSjfMGjLpO41fXXVxcen9Bq9eCzonStnhqMMk/6zC2EQUDkRs+KhYmaInkHI/CMjdTBBqBPRwjFG2iEsYQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-workspace": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-goal": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-goal/-/dsh-client-ui-goal-0.1.0-rc.7.tgz", - "integrity": "sha512-zZEAbaA6ZCMw2ZDGMWFm+nBXnBBRfI8StRtx33GoFcJHlMIP5mJfuSm2gcFHdO+3aeAmuTf5G++DdWwLRLZv9A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-goal/-/dsh-client-ui-goal-0.1.0-rc.8.tgz", + "integrity": "sha512-kAs6DktlELshs27S3nnjzciK9bGhL2b6RXmZ/mUNYwgiYxeYY4/QYynSNbD0ZQINe0VeGy6yQTv9dbqDBArndA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-input-trigger": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-input-trigger/-/dsh-client-ui-input-trigger-0.1.0-rc.7.tgz", - "integrity": "sha512-Sfn4YlS6dKm/ojGRyZL5oq34+GSeyirzGkmqhtoX7hpjHAhBVmugz2jku2ijYEjjFtD6YKYdWwvQxHdRaHFZ+w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-input-trigger/-/dsh-client-ui-input-trigger-0.1.0-rc.8.tgz", + "integrity": "sha512-uVJEZ1ftUdMemLvNf17gzB6ThYw0DL4k+0kcQrUPc6LHNQ2ZeuuvOz/931OlqzzUKMtlAGZgy0LvWyJ62LlSog==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-file-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-jobs": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-jobs/-/dsh-client-ui-jobs-0.1.0-rc.7.tgz", - "integrity": "sha512-q8WvaB1gxj4OBPCLC/luDLQ7TRY2iwuhOZKrwG1MbXhSmfd14RiyKHG1p/5HIxwTJZfqnxuN69NzdAZY6cjU8g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-jobs/-/dsh-client-ui-jobs-0.1.0-rc.8.tgz", + "integrity": "sha512-gCJR9ymswAZa8OiyZQUKa9GpxRT2sP76tfqBGcF5pRN0xOKudlREM6xD3as2knY5EZELW5qQMVKlVVJZ2Uu7fA==", "license": "MIT", - "dependencies": { - "react": "^18.2.0" - }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-layout": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-layout/-/dsh-client-ui-layout-0.1.0-rc.7.tgz", - "integrity": "sha512-4z5xkH/O8GT6ve1IX15WTel236fJwSuRZusMKJ9qIxdslZZ1h+wMbtgX3tCqg7mTtMznRDspCpC1b1QSAt4nTg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-layout/-/dsh-client-ui-layout-0.1.0-rc.8.tgz", + "integrity": "sha512-tbHawbf8FsJqdwnXrU46V8u13bfAFVQQf0hA0OXH4k0PiLiThdZgQFn/T94+56JMUzD1QLqe7DLmNz29cwmjvQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-message-feedback": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-message-feedback/-/dsh-client-ui-message-feedback-0.1.0-rc.7.tgz", - "integrity": "sha512-B8y2+tu1xorpHmwo8KWsLFZwa4P0uFCI32H1SwYyQjBjoTbSb+TOfPA3i6na988XMiF8NCcxynTFzHRv/77AJw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-message-feedback/-/dsh-client-ui-message-feedback-0.1.0-rc.8.tgz", + "integrity": "sha512-tzm/vvhysNa3+1BlTnuj3WJit5+u8U1NDecLqMPTm6U1P2s2bjKtvUpmMNqk+AdeYGYcJjXPadLEuWSNsIWFlQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-message-feedback": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-message-feedback": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-model-selection": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-model-selection/-/dsh-client-ui-model-selection-0.1.0-rc.7.tgz", - "integrity": "sha512-Gr5goo9dEGCR/CqpeJgO1mGO1ZqoX4tpuAMuZoq3wmLwaeK8qOMMhHGTxGOI9NbBD1snvbUzOJP/LUoNrS61YQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-model-selection/-/dsh-client-ui-model-selection-0.1.0-rc.8.tgz", + "integrity": "sha512-ODRo7IX4VKkgy6C0ibElP5p1Ek6NBm6Qz6S95cZQH2J+PXWTb57/6UvNfxqyst8nFh1wll4oRb1m4fm6MU/fqA==", "license": "MIT", + "dependencies": { + "clsx": "^2.1.1" + }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "clsx": "^2.1.1", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-permission-presets": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.1.0-rc.7.tgz", - "integrity": "sha512-OO/miNmPCJS/5GffqXeBnPvdx1HnHvi9AHb4Uoy9N+zucwo7ZQV40lQ+ODcAX9UaRW/6x3a8CxQ3G4q1t/ltKQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.1.0-rc.8.tgz", + "integrity": "sha512-mYF/TX4GVJgRxDYPIk/iQKkGXz8qHkfFJE3GqIw5E27g+Msfg8AEGqfWEPp4CZeIK/3zcgpMLzgjMLOliWZ2dA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-schema-form": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-plan": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-plan/-/dsh-client-ui-plan-0.1.0-rc.7.tgz", - "integrity": "sha512-b6qqGcq5MxulD+XBxcD3ZewgJ17OUegeSA0Ov0afC4hvgyhWhZP3b+odH92ax7Ckaat8/Yx2j4NPpu81e30qLA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-plan/-/dsh-client-ui-plan-0.1.0-rc.8.tgz", + "integrity": "sha512-OmCuuYCqSlbYqd4s781WipQNKWdHGUn8TPIxrKrcbe94vJacuBtIUIJkDi48dy0IimI+ln/eHxD9WC/9+bJEmA==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1", + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.8" + } + }, + "node_modules/@deepseek-ai/dsh-client-ui-reference": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-reference/-/dsh-client-ui-reference-0.1.0-rc.8.tgz", + "integrity": "sha512-9qQYmOqG58qlsYNipOMsrL+Ay5Imx8lHJk9GV1rW++LGl6HMb6V1qZBHGIAwO/KOOInnJSEZE65DYB54r+z1Fw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-plan-mode": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-file-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-ui-primitives": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-primitives/-/dsh-client-ui-primitives-0.1.0-rc.7.tgz", - "integrity": "sha512-x3cnIAeOdDMd7no8JwP65q7J9Fj4xQWAZPPJY4MzgfQAAOcHJb0T0d5Uo4FXMiCcTeU/73n7BssS5PE7jjgiDg==", + "node_modules/@deepseek-ai/dsh-client-ui-renderer": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-renderer/-/dsh-client-ui-renderer-0.1.0-rc.8.tgz", + "integrity": "sha512-/MpR9i++feUFNzJgCChLfct1RphTPJ1WKfZrIsczjyOAZNBzAM5LRjpvM0ZO5Vg7rs7id+PLJYuUKy2e2V5aAA==", "license": "MIT", "dependencies": { - "@shikijs/langs": "^4.3.1", - "@types/mdast": "^4.0.4", - "anser": "^2.3.5", - "clsx": "^2.0.0", - "katex": "^0.16.47", - "mdast-util-from-markdown": "^2.0.3", - "mdast-util-gfm": "^3.1.0", - "mdast-util-math": "^3.0.0", - "micromark-core-commonmark": "^2.0.3", - "micromark-extension-gfm": "^3.0.0", - "micromark-extension-math": "^3.1.0", - "micromark-factory-space": "^2.0.1", - "micromark-util-character": "^2.1.1", - "micromark-util-classify-character": "^2.0.1", - "micromark-util-sanitize-uri": "^2.0.1", - "micromark-util-symbol": "^2.0.1", - "micromark-util-types": "^2.0.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "shiki": "^4.3.1" + "use-sync-external-store": "1.2.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings/-/dsh-client-ui-settings-0.1.0-rc.7.tgz", - "integrity": "sha512-I02BGKw3/yG25yf5omsMwmwJ2CnFyxTvbxqgRgSmTCUxATkLT87K8SxcemRZqXnFXQZhm6Il6bwVCpVfRfmNoA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings/-/dsh-client-ui-settings-0.1.0-rc.8.tgz", + "integrity": "sha512-qSOjpmglOPsLzx6Q5yysrU4c4W6QWFOkyVyqePA5lNPOdny2MH19qbuNleQHbiBo4Zadh/dtBn/SuNRfSp+pjw==", "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "^3.18.1" + }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-schema-form": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-general": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-general/-/dsh-client-ui-settings-general-0.1.0-rc.7.tgz", - "integrity": "sha512-L5heQqyzZ/Kd+/hj8Ptd89OOss6FI8TjD3iwC47V3Xj/8ZgtnHwEA7vSqeoTe03uzRz8Zd8ec+bz/q47z8/I/Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-general/-/dsh-client-ui-settings-general-0.1.0-rc.8.tgz", + "integrity": "sha512-lGGLCV17yUhKTHFAL+LWNY6LICLHmL614TbgaTFC80HWqeduURKzHU7a2PoySyMC2AOvYGpKjIRNUfifhv3aZw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", "@deepseek-ai/schemastery": "^3.18.1", "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-models": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-models/-/dsh-client-ui-settings-models-0.1.0-rc.7.tgz", - "integrity": "sha512-q73sXPomdUGpucj6pgKuO3WrGzqCoqyZhbqOZQL7EIdJcl9N3P+tNhsNj+ls1UOcOpb36Ou2NzUdIeyHSNVmKg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-models/-/dsh-client-ui-settings-models-0.1.0-rc.8.tgz", + "integrity": "sha512-6iTLiQ4+4ErqV2e0Lxeunr1Q0JLFJ3EcJ1KcxvT0mEy5xzZuilX7KJxsBWq11q3Wy/I0MYhbHZzZC+d42mFM4g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-schema-form": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/-/dsh-client-ui-settings-plugin-inventory-0.1.0-rc.7.tgz", - "integrity": "sha512-Ei6q5/UdUC9SxrTcbn/XR1NCe4iZgovhmbKCKBKBHMCNxhE0umdUJL8M7uKZdlpItJQ2ggiK9L8RmztKDmv59A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/-/dsh-client-ui-settings-plugin-inventory-0.1.0-rc.8.tgz", + "integrity": "sha512-IiixKrJbNqn4D8kvpSIRbxsfetEEbYN5Z3Uz209UWLOiY8Ja9VdQaVbh6BZlecO9BXX1Lgo8l8q+tXlC0IpifA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-plugins": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-plugins/-/dsh-client-ui-settings-plugins-0.1.0-rc.7.tgz", - "integrity": "sha512-oOOgj9NTv1GE+QdKhBfkcWG2+WS9uJz5NYgIZzahbg6xCbu4a2vugcCKcyslQEKKOB35mGHH/orPcoj2N+DeHg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-settings-plugins/-/dsh-client-ui-settings-plugins-0.1.0-rc.8.tgz", + "integrity": "sha512-BLLFFxBz4TmnXXsR5bnQaLMboXBOvCfhoqSbdPFqkqrmJSD+3KGbg4SQJZPcfLL19Kq7qeDraPCXwxo3wpIULg==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar/-/dsh-client-ui-sidebar-0.1.0-rc.7.tgz", - "integrity": "sha512-YduvLROf3gniqYggfRfkvNDMtqvWlREmwxVtxullWTXhrgXmcPya7GCKJeru8ZuyrF3FU1XqOR8KJT+OzLSv7w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-sidebar/-/dsh-client-ui-sidebar-0.1.0-rc.8.tgz", + "integrity": "sha512-7wcBnS27j8iIVDuai8BVifxcDZd5DIjlHgNHQKx8xQM+x92VKhiFOoMccjhXNaE6sExCUsER1OWRVp65MJvjqg==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-skill": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-skill/-/dsh-client-ui-skill-0.1.0-rc.7.tgz", - "integrity": "sha512-jxqQhu4RkNjEf2zTm/h9qJZ+q/mHdSBVC05XqfsdNP1VRni9k9L/LcR2TWHfyuvM61drtdi5s+/ZW9pbxaQPiQ==", - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-tool": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" - } - }, - "node_modules/@deepseek-ai/dsh-client-ui-slots": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-slots/-/dsh-client-ui-slots-0.1.0-rc.7.tgz", - "integrity": "sha512-5rPP/6IWZflhiegVHU56IOPGHtrhLgBV44mOFn2JNVwiwxxmKeIhEcnYD4M0eKkI+pRiJIO5WvkRYokIGgyFiA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-skill/-/dsh-client-ui-skill-0.1.0-rc.8.tgz", + "integrity": "sha512-s9tW3tDQ/82TzZcUHC/dZy5zmPppFKbSXnBotQDvjAU+rkS3/4k4Y6u9LffyZ813OjCoCfs7GOfWHAyZ0VmBag==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-tool": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-subagent": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-subagent/-/dsh-client-ui-subagent-0.1.0-rc.7.tgz", - "integrity": "sha512-geEZbS5N68tYJIPSToWIFPj0EjRiJBzryLvv3VL+INqt6urYCEm2uY7arNLUFJhHpjOJVi45ZM8qlh0qw5Sk7Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-subagent/-/dsh-client-ui-subagent-0.1.0-rc.8.tgz", + "integrity": "sha512-uK23jWwzFXbAELsnqS+7A4jL3Q/Ft8AI1hPrJE1ssldq535znexgdGAguZFC17fG+L0OWUtqwAKdXHmjyzqLiQ==", "license": "MIT", - "dependencies": { - "react": "^18.2.0" - }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-theme": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-theme/-/dsh-client-ui-theme-0.1.0-rc.7.tgz", - "integrity": "sha512-T5YaUZEJv0XHL0VYuP4/Vg+tbQGgRq0+gqsbqryuU5nq59PPISDED81zpCSb1jkZ/xFNc5Weq68+54cUGndpQg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-theme/-/dsh-client-ui-theme-0.1.0-rc.8.tgz", + "integrity": "sha512-orLl5eoWOnvjj76lI6xucE+lT+o+ouniRMSFsuYwF1DNH2pbyfVPQYJWL3iM55gE28yyZJGgmtmABnQBiEF5iA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", "@deepseek-ai/schemastery": "^3.18.1", "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-tool": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-tool/-/dsh-client-ui-tool-0.1.0-rc.7.tgz", - "integrity": "sha512-smo+6QWddCdtLQb4AUVbaaxsu3h8ImQlMDTBYK4qeoxlVTQdKgrNdgtQe5YoB8bvuGLQd6obVVwwScPNaD73xw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-tool/-/dsh-client-ui-tool-0.1.0-rc.8.tgz", + "integrity": "sha512-+Mtgx56PptrtoN4Q36yISe3u0lnVazdqV9s+1cLU2C2sAw7bB7o2Y/J9PBPiuBSsK8rmCLbUPYK6QefenwFE7Q==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-client-ui-trajectory": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-trajectory/-/dsh-client-ui-trajectory-0.1.0-rc.7.tgz", - "integrity": "sha512-Iuksc3q9Rpwj+EQMoCv9BqfLBEclDiUGiGwUec2p2FhZjr1yEBK4ujlQK2N71EteyBjQ5yODE+/S+TzNkrou9w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-trajectory/-/dsh-client-ui-trajectory-0.1.0-rc.8.tgz", + "integrity": "sha512-nEKtvkbNhk1Qau8jpyvGfcGLCL2Tfmw6Oi72i2oiZ/DHIcsBaeD0JVWOraEmQp3jYVjuuLSdjdCiPkuNU9nwgw==", "license": "MIT", "dependencies": { "@tanstack/react-virtual": "^3.14.9", @@ -2002,239 +1923,234 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-ui-user-questions": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-user-questions/-/dsh-client-ui-user-questions-0.1.0-rc.7.tgz", - "integrity": "sha512-HrFy3NpBx8J1Az+4WCljgXQvt/TTa6G3SKgtF0ZxdstB+BYoiMyBjO8aXAKQ94BM7zLcOVfUmL1bCb9t6tFmvg==", + "node_modules/@deepseek-ai/dsh-client-ui-trajectory/node_modules/@tanstack/react-virtual": { + "version": "3.14.10", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.14.10.tgz", + "integrity": "sha512-SRyoUbdFMRHuYXMijV5H4ZarQWpXkj3iANq8OFre+pybeVap8ZJjZ3Nz9bVjx4d8PfobVUQUdKyyyHYk3E+djw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "clsx": "^2.0.0", - "react": "^18.2.0" + "@tanstack/virtual-core": "3.17.8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "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" } }, - "node_modules/@deepseek-ai/dsh-client-ui-workflow-run": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-workflow-run/-/dsh-client-ui-workflow-run-0.1.0-rc.7.tgz", - "integrity": "sha512-XTKDLADe621GN+D2ysnOdVFvK1Et4nxvdrvsCxl7epsfrelsZD4l+/BleUQ+G/vQVZt3v03VkVVnE0SPGpt9Fg==", + "node_modules/@deepseek-ai/dsh-client-ui-trajectory/node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@deepseek-ai/dsh-client-ui-trajectory/node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", "license": "MIT", + "peer": true, "dependencies": { - "react": "^18.2.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workflow": "^0.1.0-rc.7" + "react": "^19.2.8" } }, - "node_modules/@deepseek-ai/dsh-client-ui-workspace": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-workspace/-/dsh-client-ui-workspace-0.1.0-rc.7.tgz", - "integrity": "sha512-+8TmQprJ4y1J9AyM+/ABkndWsv6/lwA7by6HlRup4Ks2auQBhejFG7FjZPFACjkWLuJaIgDUN1aRQ5MNFCanfQ==", + "node_modules/@deepseek-ai/dsh-client-ui-user-questions": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-user-questions/-/dsh-client-ui-user-questions-0.1.0-rc.8.tgz", + "integrity": "sha512-zv2U7Ur1ovGSU7j5mwsiCHUK/L20IXRcSFBis3kDZ9nMMl9m0N+56bXrZtJD1U9kTU7gtJ4Xat+rDpr3uTn0JA==", "license": "MIT", "dependencies": { "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-web": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-web/-/dsh-client-web-0.1.0-rc.7.tgz", - "integrity": "sha512-1pb5B7V8vhrgoCFsBwa8A+MsXkPvwPJ8fJ5ldMZ4Cd1RyFPgVev48LW/z2WF4tc6qkots2wnjZ2i6bMz8wvk2g==", + "node_modules/@deepseek-ai/dsh-client-ui-workflow-run": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-workflow-run/-/dsh-client-ui-workflow-run-0.1.0-rc.8.tgz", + "integrity": "sha512-lVvzaR66JwR2lgdURooLEyinUFu5cSaJLWBgdLetw0Z1B6N4RzBNwiIZxmIEZKwaVS7vhO9w6mphGV+4ujiypA==", "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-schema-form": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.7", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tool-workflow": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workflow": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-client-web-react": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-web-react/-/dsh-client-web-react-0.1.0-rc.7.tgz", - "integrity": "sha512-aw8s6RgMVJNNPTHB4TzVmKsuROp9yZDMKKXsMEEha8CESlHhCF1c+qxLsjAcilwY5CYCwin2T/3lot88k+ITiw==", + "node_modules/@deepseek-ai/dsh-client-ui-workspace": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-client-ui-workspace/-/dsh-client-ui-workspace-0.1.0-rc.8.tgz", + "integrity": "sha512-Il4hRRV9cDXyZptVC/OKHHOPNd84SwtflHCJ6RP97+OYxnENftdKgHENX7Kqf1RsSXF8RwmOtEvZoHljvYD79A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "react": "^18.2.0", - "use-sync-external-store": "1.2.0" + "clsx": "^2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-cmdline": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cmdline/-/dsh-cmdline-0.1.0-rc.7.tgz", - "integrity": "sha512-jNY9OOSpcH3csXqCwj8MMinByo42aUVIEauTSK1tNIOn6h6q0Y7SPu1ObIo5i3k0Khh/OWIiBTS1SbBlxcJHjw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cmdline/-/dsh-cmdline-0.1.0-rc.8.tgz", + "integrity": "sha512-xsnNFm2XpMD9wpBBLq80x8yXTi664DHywkLwxgAhDsWyp9tB2aSWaWVKxugPWSWwrB3F4nfloWqaeUfgXRFtBQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-code-runtime": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-code-runtime/-/dsh-code-runtime-0.1.0-rc.7.tgz", - "integrity": "sha512-vzW82eU4so0qJQ/XS7BGBUSguJMAgEOW3GaJJW0g+W5ysBJg+UC/Jjo1Np8mPjSpjjl4eoyXpshJzrwjoxCpRg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-code-runtime/-/dsh-code-runtime-0.1.0-rc.8.tgz", + "integrity": "sha512-6ZKyEE7dHH1UkKe5b0lg18Byww/7ocZyrNMVjAoUWEWp5i96Brf9Eavu9q3zepBMDMZJErCfV0pyt7KDhBJSig==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-code-runtime-worker-thread": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-code-runtime-worker-thread/-/dsh-code-runtime-worker-thread-0.1.0-rc.7.tgz", - "integrity": "sha512-CEGOMie1k733yc6TCSZuAtgbcs5H2QPO9wZnDnkx/kqaj3W+cEZGz6zZvljYNMWspNpomDTqOqpcB4ZAOI/K3g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-code-runtime-worker-thread/-/dsh-code-runtime-worker-thread-0.1.0-rc.8.tgz", + "integrity": "sha512-l9fsKYZN2qthnR8fbH8LrTbhWman8rjFCumIttahOKvQEjFMWImY1p8ypM3QtreAtUF8jyHdDnlV8xWQLfanmA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-code-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-code-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-command-compact": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-compact/-/dsh-command-compact-0.1.0-rc.7.tgz", - "integrity": "sha512-zDBNVlCAwnieffyctzqZ7hUGLJqyTjqvtCEvzSNckmd2owyuYNPDIeFu4NTo/xN8Z/TISiuGbgA0wnIBCIsNtQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-compact/-/dsh-command-compact-0.1.0-rc.8.tgz", + "integrity": "sha512-3Zlgw9ghDvj2/22/O7V4kvkxKRfknQw4t9ks5GtBEEVRuU9ullpFElAwq/EZ049zeCnmHnyskyJmwYZRIGaiRA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-command-feedback": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-feedback/-/dsh-command-feedback-0.1.0-rc.7.tgz", - "integrity": "sha512-DM/EGrz8vvgRJSxV4UAWtyJpxFi1v8gWkj/iT9q5iGex0zNdDO4Ml0/u/e73brmN3bsGyubsdUuIdkGsl8n/Ig==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-feedback/-/dsh-command-feedback-0.1.0-rc.8.tgz", + "integrity": "sha512-RqEcutd+nHVGND/JobUybb8HsgRigr5iEowDk0D7aZeXFJ3tN/0pW67w7DOxdhAVnODIpWg5tSnFpCT8fS78kQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-telemetry": "^0.1.0-rc.7" + "@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-telemetry": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-command-goal": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-goal/-/dsh-command-goal-0.1.0-rc.7.tgz", - "integrity": "sha512-ezuYaKmblRkOaFLUpzrTK9DiTrbES2lBtmkzo/Fg4UteDHLBVEaBgoips0J15gXJm8mE6o3LHhsgmGCIdNepKQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-command-goal/-/dsh-command-goal-0.1.0-rc.8.tgz", + "integrity": "sha512-kMjRuGJA79czVNzx//JEMrjAqDvYpiaOSH95NUu+Mome76S34jmnhCnIyzcg02GcXelDbk9epELAz5HR1Yti/Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-commands": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-commands/-/dsh-commands-0.1.0-rc.7.tgz", - "integrity": "sha512-SYrQpJZQ4fvfyfw3IJ5j0goUiOFZb1ZhcANgUp99HVlhhN/l1oEOAvEZL1efaSE7KIG6qp4JEn7iLtNdo8+mEA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-commands/-/dsh-commands-0.1.0-rc.8.tgz", + "integrity": "sha512-/i99EDLrUyd4bUVn4d7XS46vg09ZE0ervbE/aQaVUWLjDYKrarb7hPx9slADAg5/cUlJsN6L6CP544h9qlUo4g==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-compaction": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction/-/dsh-compaction-0.1.0-rc.7.tgz", - "integrity": "sha512-9SDsfhfOzriMw4AF/md6MDOjl+YOwtE9BKFwunCGzfyWZnOUljoKEZxjtU0w1sIESSAjJnTicqb2NBOAIV9YQQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction/-/dsh-compaction-0.1.0-rc.8.tgz", + "integrity": "sha512-sWNqZqejzpKsnEMPsNVA/WYK4S59XlYJtnWw8wCPushzQdUt5zhf+g7LVx0cStSozEfwurxRvaZdOmNaa4WhNQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-compaction-basic": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-basic/-/dsh-compaction-basic-0.1.0-rc.7.tgz", - "integrity": "sha512-c4bkTsJMKeDDgN3F9GBvEJCnsaLyl3I+uXb42rBPhOzH85bG2x55fMO9lBhtpvE5h5JUOP/tBMtTAW2OCe10Mg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-basic/-/dsh-compaction-basic-0.1.0-rc.8.tgz", + "integrity": "sha512-UWAUbJbxFQTI3m4LnwZDlcYOfzWNFN1WLjy0qNONNcz3BBa5Nu9kcz4C9jioSp6pg3KMfUNUOtbBRySigTIt7g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.8" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-compaction-tool-result-pruner": { @@ -2243,44 +2159,42 @@ } }, "node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-tool-result-pruner/-/dsh-compaction-tool-result-pruner-0.1.0-rc.7.tgz", - "integrity": "sha512-W4SbSgHlAhCB6ZXjr1/BdRiTn1F1x5nZdCY+0AazHoJY9FDACN0hUd6Rlkc40n3x0BHxXN/sZFDHCtT/26Fw+Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-compaction-tool-result-pruner/-/dsh-compaction-tool-result-pruner-0.1.0-rc.8.tgz", + "integrity": "sha512-Mk1QE57HxCMScgQ9ury0o7AM14h6g41cDg1G2kiNqD4Z2LBwFTlZJJAgipyhts4mcr1hz2WZTc8Xgbl9067ONA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.7" + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-token-meter": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-cordis-client-runner": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cordis-client-runner/-/dsh-cordis-client-runner-0.1.0-rc.7.tgz", - "integrity": "sha512-D8A93lu2T1/QfT9yRErxI3ptgTyGwJUIorzf5WQe4+3/buv1LUKCXJHabm0fknaDiQdUOge+MjdZDNV2SoYGvw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cordis-client-runner/-/dsh-cordis-client-runner-0.1.0-rc.8.tgz", + "integrity": "sha512-UbV2zFdOCubLAjQkmYi+6aPxxDfFTSshiyL4EHRbZyqQTdhrnDMfkY48SiVz8s026+E8xxGRPU4kNf3lg5DGeA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-cordis-host-runner": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cordis-host-runner/-/dsh-cordis-host-runner-0.1.0-rc.7.tgz", - "integrity": "sha512-A7R39cSNsLwjm+P54bUFBUd5+YbdyKkC5cLQqYt12STt0Z06az10Qt5rsL25rnWkxW7x7Ql0wVA83tOmO2oy0g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-cordis-host-runner/-/dsh-cordis-host-runner-0.1.0-rc.8.tgz", + "integrity": "sha512-DCJr6INHCI0Dypr1JAJj/BnvN31tpIt3Y8+KQ3GDfHW6pUBsc9GnXHpKsuQ4sK/fTj80GjaDYPGdWeB/uKMMdw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2288,31 +2202,31 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-credentials": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-credentials/-/dsh-credentials-0.1.0-rc.7.tgz", - "integrity": "sha512-24oY36x90GN3QG2BASlryjzsO5eLA1U9vsvH1tPtBRJ1pBC6JqnW2v0SfDI/pcMT0ZbWo0uEATiik8rrv6xRpA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-credentials/-/dsh-credentials-0.1.0-rc.8.tgz", + "integrity": "sha512-VopOhtUEa/fSmJr3fyKbsEG043kX1oGuBrmELAbkhmuDigl1cN88g0VPb9rMG2/dJ1h08wg+h0RJP+Ex4LjRWw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-credentials-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-credentials-local/-/dsh-credentials-local-0.1.0-rc.7.tgz", - "integrity": "sha512-3HB4nHXzR3HreJE4MfVSX45Am1/JiKFSDOYmrnyX7kK3Hvb9qH1J2Mm4gCzNislCemhZ+wlYQgevrvyH1L1PvQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-credentials-local/-/dsh-credentials-local-0.1.0-rc.8.tgz", + "integrity": "sha512-Msbz/+xNIHFXLjcDy2hZFpfV1qduuyjLl35BJOUqNz9eCEYv8b0lfKDI7nirv5E/TdxzLkO75WQ4f+8nifeUpQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2321,30 +2235,62 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.7" + "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8" + } + }, + "node_modules/@deepseek-ai/dsh-file-reference": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-file-reference/-/dsh-file-reference-0.1.0-rc.8.tgz", + "integrity": "sha512-SoU4Zm7L8E9ud5nTs1tVAINFrgKvIKypCdOOMLBjJkjLUvXMYmKFxfCM7xaJjOmK/C5suEVUtpukZhZZvZALNA==", + "license": "MIT", + "dependencies": { + "zod": "^4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1", + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" + } + }, + "node_modules/@deepseek-ai/dsh-file-reference-local": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-file-reference-local/-/dsh-file-reference-local-0.1.0-rc.8.tgz", + "integrity": "sha512-dw3p1NmuDgJkse1J2RuLwgfiySEFiyRL40o3mo1ireGxXt85JfLns1FR2mdN6v7z6pBpIogGPKV//0U31BWTfg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "^3.18.1" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1", + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-file-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-fs": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs/-/dsh-fs-0.1.0-rc.7.tgz", - "integrity": "sha512-l4jEcfjrV7hWTQo6sH0oXntg4pz1nVuDXRcprps6NhZ0/OOer/9SzUx7J9aLnLeX9XDtExXsFbxkXW5Js3ZFwg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs/-/dsh-fs-0.1.0-rc.8.tgz", + "integrity": "sha512-ge5GW56+z20vYACQ2jqtevusdgMXa64laeU/Chql+VIA3+6xyJ8gLX+oj/1O5TlzhvmZ7ZPfZGBFBEVsEZzTQw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-fs-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-local/-/dsh-fs-local-0.1.0-rc.7.tgz", - "integrity": "sha512-gbiH8xBrBw/1iRM3MLwI9zlFqLRg+1d+hNs8Etdn240xjWPuFdv5Hjg+eu4V5I+lU3M/lZieahEUpwYRScGuVw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-local/-/dsh-fs-local-0.1.0-rc.8.tgz", + "integrity": "sha512-yWk6WrAHs8b6395XnZZOCf3wY90xYKjh/tyU3/rwFy4oU8zq9gzn/x8rdaZD0zUp+wE0XqfBf2AS4Jo03SKHyQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2352,39 +2298,39 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-fs-observation-policy": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-observation-policy/-/dsh-fs-observation-policy-0.1.0-rc.7.tgz", - "integrity": "sha512-UbLBBWzUfBHAaZ6xGY/pPlIemGKz2iPoiCfmMkFQeLXVlLzeMrsTY4mvdx5ywu63tKYHvPpHHGdXMRFHqrTBvw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-observation-policy/-/dsh-fs-observation-policy-0.1.0-rc.8.tgz", + "integrity": "sha512-iarNlz2QoEROJUOHPjy7OKOwXuGeEhzk6nWj95F+UHNvKKaquagBE8YE1gzFqbg2U1wFVmPGoHBYl8q7hb5Z8Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-fs-sandbox": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-sandbox/-/dsh-fs-sandbox-0.1.0-rc.7.tgz", - "integrity": "sha512-QMv2QbqVAKkFAmIIPFmW8cvjk8U9T4ZEVsoPdbanw5Enrg3qEYZUmii9WBkAxNtQhG5MRUf5Tg8jDkZqPScYrQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-fs-sandbox/-/dsh-fs-sandbox-0.1.0-rc.8.tgz", + "integrity": "sha512-JfNgZHFyUyqO5XV/KQ2msO9OQ+98WrGCyfQp34yqCbIXSGS2r471C35Sub+OyTlpCkavGFUjsxo3iT7PLGyVVw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7" + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-goal": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-goal/-/dsh-goal-0.1.0-rc.7.tgz", - "integrity": "sha512-/pI2o0YcP21ReT+OQx7aA8SyUsnuEHxTQtMbu3DvN9ChvaFeptCTXGvHWocwVtzEEi48mdvAXF4Mx0Ptj1LJYA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-goal/-/dsh-goal-0.1.0-rc.8.tgz", + "integrity": "sha512-PR/9JjRn2H/33eyAVbtYBxzRWQhFO5N0S/188eAV9gjUTtHe5oSOnPxYy8iNkkMXxr+VE8Nno25Sun8WYmS8lQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2392,176 +2338,176 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-goal-round-driver": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-goal-round-driver/-/dsh-goal-round-driver-0.1.0-rc.7.tgz", - "integrity": "sha512-PWIaza45vFqqrf8bYyw5tPgEXRqLliHqAn3uKEwui8b1hM6UHJtApq1jX83PO4gtJZs/yAnRK6LCbaS5VJBC9A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-goal-round-driver/-/dsh-goal-round-driver-0.1.0-rc.8.tgz", + "integrity": "sha512-hCOOofSuqYxWo+Zc/vcF1C+qk38JEgzJ2ya4bBisWYiRwVFygHODquQllK5ffDjFM+SnX+CdmA+l2piiwCkzcA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-headless": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-headless/-/dsh-headless-0.1.0-rc.7.tgz", - "integrity": "sha512-EKn/wrMKgqxPUPwLgoTGk3BY8vFcYSYBWfXxnc8ZOKiH2pmprKnzm89AcOkbERNBJzPySQEsDdSoWwWJ2Mut4w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-headless/-/dsh-headless-0.1.0-rc.8.tgz", + "integrity": "sha512-SfjPjyLeno7iScndgFI3s9s8focqXADLNgIxkFbsL0BdAY7v3A6TOe+iSxnYX0fMhDqFC1jT3FVYlEzbJBg0Kg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-cmdline": "^0.1.0-rc.7", - "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.0-rc.7", + "@deepseek-ai/dsh-cmdline": "^0.1.0-rc.8", + "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.0-rc.8", "@deepseek-ai/schemastery": "^3.18.1", "commander": "^15.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-agent-default-model": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-default-model": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-home-paths": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-home-paths/-/dsh-home-paths-0.1.0-rc.7.tgz", - "integrity": "sha512-9Bu0eAbPw/FfCNpiX9hvyP5wedMUUQBc2sVTtU+xtH27/iUPxXoamFtBt3ydBJUeuVhja/leuhJ/d3MRhXO9fQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-home-paths/-/dsh-home-paths-0.1.0-rc.8.tgz", + "integrity": "sha512-9cQhH9CZsw7Zi73VnZk7CcuEVA6yR/Ox+7lp3VHq53fFYSPi0RL+kMWmh5XCrZB4U1OM3+PVsWsA5II9tB+t0Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-apiproxy": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-apiproxy/-/dsh-host-apiproxy-0.1.0-rc.7.tgz", - "integrity": "sha512-oBCIJzzvVXijtxAPqSlQUlYTywEmkn3JEpMB2PM8W4UafnxNhqvDh8ikGE7/1y6KWoFUS4jHGwerUzyp3C6oWw==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-agent-default-model": "^0.1.0-rc.7", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-directory-picker": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-native-command": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection-cache": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-query": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workspace": "^0.1.0-rc.7", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-apiproxy/-/dsh-host-apiproxy-0.1.0-rc.8.tgz", + "integrity": "sha512-viq2CoS6bRavSe1t9sLjgunykO+Vn/m83uSgONMH8O7QN0Pk3+FnZGHlPZ1lQ4auNJTwQjxFG6w372cGq9usWw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-default-model": "^0.1.0-rc.8", + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-directory-picker": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-native-command": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection-cache": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-query": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workspace": "^0.1.0-rc.8", "@deepseek-ai/schemastery": "^3.18.1", "fflate": "^0.8.2", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker/-/dsh-host-directory-picker-0.1.0-rc.7.tgz", - "integrity": "sha512-CamVZ4wOjGcgzOiRFQtG0J0hy4EY3nXJBRFs0S397+H7b9eJUTtaMdOxP5w7VhMQ0Aq2ND7gpadwIcFaqINsMw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker/-/dsh-host-directory-picker-0.1.0-rc.8.tgz", + "integrity": "sha512-aOUaUX0MTl8oLIuL27OkATMm+x2oTANuhhHpeGizn7+kfOX5bRKB3tyi7h6lGZ9O7WDiDLl2JajRqzBXlIPAAg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker-auto": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-auto/-/dsh-host-directory-picker-auto-0.1.0-rc.7.tgz", - "integrity": "sha512-QFuI5xGvVQAtbgN5xEZddM9+s5/2GWem8Gvq5hQpi1faUPyY/GS34B3lpuui0khSyS2NTa5GUXtYhDN1qZTVjw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-auto/-/dsh-host-directory-picker-auto-0.1.0-rc.8.tgz", + "integrity": "sha512-t6sn3AlcAARVCOgYMNZS/Yneiw+/2mDM6QOGxR6bu5E7DYTT/tllHe0PlHF1Wgh/LtfOTeDtcSPPfXjmrd+Lqw==", "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.0-rc.7", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker-browse": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-browse/-/dsh-host-directory-picker-browse-0.1.0-rc.7.tgz", - "integrity": "sha512-yVHhAPK61gurrgys+xKia3RCr2OlwFCSb/XGzSDuzkVtAmqtG03oWTvnMiNpRKUyGCRFdgN0TP3QDg46rRlQ/g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-browse/-/dsh-host-directory-picker-browse-0.1.0-rc.8.tgz", + "integrity": "sha512-zEQ7Wnz953GWiR3Y9GaqPGmhntEdjmcD+x6cbYKXWyeOtMHvv7Lu9EWGNneFHXFt50nMinDBT5kyGzElZ+cajA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-host-directory-picker": "^0.1.0-rc.7", + "@deepseek-ai/dsh-host-directory-picker": "^0.1.0-rc.8", "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker-native": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-native/-/dsh-host-directory-picker-native-0.1.0-rc.7.tgz", - "integrity": "sha512-CMHnPXL0oqwCnwt4TVRBAUfM4GNwkcZ1yURLlUo11ISBYh11LbOCXri3LoDjXzdCaZ21CWEKl25sZHnHnQ2GWg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-directory-picker-native/-/dsh-host-directory-picker-native-0.1.0-rc.8.tgz", + "integrity": "sha512-WUB4lW+ZmR743uH9LpFK0JrJU88601E7zvevffa93n7Bl4X7C5Y2yhbDK337H8W/brVlLNVgD2Fw2H/nIPZkDg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-host-directory-picker": "^0.1.0-rc.7", - "@deepseek-ai/dsh-native-command": "^0.1.0-rc.7", + "@deepseek-ai/dsh-host-directory-picker": "^0.1.0-rc.8", + "@deepseek-ai/dsh-native-command": "^0.1.0-rc.8", "koffi": "^3.1.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-frontend-static": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-frontend-static/-/dsh-host-frontend-static-0.1.0-rc.7.tgz", - "integrity": "sha512-qSKYgM2W5EV8mE5J3OEujTY4z7mRwPBCRK3hQrl8vm4IAuSf0vfv2qrS9rpgU2SUrpHlQCqsu44bp8OPX+XeUg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-frontend-static/-/dsh-host-frontend-static-0.1.0-rc.8.tgz", + "integrity": "sha512-/ef1xAygNL9hyGtSDzJ04nM5WSNzSxsloSUD2MQfM0FU3Y6b/CbHkUNFYaS0MnhS1YVSulDAGRQvXSgES8vZkg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-plugin-inventory": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-plugin-inventory/-/dsh-host-plugin-inventory-0.1.0-rc.7.tgz", - "integrity": "sha512-B8ITfMnBAdgkkuvoMrBdVgydhsCYGnP8XIGXIouOQyT9/eWbD3WqO76XG+u+e2G36ACXu2NaIxsRh3ijzyorwg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-plugin-inventory/-/dsh-host-plugin-inventory-0.1.0-rc.8.tgz", + "integrity": "sha512-knPtxCDZn1jbwRfOUnskjaj8hSXUCfBcjD9LPFXnKffsM6TFOeQrFGhkNKlZteXAMSChtY6pV9bpJj17y3SPNg==", "license": "MIT", "dependencies": { "zod": "^4.4.3" @@ -2569,28 +2515,28 @@ "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-host-webserver": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-webserver/-/dsh-host-webserver-0.1.0-rc.7.tgz", - "integrity": "sha512-ip6HeN9YpWJXgWKAWsL3JUrI8j+MHEvbQ/m3U5ubP/Pc0AQ9x+6xZ/nYe+22112I12rihiwb85ykFwFfx0QbKQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-host-webserver/-/dsh-host-webserver-0.1.0-rc.8.tgz", + "integrity": "sha512-MEKFrhvsYfj970QHLaKPpF/sIBpCe8NuSA0HGiWYJctX6TM9N3rLRhXx5p3zATDmXZclu1rbYhIbsqWw/twPig==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-invariants": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-invariants/-/dsh-invariants-0.1.0-rc.7.tgz", - "integrity": "sha512-PnO1F4aZGUmqZPyuPJpBUfQ4DZmjCGCNGr0yuN2iURTP/e6h0kGnTNTYgR2NqMvAtpP66WNiHhvH2LMqumk1+A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-invariants/-/dsh-invariants-0.1.0-rc.8.tgz", + "integrity": "sha512-u0lYqyxOYwfsVnbsfGXZos5vFvA4cqFnBEW3/ezgljNwkYwzeUP/Y5wjPnQjP+ZzBn3CnVeIF6s2N2Vk3iA5mQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" @@ -2600,65 +2546,65 @@ } }, "node_modules/@deepseek-ai/dsh-jobs": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-jobs/-/dsh-jobs-0.1.0-rc.7.tgz", - "integrity": "sha512-+omM89dEsaiAL1XtsSTMmRF46POp5g25Qs5KVj+Zfrk7whlXjLXwFiaukt/htdVdHIOM51qM+tCleqlHOU0Chw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-jobs/-/dsh-jobs-0.1.0-rc.8.tgz", + "integrity": "sha512-HqQudOA4VkjCMpxWiqTCMmuiTa/pehW6yG7dDsctO1vW5K48hWQ/h7czdJKgrh4SMuK4kchv3IipS1KaJmdaog==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-jobs-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-jobs-local/-/dsh-jobs-local-0.1.0-rc.7.tgz", - "integrity": "sha512-DAC8i+sshAkXPI8IcrUp5O6cOOkLLsKsD7mAcorFFbQjcPVBLdeRmtko3E1J9Jmf79IjoAvKVE+J+y84km9yKA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-jobs-local/-/dsh-jobs-local-0.1.0-rc.8.tgz", + "integrity": "sha512-8/cr4rYVS2sLB/Z4lL/ERUn14iBqT9T85rJFxxhEKuT3gMcAkiJuKP7t+ZFWPYSSmcNqDPmMI1ExG+GzjxsLVQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-launch-environment": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-launch-environment/-/dsh-launch-environment-0.1.0-rc.7.tgz", - "integrity": "sha512-ATVyi47hyAWFINOxi8TGurRF8rShW/WzqWKqjxEQU5gLZbWtAMgkpAc+hwlyo/lXytGaj5cMXyzeyjpD6URHFg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-launch-environment/-/dsh-launch-environment-0.1.0-rc.8.tgz", + "integrity": "sha512-VvYo5R7tu4QhX/dsNpuBy3AaauizU6yPCeWQUNzI3ZjGA0VHkkZhInilcgxVJkPA1lwEXYB+OoCAo07PUy6D/w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-llm": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm/-/dsh-llm-0.1.0-rc.7.tgz", - "integrity": "sha512-VaB9kQ8XOA+R5jtsWf92QMc1WpaatEAFUvQePGUYrzQ7Z86b9VhQQzmchh5VmknT4oRSSdn0re5tReCvfcYNXQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm/-/dsh-llm-0.1.0-rc.8.tgz", + "integrity": "sha512-hf6RmX2Stn1UtzpktSHQLkIktQkBm9i/3yFfJlbGSkwyw5Cv9sTYJbyoHzsSnnh6i8nRRcMcBhvMgm23I00oIw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-llm-deepseek": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-deepseek/-/dsh-llm-deepseek-0.1.0-rc.7.tgz", - "integrity": "sha512-cWNbBF+LeFrexht5V8cFeo4Kb0KeFaQWtemPJeTHRcijafq4OuQvgJEPx1IyelzzX6vctLQGSlmvvCNesLvIcw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-deepseek/-/dsh-llm-deepseek-0.1.0-rc.8.tgz", + "integrity": "sha512-s4LatnGbHwPJhcWGulO/7RsJBPHHBDB+2+1iRTJEn6vYPB0lOSRWtr91qdmAkUxBZmK5mwrf21IbuW+kWwtAZQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2666,19 +2612,20 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.8", + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-llm-pi-ai": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.1.0-rc.7.tgz", - "integrity": "sha512-8sZuvgylK9ZKQmZtUU4z3DVBcM4Q4SH4OWo4qeOahLOsteT9NdIwZFer6f0QwqH6DjXIqz2Gq+XtntYXznGZPw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.1.0-rc.8.tgz", + "integrity": "sha512-r9dmHYy759gKtAG0S96wTCS6O8WFDqGLQu8t+zGY6LnfdT4qUJdmWtJ+GwCn+BGwq1AglBzjabvyRBp6BxXcMQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2686,37 +2633,37 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-llm-retry": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-retry/-/dsh-llm-retry-0.1.0-rc.7.tgz", - "integrity": "sha512-yyn5Yqth6vdScgmcYDF7L3a1jbfcu2y205HyTx9d84H+eU+h9m8k0Mc+1l8VCJbv9GILPCvoijP8wFTPDas7gQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-llm-retry/-/dsh-llm-retry-0.1.0-rc.8.tgz", + "integrity": "sha512-DmcOajgiku5l7aa5hU9DtwnIZu+i/XCGdb+Wego5W9bAswYeBAwbceloRNE3O6+jdRzy+K5U7KQ9V+olBsNqRQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-mcp-client": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-mcp-client/-/dsh-mcp-client-0.1.0-rc.7.tgz", - "integrity": "sha512-hjdki2TTXfyZMJuddOVXV0lEhZjdku2aoPagVKV4TOhqz3jDJE0mQds87mtDOI9J4pyRGWfYXky6HN9Bi/usgg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-mcp-client/-/dsh-mcp-client-0.1.0-rc.8.tgz", + "integrity": "sha512-pcqXawjq9jRJQNHZTLN7pswJFMWjxCsEOdHUI9BdJqb9lRDsMi2cul1Hizfi51oKkcNo1u/K9Toqgh8o/ScAXg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2725,18 +2672,18 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-message-feedback": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-message-feedback/-/dsh-message-feedback-0.1.0-rc.7.tgz", - "integrity": "sha512-P/Inw7dQMZCC6I6NC6G0UF9SeOVlpQxOBg2+LoCdvyTt40itDow2wmlThqkQDIt4UMHLT4yRc0Gd6a4gmTNJ2w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-message-feedback/-/dsh-message-feedback-0.1.0-rc.8.tgz", + "integrity": "sha512-5DYXVLcnvTRs74Att52LGNR+x+RCf1X5s5+gOSUddsjnQ0wn4f3pzfc0o4F+91aE2zX3xzQ3/LhlW5UOJdkB0Q==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2744,39 +2691,39 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-native-command": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-native-command/-/dsh-native-command-0.1.0-rc.7.tgz", - "integrity": "sha512-c7NiAYPx5Ho2ZYOODRvt0yTZ9l00n7QvRh8paiyLaYBOuzo30KDo5wTJXGLxMkfzi6EQsWw1tljd8MnpGL2P4Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-native-command/-/dsh-native-command-0.1.0-rc.8.tgz", + "integrity": "sha512-bRaT8LOb2xmWQ88oSzM4+Y3N4Yy4J0tf15/kQTP53PY1FnOA5hGYWoRglQgfxIcJCrw4fEdUPie8Fff0dCOwdQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-output-retention": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-output-retention/-/dsh-output-retention-0.1.0-rc.7.tgz", - "integrity": "sha512-bhmSfXIaLWLrYwC4ziMZ7GkNy5i9ltGBvlNZ5eB7NZoDAMh0Du7pKkMY+oqm2ajvx5O5qiFkHEhYoypRpEB56g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-output-retention/-/dsh-output-retention-0.1.0-rc.8.tgz", + "integrity": "sha512-DeVjqZ9TtH2AEG57GBsHYT68274VygzuP9EqQLL01Ht1TrdK75xlVet1l3jdEbA7Eik4aSGDjAZD9/MsnlUIXg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-permission-presets": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-permission-presets/-/dsh-permission-presets-0.1.0-rc.7.tgz", - "integrity": "sha512-AC6cyrinc3fQ2/TKmm8V1r/32f3VekR/w6rS1+RWGefRm6PDGnNo4T96/U4EoMyWDq0VBCn1Oye+uqhWPtl/3g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-permission-presets/-/dsh-permission-presets-0.1.0-rc.8.tgz", + "integrity": "sha512-EeTn8Av5kmb1Qj53D7myRnKcNQrrupGrM2m9LVUO8ieWvlIaYX7n2g0y8kg14SUpcD2YzaT40oGJ6VeDuhTZAA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -2784,50 +2731,50 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7" + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-persona": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-persona/-/dsh-persona-0.1.0-rc.7.tgz", - "integrity": "sha512-1XhQNi3pIQ9TMUiquo+RRS4VpbXYhpFmZJ845kaVGToAexS2gJRVte8i/wKaDHDp/huAhJIsZemHlX0qADDsjw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-persona/-/dsh-persona-0.1.0-rc.8.tgz", + "integrity": "sha512-3COzIzZ5kBd+txuH418h9HG4feuVFyhdh02HWvzsWgaPsxjatuFS0OfS6qsejUTZrFDODQSr1WIOeSt80bDBtA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-plan-mode": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plan-mode/-/dsh-plan-mode-0.1.0-rc.7.tgz", - "integrity": "sha512-VXUxBvmZ9PYinVbYsu7GmT8BZMXCfAbqExNMoR4RoZm+leOLzZOkWOKea9THoJwIik0lUbAO5lzrqaeVKa99Dw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-plan-mode/-/dsh-plan-mode-0.1.0-rc.8.tgz", + "integrity": "sha512-/SY/iil7KLDvveqKRUZxO4HiADwDlOX9u3xyG/93h785mWSfRXooiv4Zp2tiBjU+pJB0tJXMsQNAXDdg7DWtwA==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.8" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-commands": { @@ -2836,201 +2783,198 @@ } }, "node_modules/@deepseek-ai/dsh-pwsh-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-pwsh-local/-/dsh-pwsh-local-0.1.0-rc.7.tgz", - "integrity": "sha512-AImknM43+7bIR9BzEatmbZMvhjgBgAt7MWqJzmTo1KnBNTY1j7r/RmOiQTBX4R+tpsLXMza5oW7svHSAYw/ypw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-pwsh-local/-/dsh-pwsh-local-0.1.0-rc.8.tgz", + "integrity": "sha512-lHAEwC4pL5bVSKgwaeO2dMM9s/jnpDBRuTeVD2HkunpFfT1Kq4lFi+/YXj00L7mW9DBP6FMfwRRV/0Wgo1FtdA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-pwsh-sandbox": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-pwsh-sandbox/-/dsh-pwsh-sandbox-0.1.0-rc.7.tgz", - "integrity": "sha512-mXJcllRKoGnFhVs1mtUjjmqdfMymTRif5lrtxdhlkpegH6E9qKF7Wyq1Wnjkpsk6QW/iCicrRkXF2Bw623eDag==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-pwsh-sandbox/-/dsh-pwsh-sandbox-0.1.0-rc.8.tgz", + "integrity": "sha512-GVvj4zqpC/lwCGaRmIXIhFqOqewgoGOuokGFuv0QcjQUY3v9FnPor2dqDZr5pav8KFGb5GeGUzLoUbedmsWyZg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-pwsh-local": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-pwsh-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-repeat-tool-reminder": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-repeat-tool-reminder/-/dsh-repeat-tool-reminder-0.1.0-rc.7.tgz", - "integrity": "sha512-AdG/wyhpWSJcLkRqs3j2VVgS6uH5xQf0mK7WZsdQ/RidB3OVYZiBg9Mto7Of25AtV5lP7ZN6TrqCqWgi60XwFA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-repeat-tool-reminder/-/dsh-repeat-tool-reminder-0.1.0-rc.8.tgz", + "integrity": "sha512-p7/g+NH6JJ0BnLx2V5o0hCm4wZr+dXQ9/Ev8LU6YyFRlcnma8TJuATL0wsA01xWfvvGLRxbe/tH41TRS1NVrJg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-sandbox": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox/-/dsh-sandbox-0.1.0-rc.7.tgz", - "integrity": "sha512-he43z39/SC8cMzPDsoP7EEXiXKjav3VClj/U943pxycvRL78JGkNEQQjv21n5mnuto0ti/gFBquybSI4sBAFqA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox/-/dsh-sandbox-0.1.0-rc.8.tgz", + "integrity": "sha512-dJpy5p/KjKkHG9AnMKU4+/ilj/4DCglsq3kof/jhIwtsZJCix07TEXP9vV8LCv4fU8af7cK3antXw4eVMqkwuQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-sandbox-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-local/-/dsh-sandbox-local-0.1.0-rc.7.tgz", - "integrity": "sha512-jahNeS/WnBinCisOB4O+zeS366v7gWt6Uzfso0/C5He/vZFEITW5jPfWrJkZLuuN5S55LshaDEnegsddEIp6kw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-local/-/dsh-sandbox-local-0.1.0-rc.8.tgz", + "integrity": "sha512-sTrKDXD74yG6B24uhCyN9DuGSpX0SCelN4o5DZylKxt56WRRyywAGdLN0Xt8enqiKCxrq+PJBi+hDh2GtXBj6w==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-sandbox-windows-acl": "^0.1.0-rc.7", + "@deepseek-ai/dsh-sandbox-windows-acl": "^0.1.0-rc.8", "@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.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-sandbox-policy": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-policy/-/dsh-sandbox-policy-0.1.0-rc.7.tgz", - "integrity": "sha512-TnOy1SnnSNPVZyw9UFNwQ7eE2lGxQBU6kye7+aAwDbNvSnudCJDEnQJhjTvGewHWA6PYA0O60XERKcCQAnK+dw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-policy/-/dsh-sandbox-policy-0.1.0-rc.8.tgz", + "integrity": "sha512-xQOlYWbUr1Oj6cnRd5aHZIz52EOEAdSO1HJIfeDkQrVaOgohFsiiCIp6PNFumuGNWdCEnf4Q18ebafLNtazYlA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-sandbox-windows-acl": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-windows-acl/-/dsh-sandbox-windows-acl-0.1.0-rc.7.tgz", - "integrity": "sha512-Br+Ocg+dr1PcCA71DxPJd7/7Cel+HLnRyglbkhSPx9mEYpXXgioVCkDHJh7J9OvjRw19UF56g2CvgVah6HwFww==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-sandbox-windows-acl/-/dsh-sandbox-windows-acl-0.1.0-rc.8.tgz", + "integrity": "sha512-3DeFPD+laUbXrzVpEJ0FrF5pMQCqeu7YCJAWgORGj1aju7sIjpineEnKpE6EXhbc8C9Jqu2y5S7B9z6ydOL/Zg==", "license": "MIT", "dependencies": { "koffi": "^3.1.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-schedule": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-schedule/-/dsh-schedule-0.1.0-rc.7.tgz", - "integrity": "sha512-vlvjvhE2B07XG3X+jUsfEDUjsiEGln8GFdy+ojWm27FKtA8JuoMdrMMUcCuVHnyr23jyk2Ft/qGA3JIJUOvIKQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-schedule/-/dsh-schedule-0.1.0-rc.8.tgz", + "integrity": "sha512-L4GO1Bv3+SHIXafjGQcf0sJI9eTf9whxVmYlBxYHw7h7StOZJPMhG9HpsKz4mO9FZ7J4zhBtpYlFbhOQaJheqA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-scope": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-scope/-/dsh-scope-0.1.0-rc.7.tgz", - "integrity": "sha512-8gn+sANXhpv+9egbNwq49/uI3XhbmB33obo9yMyzyzruan3zFoxeH4UV54jTC2hjbu8gFNPsyNam9AAtRV8/Cg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-scope/-/dsh-scope-0.1.0-rc.8.tgz", + "integrity": "sha512-/o+PxkVV2zUy9lYlMFr4TWSb+ESW4DE+fI891yIbsLzOJdFgfbmmLpGrlWgnz8/unIGJZxjeXdwyppV04Z277Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session/-/dsh-session-0.1.0-rc.7.tgz", - "integrity": "sha512-02WVTkqIH+TyDL7dhMN3Hm+qcTEdhD0fVDC0aIAyND2fBdXj3CagEXXvpmt3mzwWfKwOTGL1RdxtC6pMA4Bl1A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session/-/dsh-session-0.1.0-rc.8.tgz", + "integrity": "sha512-Qs5Mgn32WPPVB4rKHjsZBgLOkh0TQurUAcc9GaDVudK4dUkpno2HDh++qu/PrwRA3CZ/iwPAoFHCpB3AMMaoLg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-checkpoint-policy": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-checkpoint-policy/-/dsh-session-checkpoint-policy-0.1.0-rc.7.tgz", - "integrity": "sha512-Gw8GDvEJsH815NQuKkWhPPmw61hqhcdVpaaTXbCTAq/+0YdgNzNxAGIzizufAmq099QsqVWX0zs7IWGpWzCfEw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-checkpoint-policy/-/dsh-session-checkpoint-policy-0.1.0-rc.8.tgz", + "integrity": "sha512-9DpZhQN4MExSjbjBSmaH08DmFS/GHRrsVhO5e3WgTVuH13ugdl5yxc4MEb8qvOhEJUUtOx3fXHuMpSTa0Dxa7w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-log-export": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-log-export/-/dsh-session-log-export-0.1.0-rc.7.tgz", - "integrity": "sha512-yToQnjzMGl5KCq//k9bN4OUXxpyRRjh3hBtnf/9AVVSvvV5DGDLHryEm7erECLOnoWZnng5J5SDERcykrVbYlA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-log-export/-/dsh-session-log-export-0.1.0-rc.8.tgz", + "integrity": "sha512-6vDC7uH0WZkwmlj/iql6AmSL9Uifiqi28OIZSDIi8/KRHDHnt5hvjobJecuIxhV9hQSDmNsstErHGx4ng2GJFQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7", - "@deepseek-ai/dsh-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "react": "^18.2.0" + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-persistence": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-persistence/-/dsh-session-persistence-0.1.0-rc.7.tgz", - "integrity": "sha512-NFH1uIGQDgMFOijgAv8lLWRiY3eHFEZW2alwuHlu4C32P4+jdChh9fjPlzBar3ZZTq0ZW0qWCdbYZS02DNxsvA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-persistence/-/dsh-session-persistence-0.1.0-rc.8.tgz", + "integrity": "sha512-JujorG/UCern0+zxJzNswyWl2tFG9sLzfVNvA5YkTLaRLZt7ZsEhxG4DxWZ6uj+3RJ8sf4bqdKqvpIn9t1pwUw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-persistence-jsonl": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-persistence-jsonl/-/dsh-session-persistence-jsonl-0.1.0-rc.7.tgz", - "integrity": "sha512-amPgKP84E99YEiOroeoQNya3Rjm1VRWWU6y0ft02iVtFohTmWRMLESArkAAtFfap76bk34xEkvujp34nJl40Ow==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-persistence-jsonl/-/dsh-session-persistence-jsonl-0.1.0-rc.8.tgz", + "integrity": "sha512-T/Lvh76O2tpVw04FAhgLF3Qovq3SrUnzaywIbB+Uw67a2DD63Qg+cJY9WO6Pu/UowPxbpuUOd12c6iPY5x8d7Q==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3038,29 +2982,29 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-projection": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-projection/-/dsh-session-projection-0.1.0-rc.7.tgz", - "integrity": "sha512-BXehLYt6wYnV0PNNhv5GECePkH1w+1yuu/R63d2tdYdUQ7XVrd6tu5hMwfTH0P9AnBDxJir08FRu2WKO69JypA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-projection/-/dsh-session-projection-0.1.0-rc.8.tgz", + "integrity": "sha512-q00B+rl7WAuK0Bgh93SY2+ZpqaH2kJhfJ9n6Jg6R/m4plnH0Ip4oCAHl6u8rBzDgb1mniQGEQDz/7BN5Q3It8Q==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-projection-cache": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-projection-cache/-/dsh-session-projection-cache-0.1.0-rc.7.tgz", - "integrity": "sha512-qWf7p2Xgr0LnY4o466ei3L/81QbGFQcCbEi+4XX9rxLKgnU+RvlQzwmIilrgz9N2hK/RqwS1Nb03bFRisxVeaw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-projection-cache/-/dsh-session-projection-cache-0.1.0-rc.8.tgz", + "integrity": "sha512-IPvO7k9FlekOJXn4XLWUwU5+JDQn7khu8Oa04GFDystU3c1CnOwoa7SGMHOfJau3r177M4ncXApwN5Ra6uhyXw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3068,26 +3012,26 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-query": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-query/-/dsh-session-query-0.1.0-rc.7.tgz", - "integrity": "sha512-JKlEpByllYQU9JZLadrS3ClWCVZMcKRB4nc6iCWuNExyRi/Whwa5GicKFs+jXwGKe/rdSbTCom/jYLwkqipjuw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-query/-/dsh-session-query-0.1.0-rc.8.tgz", + "integrity": "sha512-q8eyfpgPuJx24l1fEevDkc3Dux3lNp/yDzVkDL4nSTGNaDx/h9Y6iG7SZdqWM5nxOET3iwxi4AkPM7lYyLg3cQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title": "^0.1.0-rc.8" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -3096,19 +3040,19 @@ } }, "node_modules/@deepseek-ai/dsh-session-query-sqlite": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-query-sqlite/-/dsh-session-query-sqlite-0.1.0-rc.7.tgz", - "integrity": "sha512-XuhVkX2V+tx/xO9/gCzPHGbovoApwaojwCjNFAuBUbHLMvMl1wMdxvxSgk/xLPKnll98daXRPoq5Csg6hrG8MA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-query-sqlite/-/dsh-session-query-sqlite-0.1.0-rc.8.tgz", + "integrity": "sha512-jrNq2vgWIH7OzNMHXrKEjEMwy86I36I94a8X5u937xo2B2JD8ZIWfuWHC9YyLqabRwNf7VcQ6VZ6ruSgESRE7A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-query": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-query": "^0.1.0-rc.8" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -3117,56 +3061,58 @@ } }, "node_modules/@deepseek-ai/dsh-session-reference": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-reference/-/dsh-session-reference-0.1.0-rc.7.tgz", - "integrity": "sha512-lyD9VbGrOSVkAV8mr6aIl22bdWIe61lC9/dtZ6CtS3DLnewvSkZ4CNlUDG/qS1SUIZfk7A2UixgXYBIB2771xw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-reference/-/dsh-session-reference-0.1.0-rc.8.tgz", + "integrity": "sha512-meNS02BOkLc2SnF2qWvl5X1Psk59t0Q1vvwjfCkczD29g4nm7Y02EZ089HJKii0VAsSB39RYA2rf6MCSl6vhow==", "license": "MIT", "dependencies": { - "@deepseek-ai/schemastery": "^3.18.1" + "@deepseek-ai/schemastery": "^3.18.1", + "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-query": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-query": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-stats": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-stats/-/dsh-session-stats-0.1.0-rc.7.tgz", - "integrity": "sha512-ryf7HSYdmLbrTv4HQmeW/h0bHLiCNnSZYiY9RoBrzg2qh89MU8S+Q/a9CLVWA06TRXKt7tNbizF82dCj2/O0bQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-stats/-/dsh-session-stats-0.1.0-rc.8.tgz", + "integrity": "sha512-T+SEzBkMxZpQ31MaeJCjaLN3/xu8yyZ3Va5u6osfq0nsJz1tvuZ53MHMbApdwERHVV0t/1eILTUo1J6XdksUEA==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-telemetry": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-telemetry/-/dsh-session-telemetry-0.1.0-rc.7.tgz", - "integrity": "sha512-6f5U7nt5Iqwh5RAFBqV2Ib7LJU2o89Et0r0eV7bskYws+PNM7ZRRW/Nw4a12ZcnuTp1eKPyVE8H6oJua6/7XLA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-telemetry/-/dsh-session-telemetry-0.1.0-rc.8.tgz", + "integrity": "sha512-Rs7w+PP/uuOaa34RFY4q6Xjes/C32H0gPvZe/gV9M87y1EcJs+mFBzhnc/zyKeaAdT25RWIwO3KATmKlT/D0Dg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-telemetry-otel": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-telemetry-otel/-/dsh-session-telemetry-otel-0.1.0-rc.7.tgz", - "integrity": "sha512-k5zHavA2RoBtZ5igD+qpbdfyxKvesZa2w+YKLfMtUnZOj7HZM9qcxvfYo4xJ9spNLpN5OGY/sWZBB5itilZlCw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-telemetry-otel/-/dsh-session-telemetry-otel-0.1.0-rc.8.tgz", + "integrity": "sha512-rpPwidBwKV53WM2bYW/eYOZ6j5U9VHOIVrITQkQtGDMAzD9UaqfAXfXfUlsw9vsfjED2gKmSf7vn+bVfy8Tjaw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3179,18 +3125,18 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.7", - "@deepseek-ai/dsh-command-feedback": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-telemetry": "^0.1.0-rc.7" + "@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.8", + "@deepseek-ai/dsh-command-feedback": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-telemetry": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-title": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title/-/dsh-session-title-0.1.0-rc.7.tgz", - "integrity": "sha512-jhFiZa/C58zchuJkBodnkiPil7AEK8mHfB/hMOAW3N/7tUg5nbMLBERNqHdDMbIrvhTndrF4SN9qy+ltUf0cOQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title/-/dsh-session-title-0.1.0-rc.8.tgz", + "integrity": "sha512-OFG9kHFGnM5ND4LCkqg8oZr57qgF6xMkBxR/4MRaJJ42QrPI9QKzoZVRpNpXEl3v3uw8oR7Jj0jbc7WClNl3ow==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3198,63 +3144,63 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-first-prompt-llm/-/dsh-session-title-first-prompt-llm-0.1.0-rc.7.tgz", - "integrity": "sha512-tFocCpSglf69VC6a23R9OcomMBQdfQZm8MvAOGgENBzWz9htDLuyq6jukKzPdTtS3VdRDu4wzJtaWKAYBUCX4w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-first-prompt-llm/-/dsh-session-title-first-prompt-llm-0.1.0-rc.8.tgz", + "integrity": "sha512-pFx2hPVYyRCRcbd4WJZVapVekLLEGMAG1KAcrixf3XOGDNaqVEPF8LWatx8iKQRfVSQlvIOwDO8uEsC0NZiPNA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title-llm": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title-llm": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-session-title-llm": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-llm/-/dsh-session-title-llm-0.1.0-rc.7.tgz", - "integrity": "sha512-mpQo/1x4jaWNdQAXckOs68U59u+/WHJlb/BX1zAvr02eJPV3Wac2/7NP+/vTw5TElEyzIAU8k0f3PMgvozUk0g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-session-title-llm/-/dsh-session-title-llm-0.1.0-rc.8.tgz", + "integrity": "sha512-6xz3umGBtGmM+t5O5wwlCwbH9gmBOlQBfg7qGnPJftWc4VWHG7l2VUYqd3DNTQVTHIA/hSN4qg/LXTm79rADGQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-title": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-title": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-settings": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-settings/-/dsh-settings-0.1.0-rc.7.tgz", - "integrity": "sha512-cS1+StK2xIVykrskw+KrO+hKJxYaVVgY2Jex2we5zASTNLHYCj74WQluPlaFjFgnXoZ1RYz8HNXL5/Ho6h1Ynw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-settings/-/dsh-settings-0.1.0-rc.8.tgz", + "integrity": "sha512-pqbMoiSP+Ieww9/4gcHYXcBCDlno1zYDu2OPq+5xdZ+McnK+5YBtHsiRpnR9cHQxGTH7lkfIv+adkOueQW0utg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", "@deepseek-ai/schemastery": "^3.18.1" } }, "node_modules/@deepseek-ai/dsh-settings-file": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-settings-file/-/dsh-settings-file-0.1.0-rc.7.tgz", - "integrity": "sha512-ODz9QWtCOjmwX7gxewPBfIHkA9twPiHDpcwgAW4sQUztgsJZKUtoe2T47loNH6QlHBPcSL5WMP4/QlnkRVKC0Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-settings-file/-/dsh-settings-file-0.1.0-rc.8.tgz", + "integrity": "sha512-2mCyAPkxA5r7Ezgt41XtJxRBsj5Dkl21e5v7w+6YE3C8/n9zRRlN4X5oInHcUKEmgoTrNLCBCgOs5DNrl+pErw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3263,72 +3209,72 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7" + "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-shell": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-shell/-/dsh-shell-0.1.0-rc.7.tgz", - "integrity": "sha512-in3ifbq80tn5cf1ICBBsRdwKjURB0g0dIRdCVUgl/GDqCdC/S0TjMLXw4nmFdCssYLm7JbG5a59BfJG0KFuz6Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-shell/-/dsh-shell-0.1.0-rc.8.tgz", + "integrity": "sha512-RNhp7Y25DXUH7o36X4GcN0lnOLg6NXTlWZpYNURT7aDj3UHcLLajRsyddiAh1EbwQnl0GRKRZhLaZHrrG6gMIw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-shell-env": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-shell-env/-/dsh-shell-env-0.1.0-rc.7.tgz", - "integrity": "sha512-joSBNw/d54gq/VjkHLGSJ6y/Qr+594sObF4ApbJi2eEopx41L0Ky7kNW/W7cbrGIIN3KBGRDdiGv1s1paWzsMw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-shell-env/-/dsh-shell-env-0.1.0-rc.8.tgz", + "integrity": "sha512-E/Rlka8BnpB7GM67ZJPjvZyp0O9L5x28giyJhHWZcPHN4rsEQFVVqk0cH6iDT5STy+dMc9BAUW+im18kATIxsA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-skill": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill/-/dsh-skill-0.1.0-rc.7.tgz", - "integrity": "sha512-tDaqB1TOs27fSt6FZdjvPs4THXAFKoKOEgQG+iFUv63O5bm+glyLY3K1LTK8JeofB4lg3+4JIAeWRslnLJH57w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill/-/dsh-skill-0.1.0-rc.8.tgz", + "integrity": "sha512-MqcOzl4Y5pQEvFBNVAi5w0IZWH5kVbXmp1RYScrl+8HpVATZbgumDhztVnEc2kUrZu+o6LKb1hnbunK6JHUE5g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-skill-badge": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-badge/-/dsh-skill-badge-0.1.0-rc.7.tgz", - "integrity": "sha512-01Ue3mvLYyBwNj+fAuTUZN4gJLuDySPDqAZhCtWoYagZudCuLB8kAdpYWztKA4TRVSyml+EfGo1LrWvQeTD1wQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-badge/-/dsh-skill-badge-0.1.0-rc.8.tgz", + "integrity": "sha512-VjISwf5qDpkD+bxLuVXYL7IakhPoZudIOwWCFjTD++Tj8VQTN9ORCq1uCOatFLi5v/an8MzdZ91O2pXfQtb7dQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-skill-filesystem": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-filesystem/-/dsh-skill-filesystem-0.1.0-rc.7.tgz", - "integrity": "sha512-i95xycP3vkz4IZnIO4BTzGNB6waKl1M5AsW2x04C0FIqLa4BSILvVUVwqcbwpBZm7Cd/KF50Q050au3NvauGrw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-skill-filesystem/-/dsh-skill-filesystem-0.1.0-rc.8.tgz", + "integrity": "sha512-A87t/1+wxPiMkUXWVdf4DfgxA8rp1eLmStMvzfdthR/WxtGPzuEv2L5oyNDzKiCBwIcxBN6Fy2THNa2Xba2kQQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3337,10 +3283,10 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill": "^0.1.0-rc.7" + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-skill-filesystem/node_modules/chokidar": { @@ -3372,64 +3318,64 @@ } }, "node_modules/@deepseek-ai/dsh-spill": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill/-/dsh-spill-0.1.0-rc.7.tgz", - "integrity": "sha512-EdX5AZElelHlCKlbflZipl4KRDiEHWLN/8smgnkzAhJgpXFq5dyp9jK58dO5v7cuODeq+/SfeDyUE5Mffdhh8Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill/-/dsh-spill-0.1.0-rc.8.tgz", + "integrity": "sha512-LDfyBuRS/yfc+JYvSicEXYJDj5PFBfWN6vJ5G3wy14eMrq3OKoYip8lyIjEdR4qwCVh0s+oSi28AlcvkPuyOdw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-spill-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill-local/-/dsh-spill-local-0.1.0-rc.7.tgz", - "integrity": "sha512-jx198A2cc1gxsoKb2pRmXnDbIwIHAKg78ZjRMyiLRGpOFEZugVudILdDMp8u+lGpavP9xVAxBc1n75Z5NDRw7g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill-local/-/dsh-spill-local-0.1.0-rc.8.tgz", + "integrity": "sha512-4Ew3cBOQxW6wA4U8svXCjUyhX00+h0W/bK9CzTy/HoYrNJhP85euJVV7SfNlq6OfTeQBWn3U0wKwNlcc3gAyAg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-spill": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-spill": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-spill-policy": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill-policy/-/dsh-spill-policy-0.1.0-rc.7.tgz", - "integrity": "sha512-fYypZXcXFkXybf8N0tz70+XCtxvnn9mDN8JiKnTp2ZNhXb/zvFbdf661Pp45lFWS6j0cHZsdZ5T8DfuQjfO94Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-spill-policy/-/dsh-spill-policy-0.1.0-rc.8.tgz", + "integrity": "sha512-9y2IHaKowtqGxhYd59R3OfWv1sonIDv2h9WX/jhxbagMvORfRkhjWJP4YAxp+l4Ba1LhVLcuG/nb2p8hqGdO4g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-spill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-spill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-storage": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage/-/dsh-storage-0.1.0-rc.7.tgz", - "integrity": "sha512-M+6+SOjWWcfYoGASBMx+b1sHmWPFAHXF57rE/Mew9k5tHC5bEV8+owWwYOWQfv41eO1FfRMibZd0rH6mwPNApg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage/-/dsh-storage-0.1.0-rc.8.tgz", + "integrity": "sha512-KcxiNFAC1X0GhbS9yWGo7FLARBNsxoyU9JatxQtA23MuqOZaN4Nzy3bsMViK4/snzpPGwm//I+wfUywSjM6uBA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-storage-domain": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage-domain/-/dsh-storage-domain-0.1.0-rc.7.tgz", - "integrity": "sha512-UxXwoCB0q4+/F+zddvi8I4LknTIlGD/1ec57Ym52kWRb7a8qGgrcIYrOC3yPCozn8rkirAuhEAkyAhR6AO5QDw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage-domain/-/dsh-storage-domain-0.1.0-rc.8.tgz", + "integrity": "sha512-rHphQ0jveKoCurwh9TX+VAVFsMQivBgghQBOAsWdVDZ3W6boeXNhMZWuGWZ7WjMPD3iJKgiFCx+650hhsao+LQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3437,49 +3383,49 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-storage-json": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage-json/-/dsh-storage-json-0.1.0-rc.7.tgz", - "integrity": "sha512-xYvEY3+ttxJg4/UPzXuxgeKcLxKvDP4alvPpEfRwuMBcp//O6FtzEJSqV8zycJVYHU8V0wmUKRIn4V1ycXlFgA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-storage-json/-/dsh-storage-json-0.1.0-rc.8.tgz", + "integrity": "sha512-cTlqy+5bQH7/UOFqRoWSaY9DaaDpcx4jmvWcwY8ciMUBse8BXcEtchVr5zqqss+xA/+Z/l9VraH+diwwRuAWbg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-subagent": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent/-/dsh-subagent-0.1.0-rc.7.tgz", - "integrity": "sha512-PEpA9XT6E4hg7N8m7GYQyDLwFUwoqWTz0Cm9SrdAoNcju4byG08qy4+muDZbG0a1tm3PR4rxNB5zKcobDhDocg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent/-/dsh-subagent-0.1.0-rc.8.tgz", + "integrity": "sha512-EI94+hYMfAe8BQkkH/FTcciGxajFfAdQe66Jhy2/eyR3dssRAZ+oJsV6SzU20x3m2yd0gmMaXzO1iV3gwYhY+g==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection-cache": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection-cache": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-agent-presets": { @@ -3509,170 +3455,172 @@ } }, "node_modules/@deepseek-ai/dsh-subagent-fork-in-process": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-fork-in-process/-/dsh-subagent-fork-in-process-0.1.0-rc.7.tgz", - "integrity": "sha512-PnT/poBisBmA9U+mLZeyQJfHS4Ps8kwN1ioZEmv36TwnROCrmwzog5FB33r9rXU/gKVX0dD/LkjxxTGmzC1xCA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-fork-in-process/-/dsh-subagent-fork-in-process-0.1.0-rc.8.tgz", + "integrity": "sha512-CVen9Fu0TwiwuyTHmZeankN/v0EwdMwOAcq8fSTIyFGPG4ngtqQNSRMxwYTrz39kKyHv0VBW+r8tRd1LBdTAWA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-subagent-in-process-driver": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-in-process-driver/-/dsh-subagent-in-process-driver-0.1.0-rc.7.tgz", - "integrity": "sha512-YleMt6xtXmW8LkHZ95MLPq1urIt1+sBUK908GCQ2EhV6nyfUwNog4XVDlVbzf3GXzc+3z/xiMW2GvVp3IQ5NIA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-in-process-driver/-/dsh-subagent-in-process-driver-0.1.0-rc.8.tgz", + "integrity": "sha512-UJXwh484V/rEmRrvf5l0IWg2ceVOaSOU7Z6DEBq++bKOuFQ2BVkMm+Uj3dk4qFngeb10+/GXlRkbe3mqPwQDSA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-subagent-spawn-in-process": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-spawn-in-process/-/dsh-subagent-spawn-in-process-0.1.0-rc.7.tgz", - "integrity": "sha512-4C06MeBvsbgiUrWh+tge91wRLSOOJDU/Ub7b9Q6nTxQKEMJooJwCQRPfgaWtdXuNHrJGIJ87GKsgqV2iwfQ/jA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subagent-spawn-in-process/-/dsh-subagent-spawn-in-process-0.1.0-rc.8.tgz", + "integrity": "sha512-+ZratMZJiNg0vDmaEauJpiNI9IzVwCWisbidow6AV8O5CLC9/XlcMTjFGxmxcbnPdNlVM9i8OLK8gY7/kZ7tTA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent-in-process-driver": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-subprocess": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subprocess/-/dsh-subprocess-0.1.0-rc.7.tgz", - "integrity": "sha512-xiHD61S2trIZ0CzhSMgXxZJVyJ2c76DkX4eqP3Of4mBEnm6C7g7FChII6uL0z5v1bnOnTmpHzwPX8YCwqb7dbg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subprocess/-/dsh-subprocess-0.1.0-rc.8.tgz", + "integrity": "sha512-rTWwWCq/WrBTjaXhApu7gaho6UHwMZq0+l7nZ06YMUreNZoCHfg67pAXopMqTgr/iotphmXQdChrLgBabzL1gA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-subprocess-local": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subprocess-local/-/dsh-subprocess-local-0.1.0-rc.7.tgz", - "integrity": "sha512-Q1zl35fRNSASv2FOi6viwR29cn3vtOcyKfamcmRB789m6sb6CdlhIMettvcxxDDHwTSH/jjz3hqb0JAx2GT32g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-subprocess-local/-/dsh-subprocess-local-0.1.0-rc.8.tgz", + "integrity": "sha512-2QMd6Nwjd+ARor4g+GSZ3dNyTvEf2IPOje47nQwa3UCmltLxn8K8gjDAN/5sGr/IF56P14FeF4xFag7tMK+Zdg==", "hasInstallScript": true, "license": "MIT", "dependencies": { + "koffi": "^3.1.0", "node-pty": "1.2.0-beta.15" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-system-prompt": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-system-prompt/-/dsh-system-prompt-0.1.0-rc.7.tgz", - "integrity": "sha512-Rair2ZkzgoIIr+UstYVYeqeUgORNPIW1LNcsXz3Zjglx4FGjsmzs0UALdNYvSBpBvCLNmt4E6+XQIrBbS/s9jw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-system-prompt/-/dsh-system-prompt-0.1.0-rc.8.tgz", + "integrity": "sha512-yk8Z85rzX2EwpKNWA5i+K3I3mqsIIUc9niwbDpXO8vlHvpC2qR3RNHjJIJN2EZYDqfSzTVtkbxHFsuMzDXIbew==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-terminal": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-terminal/-/dsh-terminal-0.1.0-rc.7.tgz", - "integrity": "sha512-B22qppmKWvw5Ez9eMKnppHiaMrikIcHmfmvyd296EspnhTBJAvXDnc9NggT0DUnSvm+2gh5ffohhMJel9A2pSA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-terminal/-/dsh-terminal-0.1.0-rc.8.tgz", + "integrity": "sha512-Vu73FrQGx8h7Mqq0QdKtzAiZ3xgVM4fB9wmf3fEl6OiJTcqfc8t4lgug3gE7uBeDVRaLn+aq7kHbEUOY0fsm1Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-terminal-bash": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-terminal-bash/-/dsh-terminal-bash-0.1.0-rc.7.tgz", - "integrity": "sha512-2muS7xmy4olNEpGANp0ViK3/r4A4UlfQa5w24HJ2PrCy0J3qlk1vwHrpj30nAGK6sCaxbXmb8IjYUfNs7st7zw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-terminal-bash/-/dsh-terminal-bash-0.1.0-rc.8.tgz", + "integrity": "sha512-ehBMVr/0kZ15Vud7uE6PLobukwJi/BqGDbI1oonPPTOoTjDvuCqlKotNEQtS/G4NsvGshEABv+m5X5ELcRCWUA==", "license": "MIT", "dependencies": { + "@deepseek-ai/dsh-pwsh-local": "^0.1.0-rc.8", "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7", - "@deepseek-ai/dsh-terminal": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-terminal": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-time-context": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-time-context/-/dsh-time-context-0.1.0-rc.7.tgz", - "integrity": "sha512-rZhEYA/urMq8sReaMc5rb9A/p7X1MXwktoF5Y6SwGUWqJQsdvHzXppksOEqJpg4a1pNDBe2N9X5o+wMKPmukMQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-time-context/-/dsh-time-context-0.1.0-rc.8.tgz", + "integrity": "sha512-9Rdse95S6Uk8OAHf78AQN/pxV6+29fCkIbF4ONP/F/6YBciKDORypRyMbHNSY81fBMHQPhW1xvZecGISdIHHiQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-timeout": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-timeout/-/dsh-timeout-0.1.0-rc.7.tgz", - "integrity": "sha512-Ufl9G7zP7Tky/zkXscavEiolEfAwutfbPeLb5sUU/tPQlDykhh1NwGrarNJ11fdR723zmA/3co4LgxtDtWCOEQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-timeout/-/dsh-timeout-0.1.0-rc.8.tgz", + "integrity": "sha512-RwOC/qHribE6b+LStAO7aAgweefLE5sqDO7Uz6/mnTDyJxCt7HNQnE/Op8sAvRa33d752aUkPfO9S0mgzVAoFQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tmux-context": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tmux-context/-/dsh-tmux-context-0.1.0-rc.7.tgz", - "integrity": "sha512-DYoWGpJglqzWxCFDzynJ7ebt9m7Redlm2Iuon5U2tJ0rsyOSRIgKuwQMXI67FdN/MNVXvSQ2xybUqu+5V0krnA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tmux-context/-/dsh-tmux-context-0.1.0-rc.8.tgz", + "integrity": "sha512-ezhL3Wjpn4TqqvgSuKrJgNVG7jrWGekEWRYimqD1SvmAHQAS+Xr9q7DBl1uSFfJDWUOAPlAB8VAuo3k/CLUwKA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-token-meter": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-token-meter/-/dsh-token-meter-0.1.0-rc.7.tgz", - "integrity": "sha512-i2WOx26otsAt3sTFOoXjo2xsdvUyC5CAuNiJyRQoo6yn1smx+NX541clIOYdx1uneZFmV0T6bK46JpdXasxaAA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-token-meter/-/dsh-token-meter-0.1.0-rc.8.tgz", + "integrity": "sha512-ZcS6vuuJhoqjUrbyROuiiYk4nrvChkkYEfIoj7CjGbNArWOhbStmBaiPyahtcB1kThcnUKdu7vv7DaZJdLw8Lg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3680,100 +3628,100 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-compaction": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7" + "@deepseek-ai/dsh-compaction": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-ask-user": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-ask-user/-/dsh-tool-ask-user-0.1.0-rc.7.tgz", - "integrity": "sha512-ZqwrTw+w4GepNCVQ7NIq71s+Hlrqu3jAfYCdKuNbkUy461EjlRLGMcHspSHAt1uhdwL9QDTodB6RRhpg65Hozw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-ask-user/-/dsh-tool-ask-user-0.1.0-rc.8.tgz", + "integrity": "sha512-PQVcuvNvTI18B2jSvgS20wX0GRnpom+6X6iNBL/WPLiicJeoxvDYj+M7SjdSsqBNv5t0i9VlYhO4NYicmluy+g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-bash": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-bash/-/dsh-tool-bash-0.1.0-rc.7.tgz", - "integrity": "sha512-nfc0SI3Xk36rgIOLmTBDSrSTN3Ufp9Wvefta/M82kbBCo6fesB4lst+VAw74039jzHUboXc2gwQ/j5rRcOpiuw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-bash/-/dsh-tool-bash-0.1.0-rc.8.tgz", + "integrity": "sha512-VvP8Ky8ifqS7Iy7XUxc6cWB7sse3X6gqr92m0hBuodwQblzrZq2b6IyzfTzXKZKLqt5mMUaLRt7IPIDOOG+WEQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-bash-persistent": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-bash-persistent/-/dsh-tool-bash-persistent-0.1.0-rc.7.tgz", - "integrity": "sha512-5tMC1TuWiGDerYd0UuUUzRdmv+uy/22lXbxmmrmUfR8aACeK6T76yXorvuvJSDYjhPpLoUovz9XU5LqGm3D2Wg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-bash-persistent/-/dsh-tool-bash-persistent-0.1.0-rc.8.tgz", + "integrity": "sha512-GySj2Nr7y4ewYTH0miD5DzfLEZNxAmWfSyJ5oOYVtzIbqkcU5WOjpsjQvDg0kuERXAq4MYcdc2QfrPet1/MkIQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-terminal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-terminal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-call-timeout-policy": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-call-timeout-policy/-/dsh-tool-call-timeout-policy-0.1.0-rc.7.tgz", - "integrity": "sha512-GKmrKxwfIhk51dEEzWjvPKTZ2SK/RNxKXROAaSsZ/HGcerv2kmBHRCEPlaphKBoWhFuw7KAhDnzI6foXLg4BWQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-call-timeout-policy/-/dsh-tool-call-timeout-policy-0.1.0-rc.8.tgz", + "integrity": "sha512-Z6M/nkcz40DisaOIHqUOjjjW4wCi+JqQNoUhOu+VAoBDWHl7SDmEvdWSQUwkyOETjcfdRSG4RTJ5z/rBUVCPHQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-cordis": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-cordis/-/dsh-tool-cordis-0.1.0-rc.7.tgz", - "integrity": "sha512-tzZ1A+HhfqkMyOWwPgkWezY34rrK/OHD6BBX9DZ4km5/545JZ37+jmViza4TwrUhVxbs+Szhrx6g6V3Hm+674A==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-cordis/-/dsh-tool-cordis-0.1.0-rc.8.tgz", + "integrity": "sha512-bIbkazp5xasqtJBFljOGVIdxyAAWIcKoxMuhDoUpfPFuEqZaXJumYJJ9+ugqr+KKkddjuf2SvlpE5XB4zWcNvg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-fs": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.7.tgz", - "integrity": "sha512-/Uf2z6OZckk0Nz7XjVbzf/yUnvDeY58CkUjAqy2FxgGuNc0rvIR6VzRER5NZ+30bXeB8TPnjMuCVB+j/8zltrw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.0-rc.8.tgz", + "integrity": "sha512-pxo2YfVlqcw0sCA2+4DtqaaYsuxkx1QfvjT3VO+ckZMWn/UnGOUuzjJtKhVynwjm8prttGqK2LBXUTBZPlKTWg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3781,22 +3729,22 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-attachment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7" + "@deepseek-ai/dsh-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-fs-search": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-fs-search/-/dsh-tool-fs-search-0.1.0-rc.7.tgz", - "integrity": "sha512-0Lo6bbpPcSMKZlWkBGx2KjwyLy5zYJKMH8fmwz8orwOKHjbfYQT51GV9cpdhLq6NYTwKeMUaxTZC4xPlZ03SAg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-fs-search/-/dsh-tool-fs-search-0.1.0-rc.8.tgz", + "integrity": "sha512-AZvESByrPbBIYIGDoTgVOHH48antHy2ZSaLfsVfz1Rw/jQIeiBKwt2LYIPhRGGvev6TXw95qWKt5cyv6WDXHlg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3804,185 +3752,202 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-spill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-spill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-goal": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-goal/-/dsh-tool-goal-0.1.0-rc.7.tgz", - "integrity": "sha512-bQTVYD7nAtddefQZvvoKsoRHehA/hAHIPbNRdY+L97HVwKnowg5rlcUn/v+MJFQ1NPaTrTAfVQiHXGKEeeI9tA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-goal/-/dsh-tool-goal-0.1.0-rc.8.tgz", + "integrity": "sha512-EO8iqRV3R8YgdMGUVAp/20XCKbegdwZ7fqr7+oSg11lGHuTnXDz4im4HBXri/wmL9XHeBjmcAQ0BXESbhX2VOQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-jobs": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-jobs/-/dsh-tool-jobs-0.1.0-rc.7.tgz", - "integrity": "sha512-n/YcmHVTBrN3soZqzMElsnzIQoClOS3U1n5oqpg+oPyesMehpp7DFjdqh7kCZGEmI8chtq4AhYsPUWTPo85G7g==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-jobs/-/dsh-tool-jobs-0.1.0-rc.8.tgz", + "integrity": "sha512-p3gWi38ryJFRes1lTAdVkdZrUBB8RYPpy4XqZ9DgC2qcrLOJZnnsprIUxyDDmhbyargOgTGc3hEeRU5g8OQAIA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-output-retention": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-pwsh": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-pwsh/-/dsh-tool-pwsh-0.1.0-rc.7.tgz", - "integrity": "sha512-J24DC4otd3gAVvJ2jPpCfxrrujB/5isEqScp53O2vSvFP7rKn/Rwo8ddr1v462JVWyUG5HtyKpR23cPmQrP0+w==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-pwsh/-/dsh-tool-pwsh-0.1.0-rc.8.tgz", + "integrity": "sha512-B5F08tsSD7DHqXDXjn/Q11FavHw1U8/WAEqp8AC47vDRymPJIgTM8zSlJ0Lx7aZaKPTW4zQYtSmwUhy93q6zfw==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "^3.18.1" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1", + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8" + } + }, + "node_modules/@deepseek-ai/dsh-tool-pwsh-persistent": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-pwsh-persistent/-/dsh-tool-pwsh-persistent-0.1.0-rc.8.tgz", + "integrity": "sha512-OxQhywkvUTuGj26yaE1LyoADsCKttaIdiq2dJd+Xcbjc+tnI1gfoVrBj+Sta3/uT7x66kKjXZ1+gnw6gK5qISQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-terminal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-ralph": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-ralph/-/dsh-tool-ralph-0.1.0-rc.7.tgz", - "integrity": "sha512-1ZCj5w7GRcbs0zuDiDpZLJKc1zs/WSn1WX9VWTuXvWocV66Rq8GGMZLGDksBeltd+jv/dym7xro4+xFl87059Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-ralph/-/dsh-tool-ralph-0.1.0-rc.8.tgz", + "integrity": "sha512-+kVCbLEBDxOCCHPdR5+hgQFbkTvTaJ3D7zTNxNEtS5Tr/7eGAU7/VmwNMMSZ4Z+eyHQQEm4vgT+O1pMTvLmb7g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workflow": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workflow": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-skill": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-skill/-/dsh-tool-skill-0.1.0-rc.7.tgz", - "integrity": "sha512-AnXLgiDXq8qB196qq4LnJ6rC5ukoPA4WZH+ILSFpLm59owkfwJLS9rGsfP+PGqiTN7NhoZtAwGmZoYCdSDi0kA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-skill/-/dsh-tool-skill-0.1.0-rc.8.tgz", + "integrity": "sha512-oQAPyXiQDDZ73rZwST7KqwUAr0Al3U1dxWdtzETsMzvNSQE9fmMBz5jUObFIEjxxJcA07Pp1DFzuJdpkCIDeCw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-str-replace-editor": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-str-replace-editor/-/dsh-tool-str-replace-editor-0.1.0-rc.7.tgz", - "integrity": "sha512-p4GmCg5wC9uw9BaVK9W0hOnEnjGvhhRF234ClVnQMbHwzfgPbhc0eSYUNJQmouqxLAa4kVuiF0nVZvc3aftCeQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-str-replace-editor/-/dsh-tool-str-replace-editor-0.1.0-rc.8.tgz", + "integrity": "sha512-2gyO5a5xNvBo9I5vmVSvgXRfxUfKGDu3WjjdK0aDWx/Y+C1r1mGVC7R5mN/oJstcUCIyKm483ux1pT9/O1QD8w==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-fs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-fs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-subagent": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent/-/dsh-tool-subagent-0.1.0-rc.7.tgz", - "integrity": "sha512-QWs7SeItxpaJ3zY5Vh0scAv84QI+ZRyg9+dws15H88T+dp9dRr4gmR+fqEUdwd9JhPJF5VIORtKY/MqVtaiYQA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent/-/dsh-tool-subagent-0.1.0-rc.8.tgz", + "integrity": "sha512-mwNV8M7hsy9+OsSFCluv87FiDHaXO91m83xF/o34Ip9xrgkGs7LOCjvUdCpwjxFTJenWEcvEU90aa7vv3aT/Iw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-subagent-control": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent-control/-/dsh-tool-subagent-control-0.1.0-rc.7.tgz", - "integrity": "sha512-VPWUrhTc+X9DcrM/WC+ikM7vCjW54KzRU9wfdhFbXD6hea3hBQ4AlhEdtFtRwmgv3HmjYIUgHkPA3h7pqTsB1Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent-control/-/dsh-tool-subagent-control-0.1.0-rc.8.tgz", + "integrity": "sha512-zXF9iIzr96w/S3jNxkRcyV1ouwA1eUCSmvqhlSDkkcA8RH5jt5vWkTia8fwRs1pFS9m7OpbLtvbDxjC8D3nedw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-subagent-report": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent-report/-/dsh-tool-subagent-report-0.1.0-rc.7.tgz", - "integrity": "sha512-bdDcRsiB9t4EILfA4gO+FWwXrj6SA12SP0nqymz5yOI5AJWR6pzuIOwRk7IdguHBzq8pDyfelw0YxN+EtkS+tA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-subagent-report/-/dsh-tool-subagent-report-0.1.0-rc.8.tgz", + "integrity": "sha512-u0CzoSu7O1YyOpGyHfmT/P2hCfnepSzVKrs6MHFrzjbuiRFEcVme6/iLrc7QdLtg484Q1kcnqG2z0OZS24AnWQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-todo": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-todo/-/dsh-tool-todo-0.1.0-rc.7.tgz", - "integrity": "sha512-Jm00eSYvNq8Qj5GmXdsC7EY3Q6TLSzBTiODNAu2bs5HxEqE5ssQ/fdcxuAXAfSFmh2Vq0ENLZckDg3q5Xvj6Qg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-todo/-/dsh-tool-todo-0.1.0-rc.8.tgz", + "integrity": "sha512-eWxwTeX5WsQPSsz1qyJq+UMiASYB5UHLdObVd4vFLYKbFOoglUK0X+Ie5OjlAkFTP+OzCQMAzUl2gJMwJPWKig==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -3990,17 +3955,17 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-web": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-web/-/dsh-tool-web-0.1.0-rc.7.tgz", - "integrity": "sha512-FJyrD+LspCOIP05/v9hv6MJNkTbgDw8ZpmyAXk6sRopA3yOUju5SnN5HpSZ97ZAK65T6tHYbTMdJhy51D41wOw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-web/-/dsh-tool-web-0.1.0-rc.8.tgz", + "integrity": "sha512-MrTkQ2L52A13ysTM94bSW+5sXq3AyVNoo5q3bK47bsl+hg9Kga5gDgGAZ+SGVSQZAUEHXfuYGHaErdUp50bncw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1", @@ -4009,56 +3974,56 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-web": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-web": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tool-workflow": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-workflow/-/dsh-tool-workflow-0.1.0-rc.7.tgz", - "integrity": "sha512-EF9qbGiCK+SdFhckVcS8o4F0Rrib4VEbt5yCe0njj4UrHubjz5Ldmz68TqdrvFqw6mvQ11SUqAm1ookp5hp8gA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tool-workflow/-/dsh-tool-workflow-0.1.0-rc.8.tgz", + "integrity": "sha512-Z3MCCLM28J/nqiqwHG9roGVUzwMKEADRsSNLPYNemXq5vVEYjm5sBwC+QcWtiQ7NxKXf5ViUu3eKXTe1Fh5TNg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workflow": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workflow": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-tools": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tools/-/dsh-tools-0.1.0-rc.7.tgz", - "integrity": "sha512-7Kq3EEv354aNcxbS0NRfxxyJiZhCsvFV/03a3MdkYO/gG2eM9+E4xQum0N2FL5bw7JiGlgw8jdLMkcNGmavEaA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-tools/-/dsh-tools-0.1.0-rc.8.tgz", + "integrity": "sha512-tvuGAVUS4yoPW9zH7CGWJgMlAzGjfu2UlRiricldlcwSKAaJZPZx/K/YfTivUyDTER6aK1DJUnIpVG7RD/DoHQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-code-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7", - "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-code-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8", + "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-typert-loader": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-loader/-/dsh-typert-loader-0.1.0-rc.7.tgz", - "integrity": "sha512-0sU6QDo5/8/F7eIi9YGOqI4PTz34O6+NOUr3qRK6U3m6YWh4SVzn1Fc5LXqpnaZPNQpetuLnkvTvFylewBghJA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-loader/-/dsh-typert-loader-0.1.0-rc.8.tgz", + "integrity": "sha512-IB2Bkv7UglS0y/Dt7buFq87bbUkD/njvuCp4/bRxlbb/8U02b7v18UXnYFoZjCusfzeYxaCBZihImv7aDMBhCA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" @@ -4066,233 +4031,258 @@ "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-typert-registry": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-typert-protocol": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-protocol/-/dsh-typert-protocol-0.1.0-rc.7.tgz", - "integrity": "sha512-R7qdvaRRHbz5xijoVOxueeBB/VT0eDzuQNQN4iNEBUbI/L9xG9bZutktTQlgrIlBSn1sPH4pLqiCiM6ErQPTaQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-protocol/-/dsh-typert-protocol-0.1.0-rc.8.tgz", + "integrity": "sha512-scwEAefRBL7gRpaXiEdiHRMvlr8dLmUbiEvy0LOAX/8X3FZBd/5tHQ/8lCppAQNTDZMI/LSiSMpu5XrFId+7cQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-typert-registry": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-registry/-/dsh-typert-registry-0.1.0-rc.7.tgz", - "integrity": "sha512-7AQNJLNZTw7/5DzjbfBy4dRqr6VSwc74HBOSPpxm0zzzbmXOEqRCRzMps25IByoAeltRz1ZyY4fzN3tcYa+XwQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-typert-registry/-/dsh-typert-registry-0.1.0-rc.8.tgz", + "integrity": "sha512-pxfRE5f1y81h2lNqj0uooYrErTVgpzKfYm4W+ppRafN5s/+1jlLIYWiG3wWD3bnxyoD2NLcTEhi/GXoaqiwdaw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.7", + "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.8", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-user-approval": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-user-approval/-/dsh-user-approval-0.1.0-rc.7.tgz", - "integrity": "sha512-kYMpU6eg1m1BcfSC4FLWUcNH/QAE8tcu0WRkQzqzoCw8bK/Nl3dqHtd2qSVzI/emIviTulM5I230e4wPi/kuVg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-user-approval/-/dsh-user-approval-0.1.0-rc.8.tgz", + "integrity": "sha512-6SFCxp7dgNFEyzQIcs5i9C+5djgXsAeV0iKmZUCLlcIeVM1chcCMHyGcoXlw8yyB14qFMrMs+TPvhvpu2WWxAw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-user-questions": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-user-questions/-/dsh-user-questions-0.1.0-rc.7.tgz", - "integrity": "sha512-dfT6pj84lJdhrtbW2pV6hRftoKDkqx0aJevrhUhOy7Lv3CqTOheuLwwyT69Lww+n/q80Z+yp41qJq9loCkrOaw==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-user-questions/-/dsh-user-questions-0.1.0-rc.8.tgz", + "integrity": "sha512-kiOAlpKKfB89iObWiiVpueD4XCaday203LGUs7+eGb2isolY6VppoGb7ZmcJQqsW63bjbAA7wZeJuN3CoxcvSQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-web": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web/-/dsh-web-0.1.0-rc.7.tgz", - "integrity": "sha512-v3Wx/Kn57RyLDqvEhmz0m0p4YluLGSabmMp7dRVJSemYUzT6ZB0JCtMhWkXh6O3kNHSBGpfxeY9Pk+8k80X11Q==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web/-/dsh-web-0.1.0-rc.8.tgz", + "integrity": "sha512-YLraDwZTx0Y3Jqw2cu4eClv9ZgEJYoeSFzTe7c9JZ4Z3ThaNCCwEaXWEPMBiPKU6QlR8ahkPPj6xoU9+nPO66g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-web-app": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-app/-/dsh-web-app-0.1.0-rc.7.tgz", - "integrity": "sha512-hcpVwEk5/SgZ63TRUmGaQsC1p2zBBSO8/KAr4xfM2XSwq/tbvpMLrkyt1zehBXcsx6ijB2s62bsr6AYOz9EczA==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.7", - "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.7", - "@deepseek-ai/dsh-app-boot": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-hmr": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-cordis": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-goal": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-jobs": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-plan": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-skill": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-tool": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.0-rc.7", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cmdline": "^0.1.0-rc.7", - "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-client-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-apiproxy": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-frontend-static": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.0-rc.7", - "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7", - "@deepseek-ai/dsh-message-feedback": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-log-export": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-projection-cache": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-stats": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.7", - "@deepseek-ai/dsh-web-frontend": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workspace": "^0.1.0-rc.7", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-app/-/dsh-web-app-0.1.0-rc.8.tgz", + "integrity": "sha512-Te/N+AxFmQF2267yMqama5Lp2evsBJeFsqhnEZPfvFhquLBBWgtO5DNZ2cxto5NhGGNNCk/JV25vHRxd7bZl8g==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-api-remotes": "^0.1.0-rc.8", + "@deepseek-ai/dsh-app-boot": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-connection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-hmr": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-locale": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-modules": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-attachment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-commands": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-cordis": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-goal": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-jobs": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-plan": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-renderer": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-skill": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-theme": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-tool": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.0-rc.8", + "@deepseek-ai/dsh-client-ui-workspace": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cmdline": "^0.1.0-rc.8", + "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-client-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.8", + "@deepseek-ai/dsh-file-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-file-reference-local": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-apiproxy": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-frontend-static": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.0-rc.8", + "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-message-feedback": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-log-export": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-projection-cache": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-reference": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-stats": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.8", + "@deepseek-ai/dsh-web-frontend": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workspace": "^0.1.0-rc.8", "@deepseek-ai/schemastery": "^3.18.1", - "commander": "^15.0.0" + "commander": "^15.0.0", + "open": "^11.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/cordis-plugin-loader": "^1.0.2", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.7", - "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7" + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-shell-env": "^0.1.0-rc.8", + "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.8" } }, - "node_modules/@deepseek-ai/dsh-web-frontend": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-frontend/-/dsh-web-frontend-0.1.0-rc.7.tgz", - "integrity": "sha512-U9Neu6x2/0hrDwCeExEjGO9KkXiJEoJgp61QF/XQkaHyg4E7YSWZDG9NttlhepqFgqs6Dn/qcjrL5G0JGuWYeA==", + "node_modules/@deepseek-ai/dsh-web-app/node_modules/open": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.1.tgz", + "integrity": "sha512-NzwMUB6C1D0+Kd+9iMS/H4k+Ck3cTX6Ckyfr/gAGlmvSE1LUQZnEZvWBi4PYmMwH/S5SMeTXnE+9uAz8uF+pWw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-client-web": "^0.1.0-rc.7", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.2.0", + "wsl-utils": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@deepseek-ai/dsh-web-frontend": { + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-frontend/-/dsh-web-frontend-0.1.0-rc.8.tgz", + "integrity": "sha512-GxWJtkNEniYtSH19XWIJvMO2RSP2bMAZvs3Z6m9cEr9OFbngCY5XCXwqsJMYqOJIao0eSePp/eRCPeXNvqeGXA==", + "license": "MIT" + }, "node_modules/@deepseek-ai/dsh-web-search-deepseek": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-search-deepseek/-/dsh-web-search-deepseek-0.1.0-rc.7.tgz", - "integrity": "sha512-NciK9Tm68RK5XOzl+Jcr4+eG6M5Svq1/23Mhjor9QVYPW1J+wnyxUt6RKLIrmjyiS6VOCOCcZVtyITFkkfVaSQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-web-search-deepseek/-/dsh-web-search-deepseek-0.1.0-rc.8.tgz", + "integrity": "sha512-ifaFw+Cil3yte/9r//3wwMWWPIMuYhvYAB0Hk56IVf+8RDbnRkTJY2foFNNgD91dq1ZL2gBijkdxv1c7wDt+EA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-credentials": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-settings": "^0.1.0-rc.7", - "@deepseek-ai/dsh-web": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-credentials": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-launch-environment": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-settings": "^0.1.0-rc.8", + "@deepseek-ai/dsh-web": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-workflow": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workflow/-/dsh-workflow-0.1.0-rc.7.tgz", - "integrity": "sha512-PRGT0iF2KcOTxDC1DDIrNOe9bID3zZms902ScrxGAGj8AksRO97kj+3U2MOhRPfHkkNhSQMHCLt42DiclYhWtA==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workflow/-/dsh-workflow-0.1.0-rc.8.tgz", + "integrity": "sha512-a4UJKJAFOPQgVaWegk8MIh8BQjqerkGhHu2+uGF4wyGanzI7FHHY/OUmH4hHTVEx2qFcWh732Od/T8LgL6gcbg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-workflow-worker-thread": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workflow-worker-thread/-/dsh-workflow-worker-thread-0.1.0-rc.7.tgz", - "integrity": "sha512-v0YIoPylB1SJW5gBV8gaqoE0PCAZLzEgIU5OqckBKiApHBd0jIo7EzCeTW9+9Tzd8gwwcBQYv7Yxr++rmH8WGQ==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workflow-worker-thread/-/dsh-workflow-worker-thread-0.1.0-rc.8.tgz", + "integrity": "sha512-QBkHJ8l174U3VqHRi2KyJIFey+Uxzo/OOFbTFx7TP5f761lPvqYiXlILuQJ9QvT7WJTyZO3QRLIIU6ZEBwxTIA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "^3.18.1" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-llm": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-subagent": "^0.1.0-rc.7", - "@deepseek-ai/dsh-tools": "^0.1.0-rc.7", - "@deepseek-ai/dsh-workflow": "^0.1.0-rc.7" + "@deepseek-ai/dsh-agent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-llm": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-subagent": "^0.1.0-rc.8", + "@deepseek-ai/dsh-tools": "^0.1.0-rc.8", + "@deepseek-ai/dsh-workflow": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/dsh-workspace": { - "version": "0.1.0-rc.7", - "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workspace/-/dsh-workspace-0.1.0-rc.7.tgz", - "integrity": "sha512-0czW0bI+uFFOS8h8eJ9SGZSdv+StEsa/+E1WEjZQXVeIOxo520Pv47dq+Z3mTyBfV8gJB+UcY0AQ3F0FddYohg==", + "version": "0.1.0-rc.8", + "resolved": "https://registry.npmjs.org/@deepseek-ai/dsh-workspace/-/dsh-workspace-0.1.0-rc.8.tgz", + "integrity": "sha512-Uyw44WcYvXRQjb0kUstTEJmL83hkGQbWnJzglaGWcAvsZBjQHeBgKuLzOZin1yc/dRX2pKuk1InFwxKXpaHjBA==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-brand": "^0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session": "^0.1.0-rc.7", - "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage": "^0.1.0-rc.7", - "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.7" + "@deepseek-ai/dsh-brand": "^0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session": "^0.1.0-rc.8", + "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage": "^0.1.0-rc.8", + "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.8" } }, "node_modules/@deepseek-ai/node-addon-landlock-run": { @@ -6812,106 +6802,6 @@ "win32" ] }, - "node_modules/@shikijs/core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.3.tgz", - "integrity": "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==", - "license": "MIT", - "dependencies": { - "@shikijs/primitive": "4.4.3", - "@shikijs/types": "4.4.3", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.5", - "hast-util-to-html": "^9.0.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.3.tgz", - "integrity": "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.4.3", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.6" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.3.tgz", - "integrity": "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.4.3", - "@shikijs/vscode-textmate": "^10.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/langs": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz", - "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.4.3" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/primitive": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.3.tgz", - "integrity": "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.4.3", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/themes": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz", - "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.4.3" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/types": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz", - "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" - }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -7063,27 +6953,10 @@ "node": ">=10" } }, - "node_modules/@tanstack/react-virtual": { - "version": "3.14.9", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.14.9.tgz", - "integrity": "sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ==", - "license": "MIT", - "dependencies": { - "@tanstack/virtual-core": "3.17.7" - }, - "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" - } - }, "node_modules/@tanstack/virtual-core": { - "version": "3.17.7", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.17.7.tgz", - "integrity": "sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==", + "version": "3.17.8", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.17.8.tgz", + "integrity": "sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==", "license": "MIT", "funding": { "type": "github", @@ -7118,6 +6991,7 @@ "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" @@ -7147,15 +7021,6 @@ "@types/node": "*" } }, - "node_modules/@types/hast": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", - "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "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", @@ -7163,12 +7028,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/katex": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", - "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", - "license": "MIT" - }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", @@ -7179,19 +7038,11 @@ "@types/node": "*" } }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { @@ -7229,18 +7080,6 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "license": "MIT" }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", - "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", - "license": "ISC" - }, "node_modules/@vitest/expect": { "version": "4.1.10", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", @@ -7612,12 +7451,6 @@ } } }, - "node_modules/anser": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/anser/-/anser-2.3.5.tgz", - "integrity": "sha512-vcZjxvvVoxTeR5XBNJB38oTu/7eDCZlwdz32N1eNgpyPF7j/Z7Idf+CUwQOkKKpJ7RJyjxgLHCM7vdIK0iCNMQ==", - "license": "MIT" - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -8126,6 +7959,21 @@ "node": ">=12.0.0" } }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -8262,16 +8110,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chai": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", @@ -8299,36 +8137,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -8445,16 +8253,6 @@ "node": ">= 0.8" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/commander": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", @@ -8601,19 +8399,6 @@ "node": ">=0.10.0" } }, - "node_modules/decode-named-character-reference": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", - "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -8643,17 +8428,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, + "node_modules/default-browser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz", + "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { + "node_modules/default-browser-id": { + "version": "5.0.1", + "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": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", @@ -8671,6 +8484,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -8709,15 +8534,6 @@ "node": ">= 0.8" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -8735,19 +8551,6 @@ "license": "MIT", "optional": true }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/diff": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", @@ -8851,6 +8654,10 @@ "resolved": "packages/dsh-desktop-market-installer", "link": true }, + "node_modules/dsh-desktop-shell": { + "resolved": "packages/dsh-desktop-shell", + "link": true + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -9271,18 +9078,6 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -10012,46 +9807,10 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hono": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.2.tgz", - "integrity": "sha512-JydRilDRkYBQMt9qR9U92mXxmbGqsqSn/IKOrh4e7/gEbn+0zSr8igTu0obwJoNGN4sez28DIql7FBHWydoJpA==", + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.3.tgz", + "integrity": "sha512-r8AO2mYHoLxSHkgafNeC/BXyb2vWRxD3jem4Ts+ptav8oTG5FIRifAjuJEmZI4bSvvc2ns0GxmIYiZnHqN3mMw==", "license": "MIT", "engines": { "node": ">=16.9.0" @@ -10090,16 +9849,6 @@ "dev": true, "license": "ISC" }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -10254,6 +10003,51 @@ "node": ">=8" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10519,31 +10313,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/katex": { - "version": "0.16.47", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", - "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "license": "MIT", - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -10635,21 +10404,12 @@ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", + "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10687,16 +10447,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/markdown-table": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -10720,856 +10470,45 @@ "optional": true, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", - "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", - "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "longest-streak": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.1.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", - "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/media-typer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/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.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "license": "MIT", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-math": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", - "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", - "license": "MIT", - "dependencies": { - "@types/katex": "^0.16.0", - "devlop": "^1.0.0", - "katex": "^0.16.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/media-typer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -12187,23 +11126,6 @@ "wrappy": "1" } }, - "node_modules/oniguruma-parser": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", - "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==", - "license": "MIT" - }, - "node_modules/oniguruma-to-es": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", - "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", - "license": "MIT", - "dependencies": { - "oniguruma-parser": "^0.12.2", - "regex": "^6.1.0", - "regex-recursion": "^6.0.2" - } - }, "node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -12565,6 +11487,18 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/powershell-utils": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.0.tgz", + "integrity": "sha512-ZlsFlG7MtSFCoc5xreOvBAozCJ6Pf06opgJjh9ONEv418xpZSAzNjstD36C6+JwOnfSqOW/9uDkqKjezTdxZhw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/proc-log": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", @@ -12638,16 +11572,6 @@ "node": ">= 4" } }, - "node_modules/property-information": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", - "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/protobufjs": { "version": "7.6.5", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.5.tgz", @@ -12860,6 +11784,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -12867,19 +11792,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, "node_modules/read-binary-file-arch": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", @@ -12929,30 +11841,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", - "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "license": "MIT" - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -13120,6 +12008,18 @@ "node": ">= 18" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -13166,13 +12066,11 @@ } }, "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } + "peer": true }, "node_modules/semver": { "version": "7.8.5", @@ -13356,25 +12254,6 @@ "node": ">=8" } }, - "node_modules/shiki": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.3.tgz", - "integrity": "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "4.4.3", - "@shikijs/engine-javascript": "4.4.3", - "@shikijs/engine-oniguruma": "4.4.3", - "@shikijs/langs": "4.4.3", - "@shikijs/themes": "4.4.3", - "@shikijs/types": "4.4.3", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.5" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/side-channel": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", @@ -13515,16 +12394,6 @@ "source-map": "^0.6.0" } }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -13597,20 +12466,6 @@ "node": ">=8" } }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -13814,16 +12669,6 @@ "node": ">=0.6" } }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -13941,88 +12786,6 @@ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, - "node_modules/unist-util-is": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", - "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", - "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", - "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -14133,34 +12896,6 @@ "node": ">= 0.8" } }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", - "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vite": { "version": "7.3.6", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", @@ -14916,6 +13651,49 @@ } } }, + "node_modules/wsl-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-1.0.0.tgz", + "integrity": "sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xmlbuilder": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", @@ -15046,16 +13824,6 @@ } } }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "packages/dsh-desktop-market-installer": { "version": "0.1.0", "license": "MIT", @@ -15066,6 +13834,13 @@ "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7" } + }, + "packages/dsh-desktop-shell": { + "version": "0.1.0", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1" + } } } } diff --git a/package.json b/package.json index 90649152..87767c12 100644 --- a/package.json +++ b/package.json @@ -41,26 +41,27 @@ }, "dependencies": { "@deepseek-ai/cordis-plugin-group": "1.0.1", - "@deepseek-ai/dsh": "0.1.0-rc.7", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.0-rc.7", - "@deepseek-ai/dsh-atomic-write": "0.1.0-rc.7", - "@deepseek-ai/dsh-bash-local": "0.1.0-rc.7", - "@deepseek-ai/dsh-code-runtime": "0.1.0-rc.7", - "@deepseek-ai/dsh-compaction": "0.1.0-rc.7", - "@deepseek-ai/dsh-fs": "0.1.0-rc.7", - "@deepseek-ai/dsh-invariants": "0.1.0-rc.7", - "@deepseek-ai/dsh-output-retention": "0.1.0-rc.7", - "@deepseek-ai/dsh-sandbox": "0.1.0-rc.7", - "@deepseek-ai/dsh-scope": "0.1.0-rc.7", - "@deepseek-ai/dsh-session-telemetry": "0.1.0-rc.7", - "@deepseek-ai/dsh-session-title-llm": "0.1.0-rc.7", - "@deepseek-ai/dsh-shell": "0.1.0-rc.7", - "@deepseek-ai/dsh-spill": "0.1.0-rc.7", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.0-rc.7", - "@deepseek-ai/dsh-subprocess": "0.1.0-rc.7", - "@deepseek-ai/dsh-timeout": "0.1.0-rc.7", - "@deepseek-ai/dsh-workflow": "0.1.0-rc.7", + "@deepseek-ai/dsh": "0.1.0-rc.8", + "@deepseek-ai/dsh-anonymous-user-id": "0.1.0-rc.8", + "@deepseek-ai/dsh-atomic-write": "0.1.0-rc.8", + "@deepseek-ai/dsh-bash-local": "0.1.0-rc.8", + "@deepseek-ai/dsh-code-runtime": "0.1.0-rc.8", + "@deepseek-ai/dsh-compaction": "0.1.0-rc.8", + "@deepseek-ai/dsh-fs": "0.1.0-rc.8", + "@deepseek-ai/dsh-invariants": "0.1.0-rc.8", + "@deepseek-ai/dsh-output-retention": "0.1.0-rc.8", + "@deepseek-ai/dsh-sandbox": "0.1.0-rc.8", + "@deepseek-ai/dsh-scope": "0.1.0-rc.8", + "@deepseek-ai/dsh-session-telemetry": "0.1.0-rc.8", + "@deepseek-ai/dsh-session-title-llm": "0.1.0-rc.8", + "@deepseek-ai/dsh-shell": "0.1.0-rc.8", + "@deepseek-ai/dsh-spill": "0.1.0-rc.8", + "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.0-rc.8", + "@deepseek-ai/dsh-subprocess": "0.1.0-rc.8", + "@deepseek-ai/dsh-timeout": "0.1.0-rc.8", + "@deepseek-ai/dsh-workflow": "0.1.0-rc.8", "dsh-desktop-market-installer": "file:packages/dsh-desktop-market-installer", + "dsh-desktop-shell": "file:packages/dsh-desktop-shell", "electron-updater": "^6.8.9", "node": "24.9.0", "pnpm": "10.34.5", diff --git a/packages/dsh-desktop-shell/client.js b/packages/dsh-desktop-shell/client.js new file mode 100644 index 00000000..9f97bf3c --- /dev/null +++ b/packages/dsh-desktop-shell/client.js @@ -0,0 +1,208 @@ +window.__ModuleLoader__.load({ + id: 'dsh-desktop-shell', + factory: (require) => { + const module = { exports: {} } + const exports = module.exports + Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }) + const React = require('react') + const primitives = require('@deepseek-ai/dsh-client-ui-primitives') + + const NS = 'desktopShell' + const STYLE_ID = 'dsh-desktop-shell-styles' + const LIGHT_LOGO_URL = '/dsh-desktop-logo-light.png' + const DARK_LOGO_URL = '/dsh-desktop-logo-dark.png' + + // The logo art is a single wide lockup; these are its intrinsic bounds. + const LOGO_VIEW_BOX = { x: 150, y: 330, width: 1030, height: 590 } + const LOGO_ASPECT = LOGO_VIEW_BOX.width / LOGO_VIEW_BOX.height + + const en = { + connect: 'Connect phone', + manage: 'Manage phone connection' + } + const zh = { + connect: '连接手机', + manage: '管理手机连接' + } + + const styles = ` + .dshDesktopLogoDark { display: none; } + body[data-ds-dark-theme] .dshDesktopLogoLight { display: none; } + body[data-ds-dark-theme] .dshDesktopLogoDark { display: inline; } + .dshDesktopPhoneButton { + appearance: none; position: relative; width: 32px; height: 32px; + color: var(--dsw-alias-label-secondary, #73777f); background: transparent; + border: 0; border-radius: 9px; display: inline-flex; align-items: center; + justify-content: center; cursor: pointer; + } + .dshDesktopPhoneButton:hover { + color: var(--dsw-alias-label-primary, #202124); + background: var(--dsw-alias-interactive-bg-hover, rgba(32, 33, 36, .08)); + } + .dshDesktopPhoneButton:focus-visible { outline: 2px solid #4d6bfe; outline-offset: 1px; } + .dshDesktopPhoneButton[hidden] { display: none; } + .dshDesktopPhoneDot { + position: absolute; top: 4px; right: 4px; width: 7px; height: 7px; + border: 1.5px solid var(--dsw-specific-sidebar-fill, #fff); + border-radius: 50%; background: #4da66d; opacity: 0; + } + .dshDesktopPhoneButton.is-connected .dshDesktopPhoneDot { opacity: 1; } + ` + + function installStyles() { + if (typeof document === 'undefined') return + if (document.getElementById(STYLE_ID) !== null) return + const tag = document.createElement('style') + tag.id = STYLE_ID + tag.textContent = styles + document.head.appendChild(tag) + } + + /** + * The dark and light artwork ship as separate PNGs. Both are drawn and CSS + * picks one, so the swap costs no re-render when the theme attribute flips. + */ + function DshDesktopLogo({ height = 18 }) { + const image = (className, href) => + React.createElement('image', { + key: className, + className, + href, + x: LOGO_VIEW_BOX.x, + y: LOGO_VIEW_BOX.y, + width: LOGO_VIEW_BOX.width, + height: LOGO_VIEW_BOX.height, + preserveAspectRatio: 'xMidYMid meet' + }) + return React.createElement( + 'svg', + { + width: Math.round(height * LOGO_ASPECT), + height, + viewBox: `${LOGO_VIEW_BOX.x} ${LOGO_VIEW_BOX.y} ${LOGO_VIEW_BOX.width} ${LOGO_VIEW_BOX.height}`, + fill: 'none', + 'aria-hidden': 'true' + }, + image('dshDesktopLogoLight', LIGHT_LOGO_URL), + image('dshDesktopLogoDark', DARK_LOGO_URL) + ) + } + + /** + * `sidebar.brand.mark` renders in both the expanded lockup and the collapsed + * rail, and hands us the icon box it expects. The lockup is wider than it is + * tall, so scale off the height rather than filling the square. + */ + function BrandMark({ size = 24 }) { + return React.createElement(DshDesktopLogo, { height: Math.round(size * 0.75) }) + } + + function BrandName() { + return React.createElement(primitives.BrandWordmark, {}) + } + + const phoneIcon = () => + React.createElement( + 'svg', + { viewBox: '0 0 24 24', width: 19, height: 19, fill: 'none', 'aria-hidden': 'true' }, + React.createElement('rect', { + x: 7, + y: 2.75, + width: 10, + height: 18.5, + rx: 2.25, + stroke: 'currentColor', + strokeWidth: 1.7 + }), + React.createElement('path', { + d: 'M10.2 5.5h3.6M10.5 18.35h3', + stroke: 'currentColor', + strokeWidth: 1.7, + strokeLinecap: 'round' + }) + ) + + function usePhoneConnected() { + const [connected, setConnected] = React.useState(false) + React.useEffect(() => { + const bridge = window.dshDesktop + if (bridge === undefined) return + let cancelled = false + const read = async () => { + try { + const status = await bridge.phoneStatus() + if (!cancelled) setConnected(status.connected === true) + } catch (error) { + console.warn('[mobile] unable to read connection status', error) + } + } + void read() + const timer = window.setInterval(() => void read(), 1000) + return () => { + cancelled = true + window.clearInterval(timer) + } + }, []) + return connected + } + + /** + * Collapsed to a rail, the entry only earns its slot once a phone is + * actually paired; expanded, it is always offered. + */ + function PhoneAction({ wide, t }) { + const connected = usePhoneConnected() + if (!wide && !connected) return null + const label = connected ? t('manage') : t('connect') + return React.createElement( + 'button', + { + type: 'button', + className: `dshDesktopPhoneButton${connected ? ' is-connected' : ''}`, + 'aria-label': label, + title: label, + onClick: () => { + const bridge = window.dshDesktop + if (bridge === undefined) return + void bridge.openPhonePairing().catch((error) => { + console.error('[mobile] unable to open pairing window', error) + }) + } + }, + phoneIcon(), + React.createElement('span', { className: 'dshDesktopPhoneDot', 'aria-hidden': 'true' }) + ) + } + + const inject = ['slots', 'locale'] + function apply(ctx) { + installStyles() + ctx.effect( + () => ctx.locale.register(NS, { zh, en }), + 'dsh-desktop-shell: copy dictionaries' + ) + const t = ctx.locale.bind(NS) + ctx.slots.inject('sidebar.brand.mark', () => + ctx.slots.register({ name: 'sidebar.brand.mark', id: 'desktop-brand-mark' }, BrandMark) + ) + ctx.slots.inject('sidebar.brand.name', () => + ctx.slots.register({ name: 'sidebar.brand.name', id: 'desktop-brand-name' }, BrandName) + ) + ctx.slots.inject('sidebar.footer.action', () => + ctx.slots.register( + { + name: 'sidebar.footer.action', + id: 'desktop-phone-pairing', + order: 10, + inject: () => ({ t }) + }, + PhoneAction + ) + ) + } + + exports.apply = apply + exports.inject = inject + return module.exports + } +}) diff --git a/packages/dsh-desktop-shell/index.js b/packages/dsh-desktop-shell/index.js new file mode 100644 index 00000000..2d8ce08a --- /dev/null +++ b/packages/dsh-desktop-shell/index.js @@ -0,0 +1,8 @@ +/** + * Host half of the desktop shell plugin. Everything this plugin does lives in + * the browser (sidebar slot fills), so the Host side only has to exist for the + * composed profile to resolve the package and load its client module. + */ +export const name = 'dsh-desktop-shell' + +export function apply() {} diff --git a/packages/dsh-desktop-shell/package.json b/packages/dsh-desktop-shell/package.json new file mode 100644 index 00000000..52587eb4 --- /dev/null +++ b/packages/dsh-desktop-shell/package.json @@ -0,0 +1,23 @@ +{ + "name": "dsh-desktop-shell", + "version": "0.1.0", + "description": "DSH Desktop shell surfaces: sidebar branding and the phone-pairing footer action, filled through the Harness sidebar slots.", + "private": true, + "type": "module", + "main": "./index.js", + "exports": { + ".": "./index.js", + "./client": "./client.js", + "./package.json": "./package.json" + }, + "dsh": { + "client": { + "inject": ["@deepseek-ai/dsh-client-ui-sidebar"], + "platform": "web" + } + }, + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.1" + } +} diff --git a/patches/@deepseek-ai+dsh+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh+0.1.0-rc.8.patch similarity index 88% rename from patches/@deepseek-ai+dsh+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh+0.1.0-rc.8.patch index ee3e7ef8..3cb80023 100644 --- a/patches/@deepseek-ai+dsh+0.1.0-rc.7.patch +++ b/patches/@deepseek-ai+dsh+0.1.0-rc.8.patch @@ -1,11 +1,12 @@ diff --git a/node_modules/@deepseek-ai/dsh/package.json b/node_modules/@deepseek-ai/dsh/package.json --- a/node_modules/@deepseek-ai/dsh/package.json +++ b/node_modules/@deepseek-ai/dsh/package.json -@@ -20,6 +20,7 @@ +@@ -20,6 +20,8 @@ ], "license": "MIT", "dependencies": { + "dsh-desktop-market-installer": "0.1.0", ++ "dsh-desktop-shell": "0.1.0", "commander": "^15.0.0", "js-yaml": "^4.2.0", "node-addon-require-builtin": "^0.1.4", diff --git a/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.8.patch similarity index 67% rename from patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.8.patch index e08a9ba0..62cbf6f0 100644 --- a/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch +++ b/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.8.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js -index 259765c..ca9dd68 100644 +index 84b746e..6983d4a 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js @@ -64,7 +64,32 @@ window.__ModuleLoader__.load({ @@ -79,14 +79,10 @@ index 259765c..ca9dd68 100644 const tagId$1 = "@deepseek-ai/dsh-client-ui-agent-preset/AgentPresetSeat.module.css"; if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) { const tag = document.createElement("style"); -@@ -346,6 +396,21 @@ window.__ModuleLoader__.load({ - "seatIcon": "cubgiG_seatIcon", - "introChar": "cubgiG_introChar", - "chevron": "cubgiG_chevron", -+ "seat": "cubgiG_seat", -+ "seat-icon-in": "cubgiG_seat-icon-in", -+ "item": "cubgiG_item", -+ "seat-char-in": "cubgiG_seat-char-in", +@@ -343,6 +393,17 @@ window.__ModuleLoader__.load({ + document.head.appendChild(tag); + } + var AgentPresetSeat_module_css_default = { + "picker": "cubgiG_picker", + "searchShell": "cubgiG_searchShell", + "searchIcon": "cubgiG_searchIcon", @@ -98,10 +94,10 @@ index 259765c..ca9dd68 100644 + "awesomeIcon": "cubgiG_awesomeIcon", + "awesomeText": "cubgiG_awesomeText", + "awesomeArrow": "cubgiG_awesomeArrow", - "itemName": "cubgiG_itemName", + "chevron": "cubgiG_chevron", + "introChar": "cubgiG_introChar", "introIcon": "cubgiG_introIcon", - "itemDesc": "cubgiG_itemDesc", -@@ -374,6 +439,8 @@ window.__ModuleLoader__.load({ +@@ -374,6 +435,8 @@ window.__ModuleLoader__.load({ const INTRO_CHAR_STAGGER_MS = 40; const INTRO_TEXT_REVEAL_MS = 200; const INTRO_CHAR_FADE_MS = 400; @@ -110,7 +106,7 @@ index 259765c..ca9dd68 100644 /** * Per-character start offset for the introduce reveal. * @param count - character count of the shown preset name. -@@ -391,6 +458,15 @@ window.__ModuleLoader__.load({ +@@ -391,6 +454,15 @@ window.__ModuleLoader__.load({ function AgentPresetSeat({ load, select, introduced, useAgentPresetSeat, t }) { const state = useAgentPresetSeat((snapshot) => snapshot); const [open, setOpen] = (0, react.useState)(false); @@ -126,7 +122,7 @@ index 259765c..ca9dd68 100644 (0, react.useEffect)(() => { load(); }, [load]); -@@ -430,34 +506,114 @@ window.__ModuleLoader__.load({ +@@ -430,34 +502,114 @@ window.__ModuleLoader__.load({ children: character }, index)) }) : label; @@ -257,7 +253,7 @@ index 259765c..ca9dd68 100644 anchor: (0, react_jsx_runtime.jsxs)("button", { type: "button", className: AgentPresetSeat_module_css_default.seat, -@@ -707,6 +863,8 @@ window.__ModuleLoader__.load({ +@@ -706,6 +858,8 @@ window.__ModuleLoader__.load({ rows: [], copy: null, view: null, @@ -266,7 +262,7 @@ index 259765c..ca9dd68 100644 pendingDelete: null, deleting: false, revealedPaths: {} -@@ -724,6 +882,13 @@ window.__ModuleLoader__.load({ +@@ -723,6 +877,13 @@ window.__ModuleLoader__.load({ if (!PRESET_ID.test(draft.id)) return "idInvalid"; if (rows.some((row) => row.id === draft.id)) return "idTaken"; } @@ -280,7 +276,7 @@ index 259765c..ca9dd68 100644 /** Reads the roster and drives the copy dialog, viewer, and location reveals. */ var AgentPresetSectionController = class { api; -@@ -911,6 +1076,143 @@ window.__ModuleLoader__.load({ +@@ -910,6 +1071,143 @@ window.__ModuleLoader__.load({ this.set({ error: messageOf(error) }); } } @@ -424,14 +420,7 @@ index 259765c..ca9dd68 100644 /** * Ask for confirmation before deleting one preset. * @param id - the preset to delete, or null to dismiss the confirmation. -@@ -974,16 +1276,25 @@ window.__ModuleLoader__.load({ - }; - //#endregion - //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-agent-preset/src/client/AgentPresetSection.module.css.mjs -- const css = ".rtSEdW_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.rtSEdW_title{margin:0;font-size:18px;font-weight:600}.rtSEdW_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px}.rtSEdW_group{flex-direction:column;gap:10px;display:flex}.rtSEdW_group+.rtSEdW_group{margin-top:20px}.rtSEdW_groupHead{letter-spacing:.06em;text-transform:uppercase;color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:600}.rtSEdW_cards{grid-template-columns:repeat(auto-fill,minmax(268px,1fr));grid-auto-rows:1fr;gap:12px;margin:0;padding:0;list-style:none;display:grid}.rtSEdW_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;flex-direction:column;transition:border-color .16s,background .16s;display:flex}.rtSEdW_card:hover:not(.rtSEdW_cardActive){border-color:var(--dsw-alias-label-dimmed)}.rtSEdW_cardActive{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-primary)}.rtSEdW_cardBroken,.rtSEdW_cardBroken:hover{border-color:var(--dsw-alias-state-error-primary)}.rtSEdW_brokenBadge{white-space:nowrap;background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-bg-layer-3);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.rtSEdW_cardBrokenReason{color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.rtSEdW_cardMain{appearance:none;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px 12px 0 0;flex-direction:column;flex:1;gap:8px;padding:14px 16px 12px;display:flex}.rtSEdW_cardMain:disabled{cursor:default}.rtSEdW_cardMain:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.rtSEdW_cardHead{align-items:center;gap:8px;display:flex}.rtSEdW_cardName{font-size:15px;font-weight:600;line-height:1.4}.rtSEdW_badge,.rtSEdW_inUse{white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.rtSEdW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary)}.rtSEdW_inUse{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);margin-left:auto}.rtSEdW_cardDesc{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:4;overflow-wrap:anywhere;-webkit-box-orient:vertical;min-height:42px;font-size:13px;line-height:1.55;display:-webkit-box;overflow:hidden}.rtSEdW_cardId{font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-label-dimmed);margin-top:auto;font-size:11px}.rtSEdW_cardFoot{border-top:1px solid var(--dsw-alias-border-l2);justify-content:flex-end;gap:2px;padding:6px 10px;display:flex}.rtSEdW_iconButton{appearance:none;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;padding:6px;display:inline-flex;position:relative}.rtSEdW_iconButton:disabled{opacity:.4;cursor:default}.rtSEdW_iconButton:hover:not(:disabled){background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.rtSEdW_iconButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-1px}.rtSEdW_iconButton:after{content:attr(data-tip);background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);white-space:nowrap;opacity:0;pointer-events:none;border-radius:6px;padding:3px 8px;font-size:11px;line-height:17px;transition:opacity .12s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.rtSEdW_iconButton:hover:after,.rtSEdW_iconButton:focus-visible:after{opacity:1}.rtSEdW_iconDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.rtSEdW_revealedPath{color:var(--dsw-alias-label-tertiary);align-items:baseline;gap:6px;margin:0;padding:6px 16px 10px;font-size:11px;display:flex}.rtSEdW_revealedPath code{font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-label-secondary);user-select:all;overflow-wrap:anywhere}.rtSEdW_revealedPathLabel{white-space:nowrap}.rtSEdW_secondaryButton{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:5px 8px;font-size:12.5px}.rtSEdW_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-bg-layer-1)}.rtSEdW_secondaryButton:disabled{opacity:.5;cursor:default}.rtSEdW_field{flex-direction:column;gap:6px;display:flex}.rtSEdW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500}.rtSEdW_input{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:10px;padding:9px 12px;font-size:13px}.rtSEdW_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.rtSEdW_input::placeholder{color:var(--dsw-alias-label-dimmed)}.rtSEdW_dialog{width:min(560px,100%)}.rtSEdW_dialogFields{flex-direction:column;gap:12px;display:flex}.rtSEdW_viewerCode{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-height:min(52vh,480px);color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);white-space:pre;tab-size:2;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:10px;margin:0;padding:12px;font-size:12.5px;line-height:1.5;overflow:auto}.rtSEdW_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.rtSEdW_deleteDialog{width:min(480px,100%)}.rtSEdW_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.rtSEdW_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.rtSEdW_creatorButton{box-sizing:border-box;border:1px dashed var(--dsw-alias-border-l3);height:44px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:12px;justify-content:center;align-self:stretch;align-items:center;gap:6px;font-size:14px;line-height:22px;display:flex}.rtSEdW_creatorButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.rtSEdW_creatorButton:disabled{opacity:.4;cursor:default}"; -+ const css = ".rtSEdW_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.rtSEdW_title{margin:0;font-size:18px;font-weight:600}.rtSEdW_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px}.rtSEdW_group{flex-direction:column;gap:10px;display:flex}.rtSEdW_group+.rtSEdW_group{margin-top:20px}.rtSEdW_groupHead{letter-spacing:.06em;text-transform:uppercase;color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;font-weight:600}.rtSEdW_cards{grid-template-columns:repeat(auto-fill,minmax(268px,1fr));grid-auto-rows:1fr;gap:12px;margin:0;padding:0;list-style:none;display:grid}.rtSEdW_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;flex-direction:column;transition:border-color .16s,background .16s;display:flex}.rtSEdW_card:hover:not(.rtSEdW_cardActive){border-color:var(--dsw-alias-label-dimmed)}.rtSEdW_cardActive{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-primary)}.rtSEdW_cardBroken,.rtSEdW_cardBroken:hover{border-color:var(--dsw-alias-state-error-primary)}.rtSEdW_brokenBadge{white-space:nowrap;background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-bg-layer-3);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.rtSEdW_cardBrokenReason{color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.rtSEdW_cardMain{appearance:none;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px 12px 0 0;flex-direction:column;flex:1;gap:8px;padding:14px 16px 12px;display:flex}.rtSEdW_cardMain:disabled{cursor:default}.rtSEdW_cardMain:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.rtSEdW_cardHead{align-items:center;gap:8px;display:flex}.rtSEdW_cardName{font-size:15px;font-weight:600;line-height:1.4}.rtSEdW_badge,.rtSEdW_inUse{white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.rtSEdW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary)}.rtSEdW_inUse{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);margin-left:auto}.rtSEdW_cardDesc{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:4;overflow-wrap:anywhere;-webkit-box-orient:vertical;min-height:42px;font-size:13px;line-height:1.55;display:-webkit-box;overflow:hidden}.rtSEdW_cardId{font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-label-dimmed);margin-top:auto;font-size:11px}.rtSEdW_cardFoot{border-top:1px solid var(--dsw-alias-border-l2);justify-content:flex-end;gap:2px;padding:6px 10px;display:flex}.rtSEdW_iconButton{appearance:none;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;padding:6px;display:inline-flex;position:relative}.rtSEdW_iconButton:disabled{opacity:.4;cursor:default}.rtSEdW_iconButton:hover:not(:disabled){background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.rtSEdW_iconButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-1px}.rtSEdW_iconButton:after{content:attr(data-tip);background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);white-space:nowrap;opacity:0;pointer-events:none;border-radius:6px;padding:3px 8px;font-size:11px;line-height:17px;transition:opacity .12s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.rtSEdW_iconButton:hover:after,.rtSEdW_iconButton:focus-visible:after{opacity:1}.rtSEdW_iconDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.rtSEdW_revealedPath{color:var(--dsw-alias-label-tertiary);align-items:baseline;gap:6px;margin:0;padding:6px 16px 10px;font-size:11px;display:flex}.rtSEdW_revealedPath code{font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-label-secondary);user-select:all;overflow-wrap:anywhere}.rtSEdW_revealedPathLabel{white-space:nowrap}.rtSEdW_secondaryButton{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:5px 8px;font-size:12.5px}.rtSEdW_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-bg-layer-1)}.rtSEdW_secondaryButton:disabled{opacity:.5;cursor:default}.rtSEdW_field{flex-direction:column;gap:6px;display:flex}.rtSEdW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500}.rtSEdW_input{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:10px;padding:9px 12px;font-size:13px}.rtSEdW_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.rtSEdW_input::placeholder{color:var(--dsw-alias-label-dimmed)}.rtSEdW_dialog{width:min(560px,100%)}.rtSEdW_dialogFields{flex-direction:column;gap:12px;display:flex}.rtSEdW_viewerCode{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-height:min(52vh,480px);color:var(--dsw-alias-label-secondary);font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);white-space:pre;tab-size:2;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:10px;margin:0;padding:12px;font-size:12.5px;line-height:1.5;overflow:auto}.rtSEdW_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.rtSEdW_deleteDialog{width:min(480px,100%)}.rtSEdW_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.rtSEdW_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.rtSEdW_creatorButton{box-sizing:border-box;border:1px dashed var(--dsw-alias-border-l3);height:44px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:12px;justify-content:center;align-self:stretch;align-items:center;gap:6px;font-size:14px;line-height:22px;display:flex}.rtSEdW_creatorButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.rtSEdW_creatorButton:disabled{opacity:.4;cursor:default}.rtSEdW_sectionHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.rtSEdW_importButton{flex:none}.rtSEdW_hiddenInput{display:none}.rtSEdW_importSecurity{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:10px;margin:0;padding:10px 12px;font-size:12px;line-height:1.5}.rtSEdW_importSummary{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:12px}.rtSEdW_importSummary dt{color:var(--dsw-alias-label-tertiary)}.rtSEdW_importSummary dd{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);margin:0}.rtSEdW_importWarnings{color:var(--dsw-alias-state-warning-primary,var(--dsw-alias-label-secondary));margin:0;padding-left:20px;font-size:12px;line-height:1.5}"; - const tagId = "@deepseek-ai/dsh-client-ui-agent-preset/AgentPresetSection.module.css"; - if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) { +@@ -979,10 +1277,17 @@ window.__ModuleLoader__.load({ const tag = document.createElement("style"); tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-agent-preset"; tag.dataset.pluginCss = tagId; @@ -440,7 +429,6 @@ index 259765c..ca9dd68 100644 document.head.appendChild(tag); } var AgentPresetSection_module_css_default = { -+ "cardMain": "rtSEdW_cardMain", + "sectionHead": "rtSEdW_sectionHead", + "sectionActions": "rtSEdW_sectionActions", + "importButton": "rtSEdW_importButton", @@ -448,11 +436,10 @@ index 259765c..ca9dd68 100644 + "importSecurity": "rtSEdW_importSecurity", + "importSummary": "rtSEdW_importSummary", + "importWarnings": "rtSEdW_importWarnings", -+ "field": "rtSEdW_field", + "badge": "rtSEdW_badge", "brokenBadge": "rtSEdW_brokenBadge", - "inUse": "rtSEdW_inUse", - "cards": "rtSEdW_cards", -@@ -1104,6 +1415,84 @@ window.__ModuleLoader__.load({ + "card": "rtSEdW_card", +@@ -1103,6 +1408,84 @@ window.__ModuleLoader__.load({ }) }); } @@ -537,7 +524,7 @@ index 259765c..ca9dd68 100644 /** * Render one card's description, clamped by CSS and offered in full on hover. * The tooltip is attached only while the text is actually cut off, so a short -@@ -1151,6 +1540,7 @@ window.__ModuleLoader__.load({ +@@ -1150,6 +1533,7 @@ window.__ModuleLoader__.load({ function AgentPresetSection(props) { const { useAgentPresetSection, t, load } = props; const state = useAgentPresetSection((snapshot) => snapshot); @@ -545,7 +532,7 @@ index 259765c..ca9dd68 100644 const viewedId = state.view?.id; const viewedRow = viewedId === void 0 ? void 0 : state.rows.find((row) => row.id === viewedId); const viewedTitle = state.view === null ? "" : viewedRow === void 0 ? state.view.title : presetDisplayText(viewedRow, t).name; -@@ -1191,9 +1581,40 @@ window.__ModuleLoader__.load({ +@@ -1190,9 +1574,40 @@ window.__ModuleLoader__.load({ return (0, react_jsx_runtime.jsxs)("div", { className: AgentPresetSection_module_css_default.section, children: [ @@ -589,7 +576,7 @@ index 259765c..ca9dd68 100644 }), (0, react_jsx_runtime.jsx)("p", { className: AgentPresetSection_module_css_default.intro, -@@ -1289,7 +1710,7 @@ window.__ModuleLoader__.load({ +@@ -1288,7 +1703,7 @@ window.__ModuleLoader__.load({ }, children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenOutline16, {}) }), @@ -598,7 +585,7 @@ index 259765c..ca9dd68 100644 type: "button", className: AgentPresetSection_module_css_default.iconButton, disabled: !state.authorable || row.broken !== void 0, -@@ -1298,9 +1719,20 @@ window.__ModuleLoader__.load({ +@@ -1297,9 +1712,20 @@ window.__ModuleLoader__.load({ onClick: () => { props.beginCopy(row.id); }, @@ -622,7 +609,7 @@ index 259765c..ca9dd68 100644 type: "button", className: `${AgentPresetSection_module_css_default.iconButton} ${AgentPresetSection_module_css_default.iconDanger}`, "data-tip": t("delete"), -@@ -1329,13 +1761,22 @@ window.__ModuleLoader__.load({ +@@ -1328,13 +1754,22 @@ window.__ModuleLoader__.load({ (0, react_jsx_runtime.jsx)(CopyDialog, { state, t, @@ -648,7 +635,7 @@ index 259765c..ca9dd68 100644 (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, { open: state.view !== null, onClose: () => { -@@ -1689,6 +2130,15 @@ window.__ModuleLoader__.load({ +@@ -1689,6 +2124,15 @@ window.__ModuleLoader__.load({ }, confirmCopy: () => section.confirmCopy(), openLocation: (id) => section.openLocation(id), diff --git a/patches/@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.8.patch similarity index 91% rename from patches/@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.8.patch index 3cfeac02..88ff7296 100644 --- a/patches/@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.7.patch +++ b/patches/@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.8.patch @@ -1,10 +1,10 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js -index 1dd0e89..dd1c233 100644 +index 4b7dd35..f9bf444 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js -@@ -5233,6 +5233,15 @@ window.__ModuleLoader__.load({ - "toBottom": "Md3f7G_toBottom", - "scroll": "Md3f7G_scroll" +@@ -5376,6 +5376,15 @@ window.__ModuleLoader__.load({ + "turnStatus": "Md3f7G_turnStatus", + "turnStatusClock": "Md3f7G_turnStatusClock" }; + const queryRailCss = ".dshQueryRail_root{z-index:7;width:46px;pointer-events:none;position:fixed}.dshQueryRail_scroller{width:40px;height:100%;padding:8px 2px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:none;flex-direction:column;align-items:flex-start;gap:2px;display:flex;position:relative}.dshQueryRail_scroller::-webkit-scrollbar{width:0;height:0;display:none}.dshQueryRail_item{width:34px;height:12px;min-height:12px;cursor:pointer;background:transparent;border:0;outline:none;flex:none;padding:0;position:relative}.dshQueryRail_item:before{content:\"\";width:10px;height:1px;background:var(--dsw-alias-label-dimmed);border-radius:2px;transition:width .14s ease,background-color .14s ease,opacity .14s ease;display:block}.dshQueryRail_item:hover:before,.dshQueryRail_item:focus-visible:before{width:20px;background:var(--dsw-alias-label-secondary)}.dshQueryRail_itemActive:before{width:28px;height:2px;background:var(--dsw-alias-label-primary)}.dshQueryRail_tooltip{width:276px;max-width:min(276px,calc(100vw - 64px));color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l2);box-shadow:var(--dsw-shadow-lv2);pointer-events:none;border-radius:12px;padding:10px 12px;position:absolute;left:42px}.dshQueryRail_tooltipLabel{color:var(--dsw-alias-label-caption);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:11px;line-height:16px}.dshQueryRail_tooltipText{-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;line-height:19px;display:-webkit-box}@media(max-width:980px){.dshQueryRail_root{display:none}}@media(prefers-reduced-motion:reduce){.dshQueryRail_item:before{transition:none}}"; + const queryRailTagId = "@deepseek-ai/dsh-client-ui-conversation/QueryRail.css"; @@ -18,7 +18,7 @@ index 1dd0e89..dd1c233 100644 //#endregion //#region lib/types/client/chat/ChatNodeSeat.js /** Subscribe and dispatch one stable Context key without observing sibling Nodes. */ -@@ -5289,6 +5298,21 @@ window.__ModuleLoader__.load({ +@@ -5432,6 +5441,21 @@ window.__ModuleLoader__.load({ for (const row of list.querySelectorAll("[data-chat-anchor-key]")) if (row.dataset.chatAnchorKey === key) return row; return null; } @@ -40,7 +40,7 @@ index 1dd0e89..dd1c233 100644 /** Row position in scrollport coordinates (viewport-independent). */ function flowTop(row, scrollport) { return row.getBoundingClientRect().top - scrollport.getBoundingClientRect().top; -@@ -5364,6 +5388,106 @@ window.__ModuleLoader__.load({ +@@ -5516,6 +5540,106 @@ window.__ModuleLoader__.load({ })] }); } @@ -147,10 +147,10 @@ index 1dd0e89..dd1c233 100644 /** * The chat view slot entry: pure component over the composed props; each * ordered business Node crosses the keyed renderer seat. -@@ -5381,11 +5505,25 @@ window.__ModuleLoader__.load({ - const loadingOlder = useSession((s) => s.loadingOlder); - const selectedCallId = useStore((s) => s.selection?.callId); - const pendingSteering = (0, react.useMemo)(() => inbox.filter((item) => item.placement === "steering"), [inbox]); +@@ -5561,11 +5685,28 @@ window.__ModuleLoader__.load({ + ...owner, + loadImage + }), [loadImage, renderSlot]); + const queries = (0, react.useMemo)(() => order.flatMap((key) => { + const node = nodeStore.get(key); + if (node?.kind !== "user" && node?.kind !== "steering") return []; @@ -161,7 +161,10 @@ index 1dd0e89..dd1c233 100644 + }; + const text = content.text.replace(/\s+/g, " ").trim(); + const preview = (text || (content.images.length > 0 ? document.documentElement.lang.startsWith("zh") ? "图片 Query" : "Image query" : document.documentElement.lang.startsWith("zh") ? "无文本 Query" : "Query without text")).slice(0, 240); -+ return [{ key, preview }]; ++ return [{ ++ key, ++ preview ++ }]; + }), [order, nodeStore]); const runningTurnStart = (0, react.useMemo)(() => runningTurnStartTime(timeline), [timeline]); const listRef = (0, react.useRef)(null); @@ -173,7 +176,7 @@ index 1dd0e89..dd1c233 100644 /** Last position delivered or written on the main thread. */ const observedTopRef = (0, react.useRef)(0); /** Paging anchor: semantic row/position at click, updated by reader scrolls -@@ -5405,6 +5543,12 @@ window.__ModuleLoader__.load({ +@@ -5585,6 +5726,12 @@ window.__ModuleLoader__.load({ const lastNode = lastKey === null ? void 0 : nodeStore.get(lastKey); const lastSteeringId = pendingSteering[pendingSteering.length - 1]?.id ?? null; const followSig = `${openState}:${firstSeq}:${lastKey}:${order.length}:${running ? 1 : 0}:${lastSteeringId ?? ""}`; @@ -186,7 +189,7 @@ index 1dd0e89..dd1c233 100644 const toBottom = (el) => { anchorRef.current = null; el.scrollTop = el.scrollHeight; -@@ -5412,6 +5556,8 @@ window.__ModuleLoader__.load({ +@@ -5592,6 +5739,8 @@ window.__ModuleLoader__.load({ atBottomRef.current = true; setAtBottom(true); chatScroll.save(null); @@ -195,7 +198,7 @@ index 1dd0e89..dd1c233 100644 }; (0, react.useLayoutEffect)(() => { const local = listRef.current; -@@ -5468,6 +5614,7 @@ window.__ModuleLoader__.load({ +@@ -5648,6 +5797,7 @@ window.__ModuleLoader__.load({ /* v8 ignore next -- ref-null guard: the handler only fires while mounted. */ if (local === null) return; const el = scrollerOf(local); @@ -203,7 +206,7 @@ index 1dd0e89..dd1c233 100644 const floor = Math.max(0, el.scrollHeight - el.clientHeight); const movedByReader = Math.abs(el.scrollTop - Math.min(observedTopRef.current, floor)) > .5; const isAtBottom = movedByReader ? floor - el.scrollTop <= 25 : atBottomRef.current; -@@ -5487,6 +5634,10 @@ window.__ModuleLoader__.load({ +@@ -5667,6 +5817,10 @@ window.__ModuleLoader__.load({ else if (position !== null) chatScroll.save(position); observedTopRef.current = el.scrollTop; }; @@ -214,7 +217,7 @@ index 1dd0e89..dd1c233 100644 (0, react.useEffect)(() => { const local = listRef.current; /* v8 ignore next -- ref-null guard: effect runs after the list node commits. */ -@@ -5540,9 +5691,29 @@ window.__ModuleLoader__.load({ +@@ -5720,9 +5874,29 @@ window.__ModuleLoader__.load({ } loadOlder(); }; @@ -232,9 +235,9 @@ index 1dd0e89..dd1c233 100644 + activeQueryKeyRef.current = key; + setActiveQueryKey(key); + }; - return (0, react_jsx_runtime.jsx)("div", { + return (0, react_jsx_runtime.jsxs)("div", { className: ChatView_module_css_default.root, -- children: (0, react_jsx_runtime.jsxs)("div", { +- children: [(0, react_jsx_runtime.jsxs)("div", { + children: [(0, react_jsx_runtime.jsx)(QueryRail, { + queries, + activeKey: activeQueryKey, @@ -245,12 +248,3 @@ index 1dd0e89..dd1c233 100644 ref: listRef, className: ChatView_module_css_default.scroll, children: [(0, react_jsx_runtime.jsxs)("div", { -@@ -5607,7 +5778,7 @@ window.__ModuleLoader__.load({ - children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {}) - }) - })] -- }) -+ })] - }); - } - //#endregion diff --git a/patches/@deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.8.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.8.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.8.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.8.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.8.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.8.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.8.patch similarity index 76% rename from patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.8.patch index 5f58f0e5..d2f8469b 100644 --- a/patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.7.patch +++ b/patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.8.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js -index 02caaf7..935dceb 100644 +index 12ebd55..76d09ba 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js -@@ -66,6 +66,14 @@ window.__ModuleLoader__.load({ +@@ -64,6 +64,14 @@ window.__ModuleLoader__.load({ tag.textContent = css$3; document.head.appendChild(tag); } @@ -15,47 +15,9 @@ index 02caaf7..935dceb 100644 + document.head.appendChild(tag); + } var ModelsSection_module_css_default = { - "editorRoute": "zGbnIq_editorRoute", - "section": "zGbnIq_section", -@@ -837,6 +845,11 @@ window.__ModuleLoader__.load({ - return next; - }); - }; -+ const allCandidatesPicked = candidates !== void 0 && candidates.length > 0 && candidates.every((candidate) => picked.has(candidate.id)); -+ const toggleAllCandidates = () => { -+ if (candidates === void 0) return; -+ setPicked(allCandidatesPicked ? /* @__PURE__ */ new Set() : new Set(candidates.map((candidate) => candidate.id))); -+ }; - const askable = probe.provider !== void 0 || probe.baseURL !== void 0 && probe.baseURL.length > 0; - return (0, react_jsx_runtime.jsxs)("section", { - className: ModelsSection_module_css_default["modelCatalog"], -@@ -1003,7 +1016,15 @@ window.__ModuleLoader__.load({ - onClick: adoptPicked, - children: t("fetchAdopt") - })] }), -- children: (0, react_jsx_runtime.jsx)("ul", { -+ children: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("div", { -+ className: ModelsSection_module_css_default["editorActions"], -+ children: (0, react_jsx_runtime.jsx)("button", { -+ type: "button", -+ className: ModelsSection_module_css_default["linkButton"], -+ onClick: toggleAllCandidates, -+ children: t(allCandidatesPicked ? "fetchDeselectAll" : "fetchSelectAll") -+ }) -+ }), (0, react_jsx_runtime.jsx)("ul", { - className: ModelsSection_module_css_default["candidateList"], - children: (candidates ?? []).map((candidate) => (0, react_jsx_runtime.jsx)("li", { - className: ModelsSection_module_css_default["candidate"], -@@ -1021,7 +1042,7 @@ window.__ModuleLoader__.load({ - })] - }) - }, candidate.id)) -- }) -+ })] }) - }) - ] - }); -@@ -1753,6 +1774,26 @@ window.__ModuleLoader__.load({ + "addActions": "zGbnIq_addActions", + "addBlock": "zGbnIq_addBlock", +@@ -1784,6 +1792,26 @@ window.__ModuleLoader__.load({ function providerCopy(template, target) { return template.replace("{provider}", () => providerTargetLabel(target)); } @@ -82,7 +44,7 @@ index 02caaf7..935dceb 100644 /** * Render the Models section content column. * @param props - slot-delivered injected dependencies. -@@ -1778,6 +1819,8 @@ window.__ModuleLoader__.load({ +@@ -1810,6 +1838,8 @@ window.__ModuleLoader__.load({ const [deleteFailure, setDeleteFailure] = (0, react.useState)(void 0); const [savedTarget, setSavedTarget] = (0, react.useState)(void 0); const [declaring, setDeclaring] = (0, react.useState)(false); @@ -91,7 +53,7 @@ index 02caaf7..935dceb 100644 const [dismissedSetup, setDismissedSetup] = (0, react.useState)(() => /* @__PURE__ */ new Set()); const announceSaved = (target) => { controller.load().then(() => { -@@ -1847,10 +1890,16 @@ window.__ModuleLoader__.load({ +@@ -1879,10 +1909,16 @@ window.__ModuleLoader__.load({ }; const anyUsable = state.rows.some(providerUsable); const configured = state.rows.filter((row) => row.configured); @@ -103,13 +65,13 @@ index 02caaf7..935dceb 100644 + }); const addTarget = adding ? editing : void 0; const addNamespace = addTarget === void 0 ? void 0 : state.namespaces.get(addTarget.settingsNs); - const protocols = protocolChoices(state.namespaces.get("llm-pi-ai")); + const protocols = protocolChoices(state.namespaces.get("llm-pi-ai"), schema); + const normalizedProviderQuery = providerQuery.trim().toLowerCase(); + const visibleAddable = normalizedProviderQuery.length === 0 ? addable : addable.filter((row) => `${row.entry.displayName} ${row.entry.provider}`.toLowerCase().includes(normalizedProviderQuery)); return (0, react_jsx_runtime.jsxs)("div", { className: ModelsSection_module_css_default["section"], children: [ -@@ -1967,24 +2016,66 @@ window.__ModuleLoader__.load({ +@@ -2001,24 +2037,66 @@ window.__ModuleLoader__.load({ className: ModelsSection_module_css_default["addCard"], children: [(0, react_jsx_runtime.jsxs)("div", { className: ModelsSection_module_css_default["field"], @@ -191,7 +153,7 @@ index 02caaf7..935dceb 100644 }), (0, react_jsx_runtime.jsx)(ProviderEditor, { provider: addTarget.provider, displayName: addTarget.displayName, -@@ -2027,6 +2118,8 @@ window.__ModuleLoader__.load({ +@@ -2062,6 +2140,8 @@ window.__ModuleLoader__.load({ setDeclaring(false); setAdding(true); setEditing(targetOf(first)); @@ -200,7 +162,7 @@ index 02caaf7..935dceb 100644 }, children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutline16, { size: 14 }), t("add")] }), (0, react_jsx_runtime.jsxs)("button", { -@@ -2135,7 +2228,7 @@ window.__ModuleLoader__.load({ +@@ -2170,7 +2250,7 @@ window.__ModuleLoader__.load({ } //#endregion //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-models/src/client/DeepSeekOnboardingDialog.module.css.mjs @@ -209,7 +171,7 @@ index 02caaf7..935dceb 100644 const tagId$1 = "@deepseek-ai/dsh-client-ui-settings-models/DeepSeekOnboardingDialog.module.css"; if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) { const tag = document.createElement("style"); -@@ -2146,50 +2239,60 @@ window.__ModuleLoader__.load({ +@@ -2181,6 +2261,12 @@ window.__ModuleLoader__.load({ } var DeepSeekOnboardingDialog_module_css_default = { "description": "GL8Viq_description", @@ -222,7 +184,10 @@ index 02caaf7..935dceb 100644 "editor": "GL8Viq_editor" }; //#endregion - //#region lib/types/client/DeepSeekOnboardingDialog.js +@@ -2196,35 +2282,50 @@ window.__ModuleLoader__.load({ + function assertNever$1(_value) { + throw new Error("unexpected DeepSeek onboarding state"); + } + /** Mainstream catalog routes exposed during first-run setup. */ + const ONBOARDING_PROVIDERS = [ + { provider: "deepseek-official", displayName: "DeepSeek", kind: "onboardingManufacturer" }, @@ -239,17 +204,6 @@ index 02caaf7..935dceb 100644 + { provider: "together", displayName: "Together AI", kind: "onboardingInference" } + ]; /** -- * Official-DeepSeek first-run step. Readiness comes from the same -- * provider/settings/credential join as the Models page: any provider the user -- * can already talk to ends the step, and only a user with none is offered the -- * official DeepSeek route. The step reuses that page's credential editor in -- * the onboarding plugin's shared modal, so the key is entered once. -- */ -- /* v8 ignore next 3 -- closed-union defaults only defend future source widening */ -- function assertNever(_value) { -- throw new Error("unexpected DeepSeek onboarding state"); -- } -- /** - * Prompt a first-run user for the official DeepSeek credential while no - * provider can serve requests and that credential is writable. + * Prompt a first-run user to choose a supported mainstream provider and store @@ -258,7 +212,7 @@ index 02caaf7..935dceb 100644 * @returns the onboarding modal or null when onboarding needs no intervention. */ function DeepSeekOnboardingDialog(props) { - const { complete, controller, useModels, api, t } = props; + const { complete, controller, useModels, api, schema, t } = props; const state = useModels((snapshot) => snapshot); - const readiness = onboardingReadiness(state); + const [selectedProvider, setSelectedProvider] = (0, react.useState)("deepseek-official"); @@ -284,7 +238,7 @@ index 02caaf7..935dceb 100644 - case "unavailable": return null; - case "credential-missing": break; - /* v8 ignore next -- every current readiness variant is handled above */ -- default: return assertNever(readiness); +- default: return assertNever$1(readiness); - } - const row = state.rows.find((candidate) => candidate.entry.provider === "deepseek-official" && candidate.entry.settingsNs === "llm-deepseek" && candidate.entry.settingsPath.length === 0); - const namespace = state.namespaces.get("llm-deepseek"); @@ -299,47 +253,39 @@ index 02caaf7..935dceb 100644 const finishCredential = (changed) => { if (!changed) { complete(); -@@ -2199,28 +2302,54 @@ window.__ModuleLoader__.load({ - }; - return (0, react_jsx_runtime.jsxs)(OnboardingModal, { - title: t("onboardingTitle"), -- children: [(0, react_jsx_runtime.jsx)("p", { -+ children: [ -+ (0, react_jsx_runtime.jsx)("p", { +@@ -2237,26 +2338,48 @@ window.__ModuleLoader__.load({ + children: [(0, react_jsx_runtime.jsx)("p", { className: DeepSeekOnboardingDialog_module_css_default.description, children: t("onboardingDescription") -- }), (0, react_jsx_runtime.jsx)("div", { -+ }), -+ (0, react_jsx_runtime.jsx)("p", { -+ className: DeepSeekOnboardingDialog_module_css_default.selectionLabel, -+ children: t("onboardingProvider") -+ }), -+ (0, react_jsx_runtime.jsx)("div", { -+ className: DeepSeekOnboardingDialog_module_css_default.providerList, -+ children: choices.map((choice) => { -+ const active = choice.provider === selected.provider; -+ return (0, react_jsx_runtime.jsxs)("button", { -+ type: "button", -+ className: `${DeepSeekOnboardingDialog_module_css_default.providerButton}${active ? ` ${DeepSeekOnboardingDialog_module_css_default.providerButtonSelected}` : ""}`, -+ "aria-pressed": active, -+ onClick: () => setSelectedProvider(choice.provider), -+ children: [(0, react_jsx_runtime.jsx)("span", { -+ className: DeepSeekOnboardingDialog_module_css_default.providerName, -+ children: choice.displayName -+ }), (0, react_jsx_runtime.jsx)("span", { -+ className: DeepSeekOnboardingDialog_module_css_default.providerKind, -+ children: t(choice.kind) -+ })] -+ }, choice.provider); -+ }) -+ }), -+ (0, react_jsx_runtime.jsx)("div", { ++ }), (0, react_jsx_runtime.jsx)("p", { ++ className: DeepSeekOnboardingDialog_module_css_default.selectionLabel, ++ children: t("onboardingProvider") ++ }), (0, react_jsx_runtime.jsx)("div", { ++ className: DeepSeekOnboardingDialog_module_css_default.providerList, ++ children: choices.map((choice) => { ++ const active = choice.provider === selected.provider; ++ return (0, react_jsx_runtime.jsxs)("button", { ++ type: "button", ++ className: `${DeepSeekOnboardingDialog_module_css_default.providerButton}${active ? ` ${DeepSeekOnboardingDialog_module_css_default.providerButtonSelected}` : ""}`, ++ "aria-pressed": active, ++ onClick: () => setSelectedProvider(choice.provider), ++ children: [(0, react_jsx_runtime.jsx)("span", { ++ className: DeepSeekOnboardingDialog_module_css_default.providerName, ++ children: choice.displayName ++ }), (0, react_jsx_runtime.jsx)("span", { ++ className: DeepSeekOnboardingDialog_module_css_default.providerKind, ++ children: t(choice.kind) ++ })] ++ }, choice.provider); ++ }) + }), (0, react_jsx_runtime.jsx)("div", { className: DeepSeekOnboardingDialog_module_css_default.editor, children: (0, react_jsx_runtime.jsx)(ProviderEditor, { provider: row.entry.provider, - displayName: row.entry.displayName, + displayName: selected.displayName, namespace, + schema, settingsPath: row.entry.settingsPath, + ...row.entry.declared === true ? { declared: true } : {}, api, @@ -359,7 +305,7 @@ index 02caaf7..935dceb 100644 })] }); } -@@ -2457,6 +2586,8 @@ window.__ModuleLoader__.load({ +@@ -2520,6 +2643,8 @@ window.__ModuleLoader__.load({ deleting: "Deleting {provider}…", add: "Add provider", provider: "Provider", @@ -368,16 +314,7 @@ index 02caaf7..935dceb 100644 close: "Close", cancel: "Cancel", apply: "Apply", -@@ -2511,6 +2642,8 @@ window.__ModuleLoader__.load({ - fetchEmpty: "The provider listed no models. Add them by hand.", - fetchTitle: "Choose models to add", - fetchDescription: "These are the models this provider has available. Choose the ones to add.", -+ fetchSelectAll: "Select all", -+ fetchDeselectAll: "Deselect all", - fetchAdopt: "Add selected", - customAdd: "Add a custom provider", - customTitle: "Custom provider", -@@ -2530,10 +2663,14 @@ window.__ModuleLoader__.load({ +@@ -2595,10 +2720,14 @@ window.__ModuleLoader__.load({ welcomeBody: WELCOME_NOTICE_COPY.en.body, welcomeContinue: WELCOME_NOTICE_COPY.en.continueLabel, welcomeError: "The acknowledgement could not be saved. Please try again.", @@ -395,7 +332,7 @@ index 02caaf7..935dceb 100644 onboardingSaving: "Saving…", keyRequired: "Enter an API key to continue." }; -@@ -2553,6 +2690,8 @@ window.__ModuleLoader__.load({ +@@ -2618,6 +2747,8 @@ window.__ModuleLoader__.load({ deleting: "正在删除 {provider}…", add: "添加提供方", provider: "提供方", @@ -404,16 +341,7 @@ index 02caaf7..935dceb 100644 close: "关闭", cancel: "取消", apply: "保存", -@@ -2607,6 +2746,8 @@ window.__ModuleLoader__.load({ - fetchEmpty: "该提供方没有列出任何模型,请手动添加。", - fetchTitle: "选择要添加的模型", - fetchDescription: "以下是模型提供方的可用模型,勾选要添加的模型。", -+ fetchSelectAll: "全选", -+ fetchDeselectAll: "取消全选", - fetchAdopt: "添加所选", - customAdd: "添加自定义提供方", - customTitle: "自定义提供方", -@@ -2626,10 +2767,14 @@ window.__ModuleLoader__.load({ +@@ -2693,10 +2824,14 @@ window.__ModuleLoader__.load({ welcomeBody: WELCOME_NOTICE_COPY.zh.body, welcomeContinue: WELCOME_NOTICE_COPY.zh.continueLabel, welcomeError: "暂时无法保存确认状态,请重试。", diff --git a/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch deleted file mode 100644 index 6064b3c3..00000000 --- a/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch +++ /dev/null @@ -1,117 +0,0 @@ -diff --git a/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js -index 9ca3639..16d58b0 100644 ---- a/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js -+++ b/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js -@@ -23,16 +23,20 @@ window.__ModuleLoader__.load({ - } - //#endregion - //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-sidebar/src/client/SidebarRoot.module.css.mjs -- const css = ".hHd-Xa_root{--dsh-sidebar-inline-padding:12px;height:100%;padding:6px var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:14px;display:flex}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}.hHd-Xa_root.hHd-Xa_quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.hHd-Xa_fading>*{opacity:0;transition:opacity .15s var(--ds-ease-in-out)}.hHd-Xa_wide{animation:hHd-Xa_wide-in .2s var(--ds-ease-in-out)}@keyframes hHd-Xa_wide-in{0%{opacity:0}}.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_regionArea{animation:hHd-Xa_rail-in .15s var(--ds-ease-in-out) backwards}.hHd-Xa_railIn .hHd-Xa_footArea{animation:hHd-Xa_rail-fade-in .15s var(--ds-ease-in-out) backwards}@keyframes hHd-Xa_rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes hHd-Xa_rail-fade-in{0%{opacity:0}}.hHd-Xa_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:60px;margin-bottom:8px;padding:8px 0 8px 4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_logoRow{justify-content:flex-start;height:36px;margin-bottom:12px;padding:0}.hHd-Xa_brand{min-width:0;color:inherit;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;padding:0;display:inline-flex;overflow:hidden}.hHd-Xa_iconButton{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_collapsed .hHd-Xa_iconButton{width:36px;height:36px}.hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:none}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_panelIcon{display:inline}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_railFish{display:none}.hHd-Xa_collapsed .hHd-Xa_iconButton{color:var(--dsw-alias-label-primary)}.hHd-Xa_newSession{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;margin:0 2px 8px;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;display:flex;overflow:hidden}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}.hHd-Xa_collapsed .hHd-Xa_newSession{background:0 0;border-color:#0000;align-self:flex-start;gap:0;width:36px;height:36px;margin:0 0 12px;padding:0}.hHd-Xa_collapsed .hHd-Xa_newSession:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_newSessionLabel{white-space:nowrap;max-width:200px;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_newSessionLabel{max-width:0}.hHd-Xa_regionArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-sidebar-inline-padding));flex-direction:column;flex:1;padding-left:4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_regionArea{margin-left:0;margin-right:0;padding-left:0}.hHd-Xa_footArea{flex-direction:column;flex:none;display:flex}.hHd-Xa_settingsArea,.hHd-Xa_footerActions{flex:none;width:100%;min-width:0}.hHd-Xa_footerActions{display:flex}.hHd-Xa_collapsed .hHd-Xa_footArea{align-items:center}.hHd-Xa_collapsed .hHd-Xa_settingsArea,.hHd-Xa_collapsed .hHd-Xa_footerActions{justify-content:center;width:auto;display:flex}@media (prefers-reduced-motion:reduce){.hHd-Xa_wide,.hHd-Xa_fading>*,.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}"; -+ const css = ".hHd-Xa_root{--dsh-sidebar-inline-padding:12px;height:100%;padding:6px var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:14px;display:flex}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}.hHd-Xa_root.hHd-Xa_quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.hHd-Xa_fading>*{opacity:0;transition:opacity .15s var(--ds-ease-in-out)}.hHd-Xa_wide{animation:hHd-Xa_wide-in .2s var(--ds-ease-in-out)}@keyframes hHd-Xa_wide-in{0%{opacity:0}}.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_regionArea{animation:hHd-Xa_rail-in .15s var(--ds-ease-in-out) backwards}.hHd-Xa_railIn .hHd-Xa_footArea{animation:hHd-Xa_rail-fade-in .15s var(--ds-ease-in-out) backwards}@keyframes hHd-Xa_rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes hHd-Xa_rail-fade-in{0%{opacity:0}}.hHd-Xa_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:56px;margin-bottom:8px;padding:8px 2px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_logoRow{justify-content:flex-start;height:36px;margin-bottom:12px;padding:0}.hHd-Xa_brand{min-width:0;height:40px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:10px;flex:1;align-items:center;padding:3px 6px;display:inline-flex;overflow:hidden}.hHd-Xa_brand:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_brandLockup{min-width:0;align-items:center;gap:4px;display:inline-flex}.hHd-Xa_brandMark{width:34px;height:34px;flex:none;justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_brandWordmark{width:158px;height:24px;color:var(--dsw-alias-label-primary);flex:none;display:inline-flex;overflow:hidden}.hHd-Xa_brandWordmark>svg{max-width:none;flex:none;transform:translateX(-24px)}.hHd-Xa_iconButton{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_collapsed .hHd-Xa_iconButton{width:36px;height:36px}.hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:none}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_panelIcon{display:inline}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_railFish{display:none}.hHd-Xa_collapsed .hHd-Xa_iconButton{color:var(--dsw-alias-label-primary)}.hHd-Xa_newSession{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;margin:0 2px 8px;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;display:flex;overflow:hidden}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}.hHd-Xa_collapsed .hHd-Xa_newSession{background:0 0;border-color:#0000;align-self:flex-start;gap:0;width:36px;height:36px;margin:0 0 12px;padding:0}.hHd-Xa_collapsed .hHd-Xa_newSession:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_newSessionLabel{white-space:nowrap;max-width:200px;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_newSessionLabel{max-width:0}.hHd-Xa_regionArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-sidebar-inline-padding));flex-direction:column;flex:1;padding-left:4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_regionArea{margin-left:0;margin-right:0;padding-left:0}.hHd-Xa_footArea{flex-direction:column;flex:none;display:flex}.hHd-Xa_settingsArea,.hHd-Xa_footerActions{flex:none;width:100%;min-width:0}.hHd-Xa_footerActions{display:flex}.hHd-Xa_collapsed .hHd-Xa_footArea{align-items:center}.hHd-Xa_collapsed .hHd-Xa_settingsArea,.hHd-Xa_collapsed .hHd-Xa_footerActions{justify-content:center;width:auto;display:flex}@media (prefers-reduced-motion:reduce){.hHd-Xa_wide,.hHd-Xa_fading>*,.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}"; - const tagId = "@deepseek-ai/dsh-client-ui-sidebar/SidebarRoot.module.css"; - if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) { - const tag = document.createElement("style"); - tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-sidebar"; - tag.dataset.pluginCss = tagId; -- tag.textContent = css; -+ tag.textContent = css + ".hHd-Xa_root:not(.hHd-Xa_collapsed){padding-top:32px}" + (navigator.userAgent.includes("Macintosh") ? ".hHd-Xa_root.hHd-Xa_collapsed{padding:46px 22px 6px}" : ""); - document.head.appendChild(tag); - } - var SidebarRoot_module_css_default = { -+ "brandLockup": "hHd-Xa_brandLockup", -+ "brandMark": "hHd-Xa_brandMark", -+ "brandWordmark": "hHd-Xa_brandWordmark", -+ "railFish": "hHd-Xa_railFish", - "iconButton": "hHd-Xa_iconButton", - "settingsArea": "hHd-Xa_settingsArea", - "wide": "hHd-Xa_wide", -@@ -56,6 +60,51 @@ window.__ModuleLoader__.load({ - "newSession": "hHd-Xa_newSession" - }; - //#endregion -+ //#region lib/types/client/DshDesktopLogo.js -+ const DSH_DESKTOP_LIGHT_LOGO_URL = "/dsh-desktop-logo-light.png"; -+ const DSH_DESKTOP_DARK_LOGO_URL = "/dsh-desktop-logo-dark.png"; -+ function DshDesktopLogo({ height = 20, className }) { -+ return (0, react_jsx_runtime.jsxs)("svg", { -+ width: height * 1030 / 590, -+ height, -+ className, -+ viewBox: "150 330 1030 590", -+ fill: "none", -+ "aria-hidden": "true", -+ children: [(0, react_jsx_runtime.jsx)("style", { -+ children: ".dshDesktopLogoDark{display:none}body[data-ds-dark-theme] .dshDesktopLogoLight{display:none}body[data-ds-dark-theme] .dshDesktopLogoDark{display:block}" -+ }), (0, react_jsx_runtime.jsx)("image", { -+ className: "dshDesktopLogoLight", -+ href: DSH_DESKTOP_LIGHT_LOGO_URL, -+ x: 150, -+ y: 330, -+ width: 1030, -+ height: 590, -+ preserveAspectRatio: "xMidYMid meet" -+ }), (0, react_jsx_runtime.jsx)("image", { -+ className: "dshDesktopLogoDark", -+ href: DSH_DESKTOP_DARK_LOGO_URL, -+ x: 150, -+ y: 330, -+ width: 1030, -+ height: 590, -+ preserveAspectRatio: "xMidYMid meet" -+ })] -+ }); -+ } -+ function DshDesktopBrand() { -+ return (0, react_jsx_runtime.jsxs)("span", { -+ className: SidebarRoot_module_css_default.brandLockup, -+ children: [(0, react_jsx_runtime.jsx)("span", { -+ className: SidebarRoot_module_css_default.brandMark, -+ children: (0, react_jsx_runtime.jsx)(DshDesktopLogo, {}) -+ }), (0, react_jsx_runtime.jsx)("span", { -+ className: SidebarRoot_module_css_default.brandWordmark, -+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.BrandWordmark, {}) -+ })] -+ }); -+ } -+ //#endregion - //#region lib/types/client/SidebarRoot.js - /** - * Sidebar shell: column geometry only. Collapse is a slide plus crossfade: -@@ -138,6 +187,8 @@ window.__ModuleLoader__.load({ - }, [pointerInside]); - return (0, react_jsx_runtime.jsxs)("div", { - ref: column, -+ "data-dsh-sidebar-root": "", -+ "data-dsh-sidebar-wide": wide ? "true" : "false", - className: clsx(SidebarRoot_module_css_default.root, !wide && SidebarRoot_module_css_default.collapsed, !wide && everWide.current && SidebarRoot_module_css_default.railIn, collapsed && wide && SidebarRoot_module_css_default.fading, !pointerInside && SidebarRoot_module_css_default.quietBars), - style: wide ? { width: collapsed ? lastWideWidth.current : width } : void 0, - onPointerEnter: () => { -@@ -157,7 +208,7 @@ window.__ModuleLoader__.load({ - onClick: () => { - startSession(); - }, -- children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.BrandWordmark, {}) -+ children: (0, react_jsx_runtime.jsx)(DshDesktopBrand, {}) - }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, { - label: collapsed ? t("toggle.open") : t("toggle.collapse"), - delayMs: 500, -@@ -168,9 +219,9 @@ window.__ModuleLoader__.load({ - onClick: () => { - toggleSidebar(); - }, -- children: [!wide && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FishLogo, { -+ children: [!wide && (0, react_jsx_runtime.jsx)(DshDesktopLogo, { - className: SidebarRoot_module_css_default.railFish, -- size: 24 -+ height: 18 - }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPanelLeftOutline16, { - className: SidebarRoot_module_css_default.panelIcon, - size: wide ? 16 : 18 -@@ -205,6 +256,7 @@ window.__ModuleLoader__.load({ - }) - }), - (0, react_jsx_runtime.jsxs)("div", { -+ "data-dsh-sidebar-footer": "", - className: SidebarRoot_module_css_default.footArea, - children: [(0, react_jsx_runtime.jsx)("div", { - className: SidebarRoot_module_css_default.footerActions, diff --git a/patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.8.patch similarity index 95% rename from patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch rename to patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.8.patch index a107fc79..ddc11fa4 100644 --- a/patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch +++ b/patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.8.patch @@ -1,19 +1,20 @@ diff --git a/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js b/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js -index 11ee6c4..bf19e6c 100644 +index 0bb5994..5d1e4c0 100644 --- a/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js +++ b/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js -@@ -1,8 +1,8 @@ +@@ -1,9 +1,9 @@ import { Service } from "@deepseek-ai/cordis"; import z from "@deepseek-ai/schemastery"; import { randomUUID } from "node:crypto"; -import { mkdir, stat } from "node:fs/promises"; --import { dirname, extname } from "node:path"; +import { lstat, mkdir, mkdtemp, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises"; + import { homedir, release } from "node:os"; +-import { dirname, extname } from "node:path"; +import { dirname, extname, join, relative, resolve, sep } from "node:path"; import { installModelSelection } from "@deepseek-ai/dsh-agent"; - import { AttachmentError } from "@deepseek-ai/dsh-attachment"; + import { AttachmentError, admitEncodedImages } from "@deepseek-ai/dsh-attachment"; import { ReasoningEffortId, contentHasImage, createUserMessage, errorChain, freezeMessage } from "@deepseek-ai/dsh-llm"; -@@ -11,8 +11,8 @@ import { SessionQueryError } from "@deepseek-ai/dsh-session-query"; +@@ -12,8 +12,8 @@ import { SessionQueryError } from "@deepseek-ai/dsh-session-query"; import { SubagentError } from "@deepseek-ai/dsh-subagent"; import { isUserInvocable } from "@deepseek-ai/dsh-skill"; import { WorkspaceId, WorkspaceMoveInvalidError, WorkspaceOrderInvalidError, WorkspaceUnknownSessionError, workspaceDomainState, workspaceRecord } from "@deepseek-ai/dsh-workspace"; @@ -24,9 +25,9 @@ index 11ee6c4..bf19e6c 100644 import { GoalError } from "@deepseek-ai/dsh-goal"; import { SettingsConflictError, settingsNamespace } from "@deepseek-ai/dsh-settings"; import { credentialRef } from "@deepseek-ai/dsh-credentials"; -@@ -23,6 +23,110 @@ import { DirectoryPickerError } from "@deepseek-ai/dsh-host-directory-picker"; +@@ -23,6 +23,110 @@ import { UserQuestionError } from "@deepseek-ai/dsh-user-questions"; + import { DirectoryPickerError } from "@deepseek-ai/dsh-host-directory-picker"; import { API_REMOTE_FORWARDED_EVENTS, ApiRemoteSessionNotFound, ApiRemoteSubagentSessionOwnership, apiRemoteSubagentOwnershipError, createApiRemoteAgentResolver, hasApiRemoteSubagentOwner, inspectApiRemoteSession } from "@deepseek-ai/dsh-api-remotes"; - import { release } from "node:os"; import { runNativeCommand } from "@deepseek-ai/dsh-native-command"; +//#region lib/types/preset-archive.js +const PRESET_ARCHIVE_FORMAT = "dsh-preset"; @@ -135,7 +136,7 @@ index 11ee6c4..bf19e6c 100644 //#region lib/types/session-export.js /** * Host-side session-log download: streams one ZIP archive whose files are the -@@ -3150,7 +3254,13 @@ function createApiProxy(ctx, defaults) { +@@ -3126,7 +3230,13 @@ function createApiProxy(ctx, defaults) { })); }, async pickDirectory(request, signal) { @@ -150,7 +151,7 @@ index 11ee6c4..bf19e6c 100644 if (capability.kind !== "native") return err(request, { code: "directory-picker-unavailable", message: `host.pickDirectory needs the native capability; the composed picker serves "${capability.kind}"`, -@@ -3172,7 +3282,13 @@ function createApiProxy(ctx, defaults) { +@@ -3148,7 +3258,13 @@ function createApiProxy(ctx, defaults) { } }, async listDirectory(request, signal) { @@ -165,7 +166,7 @@ index 11ee6c4..bf19e6c 100644 if (capability.kind !== "browse") return err(request, { code: "directory-picker-unavailable", message: `host.listDirectory needs the browse capability; the composed picker serves "${capability.kind}"`, -@@ -3190,7 +3306,13 @@ function createApiProxy(ctx, defaults) { +@@ -3166,7 +3282,13 @@ function createApiProxy(ctx, defaults) { } }, async createDirectory(request) { @@ -180,7 +181,7 @@ index 11ee6c4..bf19e6c 100644 if (capability.kind !== "browse") return err(request, { code: "directory-picker-unavailable", message: `host.createDirectory needs the browse capability; the composed picker serves "${capability.kind}"`, -@@ -3244,6 +3366,127 @@ function createApiProxy(ctx, defaults) { +@@ -3220,6 +3342,127 @@ function createApiProxy(ctx, defaults) { } }, agentPresets: { @@ -308,7 +309,7 @@ index 11ee6c4..bf19e6c 100644 async list(request) { const presets = ctx.get("agentPresets"); if (presets === void 0) return ok(request, { -@@ -4932,6 +5175,34 @@ function toFetchHandler(api) { +@@ -4909,6 +5152,34 @@ function toFetchHandler(api) { rpcId: RpcId(randomUUID()), payload: {} }, req.signal)); @@ -343,7 +344,7 @@ index 11ee6c4..bf19e6c 100644 if (path === "/api/session.export" && (req.method === "GET" || req.method === "HEAD")) { const parsed = sessionLogQuerySchema.safeParse(Object.fromEntries(url.searchParams)); if (!parsed.success) return new Response("missing or invalid sessionId query parameter", { status: 400 }); -@@ -5531,7 +5802,6 @@ var ApiProxyService = class extends Service { +@@ -5508,7 +5779,6 @@ var ApiProxyService = class extends Service { "agentDefaultModel", "agents", "attachments", diff --git a/src/main/runtime/harness-runtime.ts b/src/main/runtime/harness-runtime.ts index 47067dca..e97803d1 100644 --- a/src/main/runtime/harness-runtime.ts +++ b/src/main/runtime/harness-runtime.ts @@ -25,6 +25,9 @@ export function buildHarnessArguments(port: number, patchPath?: string): string[ return [ 'web', ...(patchPath ? ['--patch', patchPath] : []), + // The desktop window is the only intended surface. Without this, Harness + // hands the same loopback URL to the system browser on every launch. + '--no-open', '--host', '127.0.0.1', '--port', diff --git a/src/preload/index.ts b/src/preload/index.ts index 06e3f71e..ccc46b62 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -8,7 +8,6 @@ import { } from './update-view' const ROOT_ID = 'dsh-desktop-update-root' -const MOBILE_BUTTON_ID = 'dsh-desktop-mobile-button' const locale: UpdateLocale = navigator.language.toLowerCase().startsWith('zh') ? 'zh' : 'en' let host: HTMLDivElement | undefined @@ -18,81 +17,21 @@ let dismissedVersion: string | null = null let dismissedTransientPhase: UpdateStatus['phase'] | null = null let installing = false let receivedStatusEvent = false -let phoneConnected = false -let mobileStatusTimer: number | undefined -const mobileButtonObserver = new MutationObserver(mountMobileButton) contextBridge.exposeInMainWorld('dshDesktopDirectoryPicker', { pick: (): Promise => ipcRenderer.invoke('directory-picker:open') }) -function mountMobileButton(): void { - let style = document.getElementById(`${MOBILE_BUTTON_ID}-style`) - if (!style) { - style = document.createElement('style') - style.id = `${MOBILE_BUTTON_ID}-style` - style.textContent = mobileButtonStyles - document.head.appendChild(style) - } - const footer = document.querySelector('[data-dsh-sidebar-footer]') - if (!footer) return - let button = document.getElementById(MOBILE_BUTTON_ID) as HTMLButtonElement | null - if (!button) { - button = document.createElement('button') - button.id = MOBILE_BUTTON_ID - button.type = 'button' - button.innerHTML = `${phoneIcon}` - button.addEventListener('click', () => { - void ipcRenderer.invoke('mobile:open-pairing').catch((error: unknown) => { - console.error('[mobile] unable to open pairing window', error) - }) - }) - } - if (button.parentElement !== footer) footer.appendChild(button) - renderMobileButton() -} - -function renderMobileButton(): void { - const button = document.getElementById(MOBILE_BUTTON_ID) as HTMLButtonElement | null - const root = document.querySelector('[data-dsh-sidebar-root]') - if (!button || !root) return - const wide = root.dataset.dshSidebarWide === 'true' - button.hidden = !wide && !phoneConnected - button.classList.toggle('is-connected', phoneConnected) - const label = phoneConnected - ? locale === 'zh' ? '管理手机连接' : 'Manage phone connection' - : locale === 'zh' ? '连接手机' : 'Connect phone' - button.setAttribute('aria-label', label) - button.title = label -} - -async function refreshMobileStatus(): Promise { - try { - const status = (await ipcRenderer.invoke('mobile:status')) as { connected?: boolean } - phoneConnected = status.connected === true - mountMobileButton() - } catch (error) { - console.warn('[mobile] unable to read connection status', error) - } -} - function initializeUi(): void { mount() - mountMobileButton() - mobileButtonObserver.observe(document.documentElement, { - childList: true, - subtree: true, - attributes: true, - attributeFilter: ['data-dsh-sidebar-wide'] - }) - void refreshMobileStatus() - mobileStatusTimer ??= window.setInterval(() => void refreshMobileStatus(), 1000) } contextBridge.exposeInMainWorld( 'dshDesktop', Object.freeze({ - restartHarness: (): Promise<{ ok: boolean }> => ipcRenderer.invoke('harness:restart') + restartHarness: (): Promise<{ ok: boolean }> => ipcRenderer.invoke('harness:restart'), + openPhonePairing: (): Promise => ipcRenderer.invoke('mobile:open-pairing'), + phoneStatus: (): Promise<{ connected?: boolean }> => ipcRenderer.invoke('mobile:status') }) ) @@ -357,21 +296,6 @@ const styles = ` } ` -const phoneIcon = `` - -const mobileButtonStyles = ` - [data-dsh-sidebar-footer] { position: relative; } - [data-dsh-sidebar-root][data-dsh-sidebar-wide="true"] [data-dsh-sidebar-footer] > [class*="settingsArea"] { padding-right: 38px; } - #${MOBILE_BUTTON_ID} { appearance:none; position:relative; width:32px; height:32px; color:var(--dsw-alias-label-secondary,#73777f); background:transparent; border:0; border-radius:9px; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; } - [data-dsh-sidebar-root][data-dsh-sidebar-wide="true"] #${MOBILE_BUTTON_ID} { position:absolute; right:0; top:50%; transform:translateY(-50%); } - [data-dsh-sidebar-root][data-dsh-sidebar-wide="false"] #${MOBILE_BUTTON_ID} { margin-top:5px; } - #${MOBILE_BUTTON_ID}:hover { color:var(--dsw-alias-label-primary,#202124); background:var(--dsw-alias-interactive-bg-hover,rgba(32,33,36,.08)); } - #${MOBILE_BUTTON_ID}:focus-visible { outline:2px solid #4d6bfe; outline-offset:1px; } - #${MOBILE_BUTTON_ID}[hidden] { display:none; } - #${MOBILE_BUTTON_ID} > span { position:absolute; top:4px; right:4px; width:7px; height:7px; border:1.5px solid var(--dsw-specific-sidebar-fill,#fff); border-radius:50%; background:#4da66d; opacity:0; } - #${MOBILE_BUTTON_ID}.is-connected > span { opacity:1; } -` - ipcRenderer.on('updates:status-changed', (_event, status: UpdateStatus) => { receivedStatusEvent = true applyStatus(status) diff --git a/test/branding-patch.test.ts b/test/branding-patch.test.ts index 68b2eaf4..ca2429df 100644 --- a/test/branding-patch.test.ts +++ b/test/branding-patch.test.ts @@ -1,8 +1,9 @@ import { readFile } from 'node:fs/promises' import path from 'node:path' import { describe, expect, it } from 'vitest' +import { hasPatch, patchPath, projectRoot } from './patch-path' -const projectRoot = path.resolve(import.meta.dirname, '..') +const shellClient = path.join(projectRoot, 'packages', 'dsh-desktop-shell', 'client.js') describe('DSH Desktop sidebar branding', () => { it('matches the native window surface to the initial Harness theme', async () => { @@ -23,34 +24,46 @@ describe('DSH Desktop sidebar branding', () => { expect(main).toContain("height: '24px'") }) - it('pairs the DSH logo with the original Harness wordmark in the expanded sidebar', async () => { - const patch = await readFile( - path.join(projectRoot, 'patches', '@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch'), + it('pairs the DSH logo with the original Harness wordmark through the sidebar slots', async () => { + const client = await readFile(shellClient, 'utf8') + + expect(client).toContain("ctx.slots.register({ name: 'sidebar.brand.mark'") + expect(client).toContain("ctx.slots.register({ name: 'sidebar.brand.name'") + expect(client).toContain('/dsh-desktop-logo-light.png') + expect(client).toContain('/dsh-desktop-logo-dark.png') + expect(client).toContain('primitives.BrandWordmark') + expect(client).toContain('body[data-ds-dark-theme] .dshDesktopLogoLight') + expect(client).toContain('body[data-ds-dark-theme] .dshDesktopLogoDark') + }) + + it('keeps the desktop shell out of ui-sidebar so upgrades carry no patch', async () => { + const composition = await readFile( + path.join(projectRoot, 'build', 'dsh-desktop.patch.yml'), 'utf8' ) + const manifest = JSON.parse( + await readFile(path.join(projectRoot, 'package.json'), 'utf8') + ) as { dependencies: Record } - expect(patch).toContain('DshDesktopLogo') - expect(patch).toContain('DshDesktopBrand') - expect(patch).toContain('BrandWordmark') - expect(patch).toContain('/dsh-desktop-logo-light.png') - expect(patch).toContain('/dsh-desktop-logo-dark.png') - expect(patch).toContain('brandWordmark') - expect(patch).toContain('gap:4px') - expect(patch).toContain('transform:translateX(-24px)') - expect(patch).not.toContain('children: "DSH Desktop"') - expect(patch).toContain('height = 20') - expect(patch).toContain('height: 18') - expect(patch).toContain('.hHd-Xa_brand:hover') - expect(patch).toContain('padding-top:32px') - expect(patch).toContain('navigator.userAgent.includes("Macintosh")') - expect(patch).toContain('.hHd-Xa_root.hHd-Xa_collapsed{padding:46px 22px 6px}') - expect(patch).toContain('body[data-ds-dark-theme] .dshDesktopLogoLight') - expect(patch).toContain('body[data-ds-dark-theme] .dshDesktopLogoDark') + expect(composition).toContain('name: dsh-desktop-shell') + expect(manifest.dependencies['dsh-desktop-shell']).toBe('file:packages/dsh-desktop-shell') + expect(hasPatch('@deepseek-ai/dsh-client-ui-sidebar')).toBe(false) + }) + + it('registers the shell plugin where the profile link farm can find it', async () => { + // Harness builds $DSH_HOME/profiles/node_modules by walking the *dsh* + // package manifest, not this project's. A local plugin that is only a + // dependency here resolves during tests and fails at runtime with + // ERR_MODULE_NOT_FOUND, so it has to be named in that manifest too. + const dshPatch = await readFile(patchPath('@deepseek-ai/dsh'), 'utf8') + + expect(dshPatch).toContain('+ "dsh-desktop-shell": "0.1.0",') + expect(dshPatch).toContain('+ "dsh-desktop-market-installer": "0.1.0",') }) it('uses an 80px macOS rail that clears the traffic lights', async () => { const patch = await readFile( - path.join(projectRoot, 'patches', '@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.7.patch'), + patchPath('@deepseek-ai/dsh-client-ui-layout'), 'utf8' ) @@ -59,19 +72,18 @@ describe('DSH Desktop sidebar branding', () => { }) it('provides a sidebar phone entry that follows expanded and connected state', async () => { - const patch = await readFile( - path.join(projectRoot, 'patches', '@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.7.patch'), - 'utf8' - ) + const client = await readFile(shellClient, 'utf8') const preload = await readFile(path.join(projectRoot, 'src', 'preload', 'index.ts'), 'utf8') const main = await readFile(path.join(projectRoot, 'src', 'main', 'index.ts'), 'utf8') - expect(patch).toContain('data-dsh-sidebar-root') - expect(patch).toContain('data-dsh-sidebar-wide') - expect(patch).toContain('data-dsh-sidebar-footer') - expect(preload).toContain("button.hidden = !wide && !phoneConnected") - expect(preload).toContain("button.classList.toggle('is-connected', phoneConnected)") - expect(preload).toContain("ipcRenderer.invoke('mobile:open-pairing')") + expect(client).toContain("name: 'sidebar.footer.action'") + expect(client).toContain('if (!wide && !connected) return null') + expect(client).toContain('bridge.openPhonePairing()') + expect(client).toContain('bridge.phoneStatus()') + expect(preload).toContain("openPhonePairing: (): Promise => ipcRenderer.invoke('mobile:open-pairing')") + expect(preload).toContain("phoneStatus: (): Promise<{ connected?: boolean }> => ipcRenderer.invoke('mobile:status')") + expect(preload).not.toContain('data-dsh-sidebar-root') + expect(preload).not.toContain('MutationObserver') expect(main).toContain("ipcMain.handle('mobile:open-pairing'") expect(main).toContain("ipcMain.handle('mobile:status'") }) diff --git a/test/directory-picker.test.ts b/test/directory-picker.test.ts index 6aad42cc..a545f5c4 100644 --- a/test/directory-picker.test.ts +++ b/test/directory-picker.test.ts @@ -1,5 +1,6 @@ import { readFile } from 'node:fs/promises' import { describe, expect, it } from 'vitest' +import { patchPath } from './patch-path' describe('desktop Electron directory picker', () => { it('exposes a narrow preload bridge and handles it in the main process', async () => { @@ -34,7 +35,7 @@ describe('desktop Electron directory picker', () => { it('captures the client bridge as a reproducible dependency patch', async () => { const dependencyPatch = await readFile( - 'patches/@deepseek-ai+dsh-client-ui-directory-picker-native+0.1.0-rc.7.patch', + patchPath('@deepseek-ai/dsh-client-ui-directory-picker-native'), 'utf8' ) @@ -44,7 +45,7 @@ describe('desktop Electron directory picker', () => { it('keeps the Host API proxy active when the legacy picker service is absent', async () => { const apiProxyPatch = await readFile( - 'patches/@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch', + patchPath('@deepseek-ai/dsh-host-apiproxy'), 'utf8' ) diff --git a/test/local-path-links.test.ts b/test/local-path-links.test.ts index a9650de5..03f789a6 100644 --- a/test/local-path-links.test.ts +++ b/test/local-path-links.test.ts @@ -1,17 +1,11 @@ import { readFile } from 'node:fs/promises' -import path from 'node:path' import { describe, expect, it } from 'vitest' - -const projectRoot = path.resolve(import.meta.dirname, '..') +import { patchPath, projectRoot } from './patch-path' describe('assistant local path links', () => { it('links Codex-style path references even when they are not turn deliverables', async () => { const patch = await readFile( - path.join( - projectRoot, - 'patches', - '@deepseek-ai+dsh-client-ui-deliverables+0.1.0-rc.7.patch' - ), + patchPath('@deepseek-ai/dsh-client-ui-deliverables'), 'utf8' ) diff --git a/test/model-picker-patch.test.ts b/test/model-picker-patch.test.ts index 9a0b2b66..8f627356 100644 --- a/test/model-picker-patch.test.ts +++ b/test/model-picker-patch.test.ts @@ -1,34 +1,51 @@ import { readFile } from 'node:fs/promises' import path from 'node:path' import { describe, expect, it } from 'vitest' +import { hasPatch, patchPath, projectRoot } from './patch-path' -const projectRoot = path.resolve(import.meta.dirname, '..') -const patchPath = path.join( +const settingsModelsClient = path.join( projectRoot, - 'patches', - '@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.7.patch' + 'node_modules', + '@deepseek-ai', + 'dsh-client-ui-settings-models', + 'lib', + 'client.js' ) +/** + * Harness took the select-all toggle upstream in 0.1.0-rc.8, so the desktop + * patch no longer carries it. Assert against the composed package instead: the + * behavior still has to be there, and the patch still has to stay out of it. + */ describe('DSH Desktop available-model picker', () => { - it('ships one state-driven select-all toggle in the patch', async () => { - const patch = await readFile(patchPath, 'utf8') + it('ships one state-driven select-all toggle', async () => { + const client = await readFile(settingsModelsClient, 'utf8') - expect(patch).toContain('const allCandidatesPicked =') - expect(patch).toContain( - 'candidates.every((candidate) => picked.has(candidate.id))' - ) - expect(patch).toContain( + expect(client).toContain('const allCandidatesPicked =') + expect(client).toContain('activeCandidates.every((candidate) => picked.has(candidate.id))') + expect(client).toContain( 'children: t(allCandidatesPicked ? "fetchDeselectAll" : "fetchSelectAll")' ) - expect(patch).toContain('new Set(candidates.map((candidate) => candidate.id))') + expect(client).toContain('const toggleAllCandidates =') }) it('includes English and Chinese copy for both toggle states', async () => { - const patch = await readFile(patchPath, 'utf8') + const client = await readFile(settingsModelsClient, 'utf8') + + expect(client).toContain('fetchSelectAll: "Select all"') + expect(client).toContain('fetchDeselectAll: "Deselect all"') + expect(client).toContain('fetchSelectAll: "全选"') + expect(client).toContain('fetchDeselectAll: "取消全选"') + }) + + it('leaves the toggle to Harness rather than re-patching it', async () => { + expect(hasPatch('@deepseek-ai/dsh-client-ui-settings-models')).toBe(true) + const patch = await readFile( + patchPath('@deepseek-ai/dsh-client-ui-settings-models'), + 'utf8' + ) - expect(patch).toContain('fetchSelectAll: "Select all"') - expect(patch).toContain('fetchDeselectAll: "Deselect all"') - expect(patch).toContain('fetchSelectAll: "全选"') - expect(patch).toContain('fetchDeselectAll: "取消全选"') + expect(patch).not.toContain('const allCandidatesPicked =') + expect(patch).not.toContain('fetchSelectAll: "Select all"') }) }) diff --git a/test/onboarding-patch.test.ts b/test/onboarding-patch.test.ts index 59a423d9..c0b4b126 100644 --- a/test/onboarding-patch.test.ts +++ b/test/onboarding-patch.test.ts @@ -1,6 +1,7 @@ import { readFile } from 'node:fs/promises' import { getBuiltinModels } from '@earendil-works/pi-ai/providers/all' import { describe, expect, it } from 'vitest' +import { patchPath } from './patch-path' const PI_AI_ONBOARDING_PROVIDERS = [ 'openai', @@ -23,7 +24,7 @@ describe('desktop provider onboarding patch', () => { it('is captured as a reproducible dependency patch', async () => { const [patch, installed] = await Promise.all([ - readFile('patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.0-rc.7.patch', 'utf8'), + readFile(patchPath('@deepseek-ai/dsh-client-ui-settings-models'), 'utf8'), readFile('node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js', 'utf8') ]) expect(patch).toContain('ONBOARDING_PROVIDERS') diff --git a/test/patch-path.ts b/test/patch-path.ts new file mode 100644 index 00000000..796dbf58 --- /dev/null +++ b/test/patch-path.ts @@ -0,0 +1,35 @@ +import { readdirSync } from 'node:fs' +import path from 'node:path' + +export const projectRoot = path.resolve(import.meta.dirname, '..') + +const patchesDir = path.join(projectRoot, 'patches') + +/** + * Patch files are named after the exact version they were captured against, so + * every Harness upgrade renames all of them. Most of the patched packages are + * transitive dependencies of `@deepseek-ai/dsh` and carry no pin of their own, + * so resolve by package name and let the version fall where it may — otherwise + * a version bump turns into a wall of unrelated test failures. + */ +export function patchPath(packageName: string): string { + const prefix = `${packageName.replace('/', '+')}+` + const matches = readdirSync(patchesDir).filter( + (name) => name.startsWith(prefix) && name.endsWith('.patch') + ) + const [only] = matches + if (only === undefined || matches.length !== 1) { + throw new Error( + `expected exactly one patch for ${packageName}, found ${matches.length}` + ) + } + return path.join(patchesDir, only) +} + +/** Whether the project still carries any patch against `packageName`. */ +export function hasPatch(packageName: string): boolean { + const prefix = `${packageName.replace('/', '+')}+` + return readdirSync(patchesDir).some( + (name) => name.startsWith(prefix) && name.endsWith('.patch') + ) +} diff --git a/test/preset-transfer-patch.test.ts b/test/preset-transfer-patch.test.ts index 6444d7db..dc9248e4 100644 --- a/test/preset-transfer-patch.test.ts +++ b/test/preset-transfer-patch.test.ts @@ -2,8 +2,7 @@ import { readFile } from 'node:fs/promises' import path from 'node:path' import { describe, expect, it, vi } from 'vitest' import { toFetchHandler } from '@deepseek-ai/dsh-host-apiproxy' - -const projectRoot = path.resolve(import.meta.dirname, '..') +import { patchPath, projectRoot } from './patch-path' describe('agent preset package transfer', () => { it('routes binary export and two-phase import requests outside the JSON RPC carrier', async () => { @@ -58,11 +57,7 @@ describe('agent preset package transfer', () => { it('keeps the archive boundary strict and installs through an atomic validated directory move', async () => { const patch = await readFile( - path.join( - projectRoot, - 'patches', - '@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch' - ), + patchPath('@deepseek-ai/dsh-host-apiproxy'), 'utf8' ) @@ -82,11 +77,7 @@ describe('agent preset package transfer', () => { it('adds import preview, conflict rename, trust warning, and custom-card export controls', async () => { const patch = await readFile( - path.join( - projectRoot, - 'patches', - '@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch' - ), + patchPath('@deepseek-ai/dsh-client-ui-agent-preset'), 'utf8' ) @@ -109,11 +100,7 @@ describe('agent preset package transfer', () => { it('keeps a large mode roster searchable, grouped, compact, and connected to Awesome Presets', async () => { const patch = await readFile( - path.join( - projectRoot, - 'patches', - '@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch' - ), + patchPath('@deepseek-ai/dsh-client-ui-agent-preset'), 'utf8' ) @@ -141,11 +128,7 @@ describe('agent preset package transfer', () => { 'utf8' ) const hostPatch = await readFile( - path.join( - projectRoot, - 'patches', - '@deepseek-ai+dsh-host-apiproxy+0.1.0-rc.7.patch' - ), + patchPath('@deepseek-ai/dsh-host-apiproxy'), 'utf8' ) diff --git a/test/query-rail-patch.test.ts b/test/query-rail-patch.test.ts index 6c0cee67..ff6cffe5 100644 --- a/test/query-rail-patch.test.ts +++ b/test/query-rail-patch.test.ts @@ -1,17 +1,12 @@ import { readFile } from 'node:fs/promises' -import path from 'node:path' import { describe, expect, it } from 'vitest' +import { patchPath } from './patch-path' -const projectRoot = path.resolve(import.meta.dirname, '..') -const patchPath = path.join( - projectRoot, - 'patches', - '@deepseek-ai+dsh-client-ui-conversation+0.1.0-rc.7.patch' -) +const conversationPatch = patchPath('@deepseek-ai/dsh-client-ui-conversation') describe('conversation Query navigation rail', () => { it('builds one navigation marker for every durable user query', async () => { - const patch = await readFile(patchPath, 'utf8') + const patch = await readFile(conversationPatch, 'utf8') expect(patch).toContain('function QueryRail') expect(patch).toContain('node?.kind !== "user" && node?.kind !== "steering"') @@ -22,7 +17,7 @@ describe('conversation Query navigation rail', () => { }) it('keeps the rail independently scrollable and follows the active query', async () => { - const patch = await readFile(patchPath, 'utf8') + const patch = await readFile(conversationPatch, 'utf8') expect(patch).toContain('overflow-y:auto') expect(patch).toContain('overscroll-behavior-y:contain') diff --git a/test/release.test.ts b/test/release.test.ts index 98ce71cf..dee18159 100644 --- a/test/release.test.ts +++ b/test/release.test.ts @@ -30,14 +30,22 @@ describe('GitHub release contract', () => { packages: Record } + // A lock location is a path, so nested installs read as + // `node_modules//node_modules/`. Only the segment after the + // last `node_modules/` names the package: without that, a third-party peer + // that npm nested under a DSH package (rc.8 gives ui-trajectory its own + // React 19) reads as a DSH package and trips this guard. + const packageNameOf = (location: string): string => + location.slice(location.lastIndexOf('node_modules/') + 'node_modules/'.length) + const peerOnlyRuntimePackages = Object.entries(packageLock.packages) .filter( ([location, metadata]) => - location.startsWith('node_modules/@deepseek-ai/') && + packageNameOf(location).startsWith('@deepseek-ai/') && metadata.peer === true && metadata.dev !== true ) - .map(([location]) => location.replace('node_modules/', '')) + .map(([location]) => packageNameOf(location)) expect(peerOnlyRuntimePackages).toEqual([]) }) diff --git a/test/runtime.test.ts b/test/runtime.test.ts index 563dcab0..a5e290d1 100644 --- a/test/runtime.test.ts +++ b/test/runtime.test.ts @@ -16,6 +16,7 @@ describe('Harness launch contract', () => { it('binds the web server to a random loopback port', () => { expect(buildHarnessArguments(43127)).toEqual([ 'web', + '--no-open', '--host', '127.0.0.1', '--port', @@ -23,11 +24,16 @@ describe('Harness launch contract', () => { ]) }) + it('keeps Harness from handing the loopback URL to the system browser', () => { + expect(buildHarnessArguments(43127)).toContain('--no-open') + }) + it('applies the desktop composition patch before web arguments', () => { expect(buildHarnessArguments(43127, 'C:\\app\\dsh-desktop.patch.yml')).toEqual([ 'web', '--patch', 'C:\\app\\dsh-desktop.patch.yml', + '--no-open', '--host', '127.0.0.1', '--port', @@ -75,6 +81,7 @@ describe('Harness launch contract', () => { 'web', '--patch', 'C:\\app\\dsh-desktop.patch.yml', + '--no-open', '--host', '127.0.0.1', '--port', From d7db00d782e5c87b42b886a932f9b8a37d4373a1 Mon Sep 17 00:00:00 2001 From: yaojin3616 Date: Thu, 20 Aug 2026 13:40:21 +0800 Subject: [PATCH 2/6] fix(recovery): identify generic rc.8 slot conflicts --- src/main/index.ts | 65 +++++----- src/main/plugin-recovery-detection.ts | 65 ++++++++++ src/main/runtime/harness-runtime.ts | 11 +- src/main/state/plugin-recovery.ts | 81 ++++++++++++- test/branding-patch.test.ts | 3 +- test/plugin-recovery-detection.test.ts | 161 +++++++++++++++++++++++++ test/provider-error-patch.test.ts | 18 +-- test/runtime.test.ts | 10 ++ 8 files changed, 368 insertions(+), 46 deletions(-) create mode 100644 src/main/plugin-recovery-detection.ts create mode 100644 test/plugin-recovery-detection.test.ts diff --git a/src/main/index.ts b/src/main/index.ts index 2e241123..ed6917f4 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -13,20 +13,17 @@ import { type IpcMainInvokeEvent, type MessageBoxOptions } from 'electron' -import { - extractDuplicateLoaderEntryId, - extractFailureCause, - extractPluginFailureReferences, - extractSlotConflictName, - HarnessRuntime -} from './runtime/harness-runtime' +import { extractFailureCause, HarnessRuntime } from './runtime/harness-runtime' import { removeProfilePluginWithDsh } from './runtime/profile-plugin-command' import { LanMobileBridge } from './mobile/lan-mobile-bridge' +import { + detectPluginRecovery, + PLUGIN_RECOVERY_EVIDENCE_TIMEOUT_MS +} from './plugin-recovery-detection' import { secureWindow } from './security' import { ensureLaunchRoot } from './state/launch-root' import { resetPluginProfile, - resolveProfileRecoveryPlugins, uninstallPluginFromProfile } from './state/plugin-recovery' import { isAbortedNavigationError, shouldLoadHarnessUrl } from './window-navigation' @@ -68,6 +65,15 @@ let rendererPluginFailureLogs: string[] = [] let pluginRecoveryRemovedPlugins: string[] = [] let pluginRecoveryResetTimer: ReturnType | undefined +function appendRendererPluginFailureLog(message: string): void { + const trimmed = message.trim() + if (!trimmed) return + const logLine = `[stderr] ${trimmed}` + if (rendererPluginFailureLogs.at(-1) === logLine) return + rendererPluginFailureLogs.push(logLine) + rendererPluginFailureLogs = rendererPluginFailureLogs.slice(-50) +} + function cancelPluginRecoverySessionReset(): void { if (pluginRecoveryResetTimer) clearTimeout(pluginRecoveryResetTimer) pluginRecoveryResetTimer = undefined @@ -350,10 +356,7 @@ function createWindow(): BrowserWindow { if (details.level !== 'error') return const sourceUrl = details.sourceId || window.webContents.getURL() if (!sourceUrl.startsWith('http://127.0.0.1:')) return - const message = details.message.trim() - if (!message) return - rendererPluginFailureLogs.push(`[stderr] ${message}`) - rendererPluginFailureLogs = rendererPluginFailureLogs.slice(-50) + appendRendererPluginFailureLog(details.message) }) installPluginRecoveryNavigation(window) secureWindow(window) @@ -580,6 +583,7 @@ function showUnexpectedError(error: unknown): void { async function showPluginRecovery(options?: { message?: string logs?: readonly string[] + followRendererLogs?: boolean }): Promise { if (failureRecoveryVisible || quitting) return failureRecoveryVisible = true @@ -589,33 +593,36 @@ async function showPluginRecovery(options?: { cancelPluginRecoverySessionReset() const removedPlugins = pluginRecoveryRemovedPlugins let notice: string | undefined + let waitForRendererEvidence = options?.followRendererLogs === true try { while (!quitting) { - let snapshot = runtime.snapshot() - const logs = options?.logs ?? snapshot.logs + const snapshot = runtime.snapshot() const message = options?.message ?? snapshot.message - const offendingPlugins = await resolveProfileRecoveryPlugins( + const detection = await detectPluginRecovery({ dshHome, - extractPluginFailureReferences(logs), - extractDuplicateLoaderEntryId(logs), - extractSlotConflictName(logs), - removedPlugins - ) + initialLogs: options?.logs ?? snapshot.logs, + readLatestLogs: options?.followRendererLogs ? () => rendererPluginFailureLogs : undefined, + excludedPlugins: removedPlugins, + slotProviderNodeModulesPaths: [join(app.getAppPath(), 'node_modules')], + timeoutMs: waitForRendererEvidence ? PLUGIN_RECOVERY_EVIDENCE_TIMEOUT_MS : 0 + }) + waitForRendererEvidence = false const action = await waitForPluginRecoveryAction({ snapshot: { ...snapshot, - message: message || snapshot.message + message: message || snapshot.message, + logs: detection.logs }, - plugins: offendingPlugins, + plugins: detection.plugins, removedPlugins, notice }) notice = undefined - if (action === 'uninstall' && offendingPlugins.length > 0) { + if (action === 'uninstall' && detection.plugins.length > 0) { const failedPlugins: string[] = [] - for (const plugin of offendingPlugins) { + for (const plugin of detection.plugins) { const removed = await uninstallPluginFromProfile(dshHome, plugin, async (pluginName) => { const result = await removeProfilePluginWithDsh( { @@ -641,7 +648,7 @@ async function showPluginRecovery(options?: { } } - if (failedPlugins.length === offendingPlugins.length) { + if (failedPlugins.length === detection.plugins.length) { notice = isChinese ? '未能修改插件配置。请打开 Harness 日志查看详情,或选择其他恢复方式。' : 'The plugin profile could not be updated. Open the Harness log for details or choose another recovery option.' @@ -886,12 +893,10 @@ async function bootstrap(): Promise { ipcMain.handle('harness:open-recovery', async (event, frontendErrorMessage?: unknown) => { assertTrustedMainWindowEvent(event) const message = typeof frontendErrorMessage === 'string' ? frontendErrorMessage : undefined - const logs = [ - ...rendererPluginFailureLogs, - ...(message ? [`[stderr] ${message}`] : []) - ] + if (message) appendRendererPluginFailureLog(message) + const logs = [...rendererPluginFailureLogs] appendRendererPluginRecoveryLog(logs) - void showPluginRecovery({ message, logs }) + void showPluginRecovery({ message, logs, followRendererLogs: true }) return { ok: true } }) ipcMain.removeHandler('recovery:action') diff --git a/src/main/plugin-recovery-detection.ts b/src/main/plugin-recovery-detection.ts new file mode 100644 index 00000000..0bd5cf9e --- /dev/null +++ b/src/main/plugin-recovery-detection.ts @@ -0,0 +1,65 @@ +import { setTimeout as delay } from 'node:timers/promises' +import { + extractDuplicateLoaderEntryId, + extractPluginFailureReferences, + extractSlotConflictName +} from './runtime/harness-runtime' +import { resolveProfileRecoveryPlugins } from './state/plugin-recovery' + +export const PLUGIN_RECOVERY_EVIDENCE_TIMEOUT_MS = 1_500 +export const PLUGIN_RECOVERY_EVIDENCE_POLL_MS = 100 + +export interface PluginRecoveryDetection { + logs: string[] + plugins: string[] +} + +interface DetectPluginRecoveryOptions { + dshHome: string + initialLogs: readonly string[] + readLatestLogs?: () => readonly string[] + excludedPlugins?: readonly string[] + slotProviderNodeModulesPaths?: readonly string[] + timeoutMs?: number + pollIntervalMs?: number + now?: () => number + wait?: (milliseconds: number) => Promise +} + +function mergeLogs(...groups: readonly (readonly string[])[]): string[] { + return [...new Set(groups.flat())] +} + +/** + * Resolve a recovery target from the evidence currently available. Frontend + * failures can publish their detailed console error shortly after the boot + * failure DOM appears, so unresolved detections briefly poll the live renderer + * log buffer before falling back to the generic recovery page. + */ +export async function detectPluginRecovery( + options: DetectPluginRecoveryOptions +): Promise { + const timeoutMs = Math.max(0, options.timeoutMs ?? 0) + const pollIntervalMs = Math.max(1, options.pollIntervalMs ?? PLUGIN_RECOVERY_EVIDENCE_POLL_MS) + const now = options.now ?? Date.now + const wait = options.wait ?? ((milliseconds: number) => delay(milliseconds)) + const deadline = now() + timeoutMs + + while (true) { + const logs = mergeLogs(options.initialLogs, options.readLatestLogs?.() ?? []) + const plugins = await resolveProfileRecoveryPlugins( + options.dshHome, + extractPluginFailureReferences(logs), + extractDuplicateLoaderEntryId(logs), + extractSlotConflictName(logs), + options.excludedPlugins, + options.slotProviderNodeModulesPaths + ) + + if (plugins.length > 0 || now() >= deadline) { + return { logs, plugins } + } + + await wait(Math.min(pollIntervalMs, Math.max(1, deadline - now()))) + } +} diff --git a/src/main/runtime/harness-runtime.ts b/src/main/runtime/harness-runtime.ts index 5b879d66..9e4b7375 100644 --- a/src/main/runtime/harness-runtime.ts +++ b/src/main/runtime/harness-runtime.ts @@ -408,8 +408,15 @@ export function extractSlotConflictName( ): string | undefined { for (const line of latestHarnessAttemptLogs(logLines)) { if (!line.startsWith('[stderr] ')) continue - const match = line.slice(8).match(/single slot\s+["']([^"']+)["']\s+already has a registration/i) - if (match?.[1]) return match[1].trim() + const text = line.slice(8) + const loaderMatch = text.match( + /single slot\s+["']([^"']+)["']\s+already has a registration/i + ) + if (loaderMatch?.[1]) return loaderMatch[1].trim() + const rendererMatch = text.match( + /UI slot\s+["']([^"']+)["']\s+has duplicate registrations/i + ) + if (rendererMatch?.[1]) return rendererMatch[1].trim() } return undefined } diff --git a/src/main/state/plugin-recovery.ts b/src/main/state/plugin-recovery.ts index f9e13247..1124397f 100644 --- a/src/main/state/plugin-recovery.ts +++ b/src/main/state/plugin-recovery.ts @@ -159,12 +159,68 @@ async function pluginMatchesSlot( return false } +async function packagesProvidingSlot( + nodeModulesPath: string, + slotName: string +): Promise { + const scopeDirectory = join(nodeModulesPath, '@deepseek-ai') + const providers: string[] = [] + + try { + const entries = await readdir(scopeDirectory, { withFileTypes: true }) + for (const entry of entries) { + if (!entry.name.startsWith('dsh-client-ui-')) continue + if (!entry.isDirectory() && !entry.isSymbolicLink()) continue + + const packageName = `@deepseek-ai/${entry.name}` + for (const file of ['client.js', 'lib/client.js', 'dist/client.js']) { + try { + const content = await readFile(join(scopeDirectory, entry.name, file), 'utf8') + if (content.includes(slotName)) { + providers.push(packageName) + break + } + } catch {} + } + } + } catch {} + + return providers +} + +async function pluginReferencesPackage( + profileDirectory: string, + plugin: string, + packageNames: ReadonlySet +): Promise { + const packageDirectory = join(profileDirectory, 'node_modules', plugin) + + try { + const rawManifest = await readFile(join(packageDirectory, 'package.json'), 'utf8') + const manifest = JSON.parse(rawManifest) as BundleManifest + const declaredPackages = new Set([ + ...Object.keys(manifest.dependencies ?? {}), + ...Object.keys(manifest.optionalDependencies ?? {}) + ]) + if ([...packageNames].some((packageName) => declaredPackages.has(packageName))) return true + } catch {} + + for (const file of ['cordis.patch.yml', 'index.js', 'lib/index.js', 'dist/index.js']) { + try { + const content = await readFile(join(packageDirectory, file), 'utf8') + if ([...packageNames].some((packageName) => content.includes(packageName))) return true + } catch {} + } + return false +} + export async function resolveProfileRecoveryPlugins( dshHome: string, detectedPlugins: readonly string[], duplicateLoaderEntryId?: string, slotConflictName?: string, - excludedPlugins: readonly string[] = [] + excludedPlugins: readonly string[] = [], + slotProviderNodeModulesPaths: readonly string[] = [] ): Promise { const manifestPath = profilePackageJsonPath(dshHome) @@ -215,6 +271,29 @@ export async function resolveProfileRecoveryPlugins( } } if (slotMatched.size === 1) return [...slotMatched] + + // Some plugins create official UI packages dynamically instead of + // containing the slot literal themselves. Attribute those packages back + // to the configured root bundle using its runtime code/dependencies. + const providerPackages = new Set() + const searchPaths = [ + join(profileDirectory, 'node_modules'), + ...slotProviderNodeModulesPaths + ] + for (const nodeModulesPath of searchPaths) { + for (const packageName of await packagesProvidingSlot(nodeModulesPath, slotConflictName)) { + providerPackages.add(packageName) + } + } + if (providerPackages.size > 0) { + const providerOwners = new Set() + for (const plugin of configuredPlugins) { + if (await pluginReferencesPackage(profileDirectory, plugin, providerPackages)) { + providerOwners.add(plugin) + } + } + if (providerOwners.size === 1) return [...providerOwners] + } } // Never guess. A recovery action is only safe when one or more packages diff --git a/test/branding-patch.test.ts b/test/branding-patch.test.ts index ca2429df..6381e422 100644 --- a/test/branding-patch.test.ts +++ b/test/branding-patch.test.ts @@ -83,7 +83,8 @@ describe('DSH Desktop sidebar branding', () => { expect(preload).toContain("openPhonePairing: (): Promise => ipcRenderer.invoke('mobile:open-pairing')") expect(preload).toContain("phoneStatus: (): Promise<{ connected?: boolean }> => ipcRenderer.invoke('mobile:status')") expect(preload).not.toContain('data-dsh-sidebar-root') - expect(preload).not.toContain('MutationObserver') + expect(preload).not.toContain('mountMobileButton') + expect(preload).not.toContain('refreshMobileStatus') expect(main).toContain("ipcMain.handle('mobile:open-pairing'") expect(main).toContain("ipcMain.handle('mobile:status'") }) diff --git a/test/plugin-recovery-detection.test.ts b/test/plugin-recovery-detection.test.ts new file mode 100644 index 00000000..da5a7ed2 --- /dev/null +++ b/test/plugin-recovery-detection.test.ts @@ -0,0 +1,161 @@ +import { mkdir, rm, writeFile } from 'node:fs/promises' +import { join } from 'node:path' +import { afterEach, beforeEach, describe, expect, it } from 'vitest' +import { detectPluginRecovery } from '../src/main/plugin-recovery-detection' +import { extractSlotConflictName } from '../src/main/runtime/harness-runtime' +import { + profilePackageJsonPath, + resolveProfileRecoveryPlugins +} from '../src/main/state/plugin-recovery' + +describe('plugin recovery detection', () => { + const testDir = join(__dirname, '.temp-plugin-recovery-detection-test') + const pluginDir = join(testDir, 'profiles', 'web', 'node_modules', 'conflicting-plugin') + + beforeEach(async () => { + await mkdir(join(pluginDir, 'lib'), { recursive: true }) + await writeFile( + profilePackageJsonPath(testDir), + JSON.stringify({ + dependencies: { + 'conflicting-plugin': '^1.0.0' + }, + dsh: { + profile: { + bundles: [ + '@deepseek-ai/dsh-base', + '@deepseek-ai/dsh-web-app', + 'conflicting-plugin' + ] + } + } + }) + ) + await writeFile( + join(pluginDir, 'lib', 'client.js'), + 'ctx.slot("conversation.hero.workspace.directoryFlow", component);' + ) + }) + + afterEach(async () => { + await rm(testDir, { recursive: true, force: true }) + }) + + it('retries unresolved frontend evidence and identifies a plugin from a later console error', async () => { + let currentTime = 0 + let liveLogs: string[] = [] + let waits = 0 + + const detection = await detectPluginRecovery({ + dshHome: testDir, + initialLogs: [ + '[stderr] Failed to load plugins\n@deepseek-ai/dsh-client-ui-directory-picker-browse' + ], + readLatestLogs: () => liveLogs, + timeoutMs: 1_000, + pollIntervalMs: 100, + now: () => currentTime, + wait: async (milliseconds) => { + waits += 1 + currentTime += milliseconds + liveLogs = [ + '[stderr] single slot "conversation.hero.workspace.directoryFlow" already has a registration at priority 0' + ] + } + }) + + expect(waits).toBe(1) + expect(detection.plugins).toEqual(['conflicting-plugin']) + expect(detection.logs).toContain(liveLogs[0]) + }) + + it('stops retrying at the deadline when no direct evidence arrives', async () => { + let currentTime = 0 + let waits = 0 + + const detection = await detectPluginRecovery({ + dshHome: testDir, + initialLogs: ['[stderr] Failed to load plugins'], + readLatestLogs: () => [], + timeoutMs: 250, + pollIntervalMs: 100, + now: () => currentTime, + wait: async (milliseconds) => { + waits += 1 + currentTime += milliseconds + } + }) + + expect(waits).toBe(3) + expect(detection.plugins).toEqual([]) + }) + + it('attributes a generic slot conflict to a bundle that dynamically loads its provider', async () => { + const profileDirectory = join(testDir, 'profiles', 'web') + const remotePluginDirectory = join(profileDirectory, 'node_modules', 'dsh-full-remote') + const unrelatedPluginDirectory = join(profileDirectory, 'node_modules', 'unrelated-plugin') + const coreNodeModules = join(testDir, 'app-node_modules') + const browseProviderDirectory = join( + coreNodeModules, + '@deepseek-ai', + 'dsh-client-ui-directory-picker-browse', + 'lib' + ) + + await mkdir(remotePluginDirectory, { recursive: true }) + await mkdir(unrelatedPluginDirectory, { recursive: true }) + await mkdir(browseProviderDirectory, { recursive: true }) + await writeFile( + profilePackageJsonPath(testDir), + JSON.stringify({ + dependencies: { + 'dsh-full-remote': '^0.3.5', + 'unrelated-plugin': '^1.0.0' + }, + dsh: { + profile: { + bundles: [ + '@deepseek-ai/dsh-base', + '@deepseek-ai/dsh-web-app', + 'dsh-full-remote', + 'unrelated-plugin' + ] + } + } + }) + ) + await writeFile( + join(remotePluginDirectory, 'package.json'), + JSON.stringify({ name: 'dsh-full-remote' }) + ) + await writeFile( + join(remotePluginDirectory, 'index.js'), + 'const BROWSE_UI_PACKAGE = "@deepseek-ai/dsh-client-ui-directory-picker-browse";' + ) + await writeFile( + join(unrelatedPluginDirectory, 'package.json'), + JSON.stringify({ name: 'unrelated-plugin' }) + ) + await writeFile( + join(browseProviderDirectory, 'client.js'), + 'ctx.slots.inject("conversation.hero.workspace.directoryFlow", register);' + ) + + const logs = [ + '[stderr] UI slot "conversation.hero.workspace.directoryFlow" has duplicate registrations from conflicting plugins.' + ] + const slotName = extractSlotConflictName(logs) + expect(slotName).toBe('conversation.hero.workspace.directoryFlow') + await expect( + resolveProfileRecoveryPlugins(testDir, [], undefined, slotName, [], [coreNodeModules]) + ).resolves.toEqual(['dsh-full-remote']) + + const detection = await detectPluginRecovery({ + dshHome: testDir, + initialLogs: logs, + slotProviderNodeModulesPaths: [coreNodeModules] + }) + + expect(detection.plugins).toEqual(['dsh-full-remote']) + }) +}) diff --git a/test/provider-error-patch.test.ts b/test/provider-error-patch.test.ts index 645b9e36..b0ff569e 100644 --- a/test/provider-error-patch.test.ts +++ b/test/provider-error-patch.test.ts @@ -1,19 +1,15 @@ import { readFile } from 'node:fs/promises' -import path from 'node:path' import { describe, expect, it } from 'vitest' +import { patchPath } from './patch-path' -const projectRoot = path.resolve(import.meta.dirname, '..') - -async function readPatch(name: string): Promise { - return readFile(path.join(projectRoot, 'patches', name), 'utf8') +async function readPatch(packageName: string): Promise { + return readFile(patchPath(packageName), 'utf8') } describe('provider error classification patches', () => { it('distinguishes quota, authentication, and forbidden failures', async () => { - const deepseekPatch = await readPatch( - '@deepseek-ai+dsh-llm-deepseek+0.1.0-rc.7.patch' - ) - const piAiPatch = await readPatch('@deepseek-ai+dsh-llm-pi-ai+0.1.0-rc.7.patch') + const deepseekPatch = await readPatch('@deepseek-ai/dsh-llm-deepseek') + const piAiPatch = await readPatch('@deepseek-ai/dsh-llm-pi-ai') expect(deepseekPatch).toContain('+\tif (status === 401) return "AUTH";') expect(deepseekPatch).toContain( @@ -34,9 +30,7 @@ describe('provider error classification patches', () => { }) it('shows distinct English quota, forbidden, and authentication messages', async () => { - const runtimePatch = await readPatch( - '@deepseek-ai+dsh-client-runtime+0.1.0-rc.7.patch' - ) + const runtimePatch = await readPatch('@deepseek-ai/dsh-client-runtime') expect(runtimePatch).toContain('record.code === "QUOTA"') expect(runtimePatch).toContain( diff --git a/test/runtime.test.ts b/test/runtime.test.ts index 7d54297f..4b5aa545 100644 --- a/test/runtime.test.ts +++ b/test/runtime.test.ts @@ -8,6 +8,7 @@ import { extractOffendingPlugin, extractOffendingPlugins, extractPluginFailureReferences, + extractSlotConflictName, formatExitCode, updateReadyStability } from '../src/main/runtime/harness-runtime' @@ -254,6 +255,15 @@ describe('offending plugin extraction', () => { expect(extractOffendingPlugins(logs)).toEqual([]) }) + it('extracts a generic renderer slot conflict without registration identities', () => { + const logs = [ + '[stderr] UI slot "conversation.hero.workspace.directoryFlow" has duplicate registrations from conflicting plugins.' + ] + expect(extractSlotConflictName(logs)).toBe( + 'conversation.hero.workspace.directoryFlow' + ) + }) + it('returns undefined when no plugin error is matched', () => { const logs = [ '[stderr] [harness-node] uncaught exception: ReferenceError: x is not defined' From 4ea3ce088d6d9b2bafc1a5e7b2371951632e754f Mon Sep 17 00:00:00 2001 From: yaojin3616 Date: Thu, 20 Aug 2026 13:48:53 +0800 Subject: [PATCH 3/6] fix(sidebar): avoid overriding official brand slots --- packages/dsh-desktop-shell/client.js | 59 ------------------------- packages/dsh-desktop-shell/package.json | 2 +- test/branding-patch.test.ts | 12 ++--- 3 files changed, 5 insertions(+), 68 deletions(-) diff --git a/packages/dsh-desktop-shell/client.js b/packages/dsh-desktop-shell/client.js index 9f97bf3c..54e8fc6a 100644 --- a/packages/dsh-desktop-shell/client.js +++ b/packages/dsh-desktop-shell/client.js @@ -5,16 +5,9 @@ window.__ModuleLoader__.load({ const exports = module.exports Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }) const React = require('react') - const primitives = require('@deepseek-ai/dsh-client-ui-primitives') const NS = 'desktopShell' const STYLE_ID = 'dsh-desktop-shell-styles' - const LIGHT_LOGO_URL = '/dsh-desktop-logo-light.png' - const DARK_LOGO_URL = '/dsh-desktop-logo-dark.png' - - // The logo art is a single wide lockup; these are its intrinsic bounds. - const LOGO_VIEW_BOX = { x: 150, y: 330, width: 1030, height: 590 } - const LOGO_ASPECT = LOGO_VIEW_BOX.width / LOGO_VIEW_BOX.height const en = { connect: 'Connect phone', @@ -26,9 +19,6 @@ window.__ModuleLoader__.load({ } const styles = ` - .dshDesktopLogoDark { display: none; } - body[data-ds-dark-theme] .dshDesktopLogoLight { display: none; } - body[data-ds-dark-theme] .dshDesktopLogoDark { display: inline; } .dshDesktopPhoneButton { appearance: none; position: relative; width: 32px; height: 32px; color: var(--dsw-alias-label-secondary, #73777f); background: transparent; @@ -58,49 +48,6 @@ window.__ModuleLoader__.load({ document.head.appendChild(tag) } - /** - * The dark and light artwork ship as separate PNGs. Both are drawn and CSS - * picks one, so the swap costs no re-render when the theme attribute flips. - */ - function DshDesktopLogo({ height = 18 }) { - const image = (className, href) => - React.createElement('image', { - key: className, - className, - href, - x: LOGO_VIEW_BOX.x, - y: LOGO_VIEW_BOX.y, - width: LOGO_VIEW_BOX.width, - height: LOGO_VIEW_BOX.height, - preserveAspectRatio: 'xMidYMid meet' - }) - return React.createElement( - 'svg', - { - width: Math.round(height * LOGO_ASPECT), - height, - viewBox: `${LOGO_VIEW_BOX.x} ${LOGO_VIEW_BOX.y} ${LOGO_VIEW_BOX.width} ${LOGO_VIEW_BOX.height}`, - fill: 'none', - 'aria-hidden': 'true' - }, - image('dshDesktopLogoLight', LIGHT_LOGO_URL), - image('dshDesktopLogoDark', DARK_LOGO_URL) - ) - } - - /** - * `sidebar.brand.mark` renders in both the expanded lockup and the collapsed - * rail, and hands us the icon box it expects. The lockup is wider than it is - * tall, so scale off the height rather than filling the square. - */ - function BrandMark({ size = 24 }) { - return React.createElement(DshDesktopLogo, { height: Math.round(size * 0.75) }) - } - - function BrandName() { - return React.createElement(primitives.BrandWordmark, {}) - } - const phoneIcon = () => React.createElement( 'svg', @@ -182,12 +129,6 @@ window.__ModuleLoader__.load({ 'dsh-desktop-shell: copy dictionaries' ) const t = ctx.locale.bind(NS) - ctx.slots.inject('sidebar.brand.mark', () => - ctx.slots.register({ name: 'sidebar.brand.mark', id: 'desktop-brand-mark' }, BrandMark) - ) - ctx.slots.inject('sidebar.brand.name', () => - ctx.slots.register({ name: 'sidebar.brand.name', id: 'desktop-brand-name' }, BrandName) - ) ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register( { diff --git a/packages/dsh-desktop-shell/package.json b/packages/dsh-desktop-shell/package.json index 52587eb4..cbde88e6 100644 --- a/packages/dsh-desktop-shell/package.json +++ b/packages/dsh-desktop-shell/package.json @@ -1,7 +1,7 @@ { "name": "dsh-desktop-shell", "version": "0.1.0", - "description": "DSH Desktop shell surfaces: sidebar branding and the phone-pairing footer action, filled through the Harness sidebar slots.", + "description": "DSH Desktop shell surfaces: a phone-pairing footer action filled through the Harness sidebar slot.", "private": true, "type": "module", "main": "./index.js", diff --git a/test/branding-patch.test.ts b/test/branding-patch.test.ts index 6381e422..a6d42bf2 100644 --- a/test/branding-patch.test.ts +++ b/test/branding-patch.test.ts @@ -24,16 +24,12 @@ describe('DSH Desktop sidebar branding', () => { expect(main).toContain("height: '24px'") }) - it('pairs the DSH logo with the original Harness wordmark through the sidebar slots', async () => { + it('leaves the official single-occupant brand slots to Harness', async () => { const client = await readFile(shellClient, 'utf8') - expect(client).toContain("ctx.slots.register({ name: 'sidebar.brand.mark'") - expect(client).toContain("ctx.slots.register({ name: 'sidebar.brand.name'") - expect(client).toContain('/dsh-desktop-logo-light.png') - expect(client).toContain('/dsh-desktop-logo-dark.png') - expect(client).toContain('primitives.BrandWordmark') - expect(client).toContain('body[data-ds-dark-theme] .dshDesktopLogoLight') - expect(client).toContain('body[data-ds-dark-theme] .dshDesktopLogoDark') + expect(client).not.toContain("name: 'sidebar.brand.mark'") + expect(client).not.toContain("name: 'sidebar.brand.name'") + expect(client).toContain("name: 'sidebar.footer.action'") }) it('keeps the desktop shell out of ui-sidebar so upgrades carry no patch', async () => { From de38e869d4c4faac379196f8ec6c5d71d55b70c4 Mon Sep 17 00:00:00 2001 From: yaojin3616 Date: Thu, 20 Aug 2026 14:05:54 +0800 Subject: [PATCH 4/6] fix(sidebar): restore desktop brand and phone entry layout --- README.md | 2 +- build/dsh-desktop.patch.yml | 5 - package-lock.json | 112 ++++++++++++- package.json | 5 +- packages/dsh-desktop-shell/client.js | 149 ------------------ packages/dsh-desktop-shell/index.js | 8 - packages/dsh-desktop-shell/package.json | 23 --- patches/@deepseek-ai+dsh+0.1.0-rc.8.patch | 4 +- ...-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch | 145 +++++++++++++++++ src/preload/index.ts | 80 +++++++++- test/branding-patch.test.ts | 73 ++++----- 11 files changed, 363 insertions(+), 243 deletions(-) delete mode 100644 packages/dsh-desktop-shell/client.js delete mode 100644 packages/dsh-desktop-shell/index.js delete mode 100644 packages/dsh-desktop-shell/package.json create mode 100644 patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch diff --git a/README.md b/README.md index 4bf66273..d688bf4c 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ build/ Application icon assets ## Upstream version and patches -The project currently pins `@deepseek-ai/dsh@0.1.0-rc.8`. The initial provider list and desktop preset-transfer surface are captured with [`patch-package`](https://github.com/ds300/patch-package) under [`patches/`](patches/) rather than relying on untracked changes in `node_modules`. Sidebar branding and the phone-pairing entry now fill the `sidebar.brand.*` and `sidebar.footer.action` slots that Harness exposes, so they need no patch at all. +The project currently pins `@deepseek-ai/dsh@0.1.0-rc.8`. The initial provider list and desktop preset-transfer surface are captured with [`patch-package`](https://github.com/ds300/patch-package) under [`patches/`](patches/) rather than relying on untracked changes in `node_modules`. When upgrading DSH: diff --git a/build/dsh-desktop.patch.yml b/build/dsh-desktop.patch.yml index ec7f4b66..34c24083 100644 --- a/build/dsh-desktop.patch.yml +++ b/build/dsh-desktop.patch.yml @@ -8,11 +8,6 @@ - id: directory-picker-electron-desktop-surface name: '@deepseek-ai/dsh-client-ui-directory-picker-native' - # Desktop branding and the phone-pairing entry ride the sidebar slots that - # Harness exposes, so neither needs a patch against ui-sidebar. - - id: dsh-desktop-shell - name: dsh-desktop-shell - # DSH Desktop owns the fixed-target dsh-market installer and its lightweight # settings entry. After dshmarket is installed and Harness restarts, the # community plugin replaces the placeholder with its complete market UI. diff --git a/package-lock.json b/package-lock.json index 07925ed9..1541d6d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,11 +31,12 @@ "@deepseek-ai/dsh-timeout": "0.1.0-rc.8", "@deepseek-ai/dsh-workflow": "0.1.0-rc.8", "dsh-desktop-market-installer": "file:packages/dsh-desktop-market-installer", - "dsh-desktop-shell": "file:packages/dsh-desktop-shell", "electron-updater": "^6.8.9", "node": "24.9.0", "pnpm": "10.34.5", - "qrcode": "^1.5.4" + "qrcode": "^1.5.4", + "react": "18.3.1", + "react-dom": "18.3.1" }, "devDependencies": { "@types/node": "24.10.1", @@ -4649,6 +4650,45 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@electron/windows-sign": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", + "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@emnapi/runtime": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", @@ -8350,6 +8390,15 @@ "url": "https://opencollective.com/express" } }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -8654,10 +8703,6 @@ "resolved": "packages/dsh-desktop-market-installer", "link": true }, - "node_modules/dsh-desktop-shell": { - "resolved": "packages/dsh-desktop-shell", - "link": true - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -10409,7 +10454,6 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", - "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -11487,6 +11531,36 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/powershell-utils": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.0.tgz", @@ -11784,7 +11858,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -11792,6 +11865,28 @@ "node": ">=0.10.0" } }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/read-binary-file-arch": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", @@ -13837,6 +13932,7 @@ }, "packages/dsh-desktop-shell": { "version": "0.1.0", + "extraneous": true, "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1" diff --git a/package.json b/package.json index 9e4886fc..7aa33592 100644 --- a/package.json +++ b/package.json @@ -61,11 +61,12 @@ "@deepseek-ai/dsh-timeout": "0.1.0-rc.8", "@deepseek-ai/dsh-workflow": "0.1.0-rc.8", "dsh-desktop-market-installer": "file:packages/dsh-desktop-market-installer", - "dsh-desktop-shell": "file:packages/dsh-desktop-shell", "electron-updater": "^6.8.9", "node": "24.9.0", "pnpm": "10.34.5", - "qrcode": "^1.5.4" + "qrcode": "^1.5.4", + "react": "18.3.1", + "react-dom": "18.3.1" }, "devDependencies": { "@types/node": "24.10.1", diff --git a/packages/dsh-desktop-shell/client.js b/packages/dsh-desktop-shell/client.js deleted file mode 100644 index 54e8fc6a..00000000 --- a/packages/dsh-desktop-shell/client.js +++ /dev/null @@ -1,149 +0,0 @@ -window.__ModuleLoader__.load({ - id: 'dsh-desktop-shell', - factory: (require) => { - const module = { exports: {} } - const exports = module.exports - Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }) - const React = require('react') - - const NS = 'desktopShell' - const STYLE_ID = 'dsh-desktop-shell-styles' - - const en = { - connect: 'Connect phone', - manage: 'Manage phone connection' - } - const zh = { - connect: '连接手机', - manage: '管理手机连接' - } - - const styles = ` - .dshDesktopPhoneButton { - appearance: none; position: relative; width: 32px; height: 32px; - color: var(--dsw-alias-label-secondary, #73777f); background: transparent; - border: 0; border-radius: 9px; display: inline-flex; align-items: center; - justify-content: center; cursor: pointer; - } - .dshDesktopPhoneButton:hover { - color: var(--dsw-alias-label-primary, #202124); - background: var(--dsw-alias-interactive-bg-hover, rgba(32, 33, 36, .08)); - } - .dshDesktopPhoneButton:focus-visible { outline: 2px solid #4d6bfe; outline-offset: 1px; } - .dshDesktopPhoneButton[hidden] { display: none; } - .dshDesktopPhoneDot { - position: absolute; top: 4px; right: 4px; width: 7px; height: 7px; - border: 1.5px solid var(--dsw-specific-sidebar-fill, #fff); - border-radius: 50%; background: #4da66d; opacity: 0; - } - .dshDesktopPhoneButton.is-connected .dshDesktopPhoneDot { opacity: 1; } - ` - - function installStyles() { - if (typeof document === 'undefined') return - if (document.getElementById(STYLE_ID) !== null) return - const tag = document.createElement('style') - tag.id = STYLE_ID - tag.textContent = styles - document.head.appendChild(tag) - } - - const phoneIcon = () => - React.createElement( - 'svg', - { viewBox: '0 0 24 24', width: 19, height: 19, fill: 'none', 'aria-hidden': 'true' }, - React.createElement('rect', { - x: 7, - y: 2.75, - width: 10, - height: 18.5, - rx: 2.25, - stroke: 'currentColor', - strokeWidth: 1.7 - }), - React.createElement('path', { - d: 'M10.2 5.5h3.6M10.5 18.35h3', - stroke: 'currentColor', - strokeWidth: 1.7, - strokeLinecap: 'round' - }) - ) - - function usePhoneConnected() { - const [connected, setConnected] = React.useState(false) - React.useEffect(() => { - const bridge = window.dshDesktop - if (bridge === undefined) return - let cancelled = false - const read = async () => { - try { - const status = await bridge.phoneStatus() - if (!cancelled) setConnected(status.connected === true) - } catch (error) { - console.warn('[mobile] unable to read connection status', error) - } - } - void read() - const timer = window.setInterval(() => void read(), 1000) - return () => { - cancelled = true - window.clearInterval(timer) - } - }, []) - return connected - } - - /** - * Collapsed to a rail, the entry only earns its slot once a phone is - * actually paired; expanded, it is always offered. - */ - function PhoneAction({ wide, t }) { - const connected = usePhoneConnected() - if (!wide && !connected) return null - const label = connected ? t('manage') : t('connect') - return React.createElement( - 'button', - { - type: 'button', - className: `dshDesktopPhoneButton${connected ? ' is-connected' : ''}`, - 'aria-label': label, - title: label, - onClick: () => { - const bridge = window.dshDesktop - if (bridge === undefined) return - void bridge.openPhonePairing().catch((error) => { - console.error('[mobile] unable to open pairing window', error) - }) - } - }, - phoneIcon(), - React.createElement('span', { className: 'dshDesktopPhoneDot', 'aria-hidden': 'true' }) - ) - } - - const inject = ['slots', 'locale'] - function apply(ctx) { - installStyles() - ctx.effect( - () => ctx.locale.register(NS, { zh, en }), - 'dsh-desktop-shell: copy dictionaries' - ) - const t = ctx.locale.bind(NS) - ctx.slots.inject('sidebar.footer.action', () => - ctx.slots.register( - { - name: 'sidebar.footer.action', - id: 'desktop-phone-pairing', - order: 10, - inject: () => ({ t }) - }, - PhoneAction - ) - ) - } - - exports.apply = apply - exports.inject = inject - return module.exports - } -}) diff --git a/packages/dsh-desktop-shell/index.js b/packages/dsh-desktop-shell/index.js deleted file mode 100644 index 2d8ce08a..00000000 --- a/packages/dsh-desktop-shell/index.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Host half of the desktop shell plugin. Everything this plugin does lives in - * the browser (sidebar slot fills), so the Host side only has to exist for the - * composed profile to resolve the package and load its client module. - */ -export const name = 'dsh-desktop-shell' - -export function apply() {} diff --git a/packages/dsh-desktop-shell/package.json b/packages/dsh-desktop-shell/package.json deleted file mode 100644 index cbde88e6..00000000 --- a/packages/dsh-desktop-shell/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "dsh-desktop-shell", - "version": "0.1.0", - "description": "DSH Desktop shell surfaces: a phone-pairing footer action filled through the Harness sidebar slot.", - "private": true, - "type": "module", - "main": "./index.js", - "exports": { - ".": "./index.js", - "./client": "./client.js", - "./package.json": "./package.json" - }, - "dsh": { - "client": { - "inject": ["@deepseek-ai/dsh-client-ui-sidebar"], - "platform": "web" - } - }, - "license": "MIT", - "peerDependencies": { - "@deepseek-ai/cordis": "^4.0.1" - } -} diff --git a/patches/@deepseek-ai+dsh+0.1.0-rc.8.patch b/patches/@deepseek-ai+dsh+0.1.0-rc.8.patch index 3cb80023..597f86d2 100644 --- a/patches/@deepseek-ai+dsh+0.1.0-rc.8.patch +++ b/patches/@deepseek-ai+dsh+0.1.0-rc.8.patch @@ -1,12 +1,12 @@ diff --git a/node_modules/@deepseek-ai/dsh/package.json b/node_modules/@deepseek-ai/dsh/package.json +index 881bb2a..adc3a2a 100644 --- a/node_modules/@deepseek-ai/dsh/package.json +++ b/node_modules/@deepseek-ai/dsh/package.json -@@ -20,6 +20,8 @@ +@@ -20,6 +20,7 @@ ], "license": "MIT", "dependencies": { + "dsh-desktop-market-installer": "0.1.0", -+ "dsh-desktop-shell": "0.1.0", "commander": "^15.0.0", "js-yaml": "^4.2.0", "node-addon-require-builtin": "^0.1.4", diff --git a/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch b/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch new file mode 100644 index 00000000..2b9e8b51 --- /dev/null +++ b/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch @@ -0,0 +1,145 @@ +diff --git a/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +index acfa7ad..77d040e 100644 +--- a/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js ++++ b/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +@@ -23,16 +23,23 @@ window.__ModuleLoader__.load({ + } + //#endregion + //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-sidebar/src/client/SidebarRoot.module.css.mjs +- const css = ".hHd-Xa_root{--dsh-sidebar-inline-padding:12px;height:100%;padding:6px var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:14px;display:flex}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}.hHd-Xa_root.hHd-Xa_quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.hHd-Xa_fading>*{opacity:0;transition:opacity .15s var(--ds-ease-in-out)}.hHd-Xa_wide{animation:hHd-Xa_wide-in .2s var(--ds-ease-in-out)}@keyframes hHd-Xa_wide-in{0%{opacity:0}}.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_regionArea{animation:hHd-Xa_rail-in .15s var(--ds-ease-in-out) backwards}.hHd-Xa_railIn .hHd-Xa_footArea{animation:hHd-Xa_rail-fade-in .15s var(--ds-ease-in-out) backwards}@keyframes hHd-Xa_rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes hHd-Xa_rail-fade-in{0%{opacity:0}}.hHd-Xa_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:60px;margin-bottom:8px;padding:8px 0 8px 4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_logoRow{justify-content:flex-start;height:36px;margin-bottom:12px;padding:0}.hHd-Xa_brand{min-width:0;color:inherit;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;padding:0;display:inline-flex;overflow:hidden}.hHd-Xa_brandIdentity{align-items:center;gap:8px;min-width:0;height:24px;display:inline-flex}.hHd-Xa_brandMark{flex:none;justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_brandName{letter-spacing:.04em;align-items:center;gap:6px;min-width:0;height:24px;font-size:18px;font-weight:600;line-height:24px;display:inline-flex}.hHd-Xa_fallbackBrandName{letter-spacing:0;white-space:nowrap;font-size:17px}.hHd-Xa_iconButton{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_collapsed .hHd-Xa_iconButton{width:36px;height:36px}.hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:none}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_panelIcon{display:inline}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_railMark{display:none}.hHd-Xa_railMark{justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_collapsed .hHd-Xa_iconButton{color:var(--dsw-alias-label-primary)}.hHd-Xa_buildRevision{height:16px;color:var(--dsw-alias-label-primary-inverted);background:var(--dsw-alias-label-primary);font-family:var(--ds-font-family-code);border-radius:3px;align-items:center;padding:0 4px;font-size:8px;font-weight:500;line-height:16px;display:inline-flex}.hHd-Xa_newSession{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;margin:0 2px 8px;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;display:flex;overflow:hidden}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}.hHd-Xa_collapsed .hHd-Xa_newSession{background:0 0;border-color:#0000;align-self:flex-start;gap:0;width:36px;height:36px;margin:0 0 12px;padding:0}.hHd-Xa_collapsed .hHd-Xa_newSession:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_newSessionLabel{white-space:nowrap;max-width:200px;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_newSessionLabel{max-width:0}.hHd-Xa_regionArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-sidebar-inline-padding));flex-direction:column;flex:1;padding-left:4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_regionArea{margin-left:0;margin-right:0;padding-left:0}.hHd-Xa_footArea{flex-direction:column;flex:none;display:flex}.hHd-Xa_settingsArea,.hHd-Xa_footerActions{flex:none;width:100%;min-width:0}.hHd-Xa_footerActions{display:flex}.hHd-Xa_collapsed .hHd-Xa_footArea{align-items:center}.hHd-Xa_collapsed .hHd-Xa_settingsArea,.hHd-Xa_collapsed .hHd-Xa_footerActions{justify-content:center;width:auto;display:flex}@media (prefers-reduced-motion:reduce){.hHd-Xa_wide,.hHd-Xa_fading>*,.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}"; ++ const css = ".hHd-Xa_root{--dsh-sidebar-inline-padding:12px;height:100%;padding:6px var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:14px;display:flex}.hHd-Xa_root.hHd-Xa_collapsed{padding:18px 10px 6px}.hHd-Xa_root.hHd-Xa_quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.hHd-Xa_fading>*{opacity:0;transition:opacity .15s var(--ds-ease-in-out)}.hHd-Xa_wide{animation:hHd-Xa_wide-in .2s var(--ds-ease-in-out)}@keyframes hHd-Xa_wide-in{0%{opacity:0}}.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_regionArea{animation:hHd-Xa_rail-in .15s var(--ds-ease-in-out) backwards}.hHd-Xa_railIn .hHd-Xa_footArea{animation:hHd-Xa_rail-fade-in .15s var(--ds-ease-in-out) backwards}@keyframes hHd-Xa_rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes hHd-Xa_rail-fade-in{0%{opacity:0}}.hHd-Xa_logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:8px;height:56px;margin-bottom:8px;padding:8px 2px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_logoRow{justify-content:flex-start;height:36px;margin-bottom:12px;padding:0}.hHd-Xa_brand{min-width:0;height:40px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:10px;flex:1;align-items:center;padding:3px 6px;display:inline-flex;overflow:hidden}.hHd-Xa_brand:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_brandLockup{min-width:0;align-items:center;gap:4px;display:inline-flex}.hHd-Xa_brandMark{width:34px;height:34px;flex:none;justify-content:center;align-items:center;display:inline-flex}.hHd-Xa_brandWordmark{width:158px;height:24px;color:var(--dsw-alias-label-primary);flex:none;display:inline-flex;overflow:hidden}.hHd-Xa_brandWordmark>svg{max-width:none;flex:none;transform:translateX(-24px)}.hHd-Xa_iconButton{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.hHd-Xa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_collapsed .hHd-Xa_iconButton{width:36px;height:36px}.hHd-Xa_collapsed .hHd-Xa_toggle .hHd-Xa_panelIcon{display:none}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_panelIcon{display:inline}.hHd-Xa_collapsed .hHd-Xa_toggle:hover .hHd-Xa_railFish{display:none}.hHd-Xa_collapsed .hHd-Xa_iconButton{color:var(--dsw-alias-label-primary)}.hHd-Xa_newSession{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-button-elevated-fill);height:38px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;margin:0 2px 8px;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;display:flex;overflow:hidden}.hHd-Xa_newSession:hover{background:var(--dsw-alias-button-floating-hover)}.hHd-Xa_collapsed .hHd-Xa_newSession{background:0 0;border-color:#0000;align-self:flex-start;gap:0;width:36px;height:36px;margin:0 0 12px;padding:0}.hHd-Xa_collapsed .hHd-Xa_newSession:hover{background:var(--dsw-alias-interactive-bg-hover)}.hHd-Xa_newSessionLabel{white-space:nowrap;max-width:200px;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_newSessionLabel{max-width:0}.hHd-Xa_regionArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-sidebar-inline-padding));flex-direction:column;flex:1;padding-left:4px;display:flex;overflow:hidden}.hHd-Xa_collapsed .hHd-Xa_regionArea{margin-left:0;margin-right:0;padding-left:0}.hHd-Xa_footArea{flex-direction:column;flex:none;display:flex}.hHd-Xa_settingsArea,.hHd-Xa_footerActions{flex:none;width:100%;min-width:0}.hHd-Xa_footerActions{display:flex}.hHd-Xa_collapsed .hHd-Xa_footArea{align-items:center}.hHd-Xa_collapsed .hHd-Xa_settingsArea,.hHd-Xa_collapsed .hHd-Xa_footerActions{justify-content:center;width:auto;display:flex}@media (prefers-reduced-motion:reduce){.hHd-Xa_wide,.hHd-Xa_fading>*,.hHd-Xa_railIn .hHd-Xa_iconButton,.hHd-Xa_railIn .hHd-Xa_newSession,.hHd-Xa_railIn .hHd-Xa_footArea,.hHd-Xa_railIn .hHd-Xa_regionArea{transition:none;animation:none}}"; + const tagId = "@deepseek-ai/dsh-client-ui-sidebar/SidebarRoot.module.css"; + if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) { + const tag = document.createElement("style"); + tag.dataset.plugin = "@deepseek-ai/dsh-client-ui-sidebar"; + tag.dataset.pluginCss = tagId; +- tag.textContent = css; ++ tag.textContent = css + ".hHd-Xa_root:not(.hHd-Xa_collapsed){padding-top:32px}" + (navigator.userAgent.includes("Macintosh") ? ".hHd-Xa_root.hHd-Xa_collapsed{padding:46px 22px 6px}" : ""); + document.head.appendChild(tag); + } + var SidebarRoot_module_css_default = { ++ "brandLockup": "hHd-Xa_brandLockup", ++ "brandMark": "hHd-Xa_brandMark", ++ "brandWordmark": "hHd-Xa_brandWordmark", ++ "railFish": "hHd-Xa_railFish", ++ "iconButton": "hHd-Xa_iconButton", ++ "settingsArea": "hHd-Xa_settingsArea", ++ "wide": "hHd-Xa_wide", + "brand": "hHd-Xa_brand", + "brandIdentity": "hHd-Xa_brandIdentity", + "brandMark": "hHd-Xa_brandMark", +@@ -61,6 +68,51 @@ window.__ModuleLoader__.load({ + "wide-in": "hHd-Xa_wide-in" + }; + //#endregion ++ //#region lib/types/client/DshDesktopLogo.js ++ const DSH_DESKTOP_LIGHT_LOGO_URL = "/dsh-desktop-logo-light.png"; ++ const DSH_DESKTOP_DARK_LOGO_URL = "/dsh-desktop-logo-dark.png"; ++ function DshDesktopLogo({ height = 20, className }) { ++ return (0, react_jsx_runtime.jsxs)("svg", { ++ width: height * 1030 / 590, ++ height, ++ className, ++ viewBox: "150 330 1030 590", ++ fill: "none", ++ "aria-hidden": "true", ++ children: [(0, react_jsx_runtime.jsx)("style", { ++ children: ".dshDesktopLogoDark{display:none}body[data-ds-dark-theme] .dshDesktopLogoLight{display:none}body[data-ds-dark-theme] .dshDesktopLogoDark{display:block}" ++ }), (0, react_jsx_runtime.jsx)("image", { ++ className: "dshDesktopLogoLight", ++ href: DSH_DESKTOP_LIGHT_LOGO_URL, ++ x: 150, ++ y: 330, ++ width: 1030, ++ height: 590, ++ preserveAspectRatio: "xMidYMid meet" ++ }), (0, react_jsx_runtime.jsx)("image", { ++ className: "dshDesktopLogoDark", ++ href: DSH_DESKTOP_DARK_LOGO_URL, ++ x: 150, ++ y: 330, ++ width: 1030, ++ height: 590, ++ preserveAspectRatio: "xMidYMid meet" ++ })] ++ }); ++ } ++ function DshDesktopBrand() { ++ return (0, react_jsx_runtime.jsxs)("span", { ++ className: SidebarRoot_module_css_default.brandLockup, ++ children: [(0, react_jsx_runtime.jsx)("span", { ++ className: SidebarRoot_module_css_default.brandMark, ++ children: (0, react_jsx_runtime.jsx)(DshDesktopLogo, {}) ++ }), (0, react_jsx_runtime.jsx)("span", { ++ className: SidebarRoot_module_css_default.brandWordmark, ++ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.BrandWordmark, {}) ++ })] ++ }); ++ } ++ //#endregion + //#region lib/types/client/SidebarRoot.js + /** + * Sidebar shell: column geometry only. Collapse is a slide plus crossfade: +@@ -143,6 +195,8 @@ window.__ModuleLoader__.load({ + }, [pointerInside]); + return (0, react_jsx_runtime.jsxs)("div", { + ref: column, ++ "data-dsh-sidebar-root": "", ++ "data-dsh-sidebar-wide": wide ? "true" : "false", + className: clsx(SidebarRoot_module_css_default.root, !wide && SidebarRoot_module_css_default.collapsed, !wide && everWide.current && SidebarRoot_module_css_default.railIn, collapsed && wide && SidebarRoot_module_css_default.fading, !pointerInside && SidebarRoot_module_css_default.quietBars), + style: wide ? { width: collapsed ? lastWideWidth.current : width } : void 0, + onPointerEnter: () => { +@@ -162,23 +216,7 @@ window.__ModuleLoader__.load({ + onClick: () => { + startSession(); + }, +- children: (0, react_jsx_runtime.jsxs)("span", { +- className: SidebarRoot_module_css_default.brandIdentity, +- "aria-hidden": "true", +- children: [(0, react_jsx_runtime.jsx)("span", { +- className: SidebarRoot_module_css_default.brandMark, +- children: renderSlot("sidebar.brand.mark", { size: 24 }, { fallback: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FishLogo, { size: 24 }) }) +- }), (0, react_jsx_runtime.jsx)("span", { +- className: SidebarRoot_module_css_default.brandName, +- children: renderSlot("sidebar.brand.name", {}, { fallback: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("span", { +- className: SidebarRoot_module_css_default.fallbackBrandName, +- children: "DSH Local Build" +- }), (0, react_jsx_runtime.jsx)("span", { +- className: SidebarRoot_module_css_default.buildRevision, +- children: "fcbad14" +- })] }) }) +- })] +- }) ++ children: (0, react_jsx_runtime.jsx)(DshDesktopBrand, {}) + }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, { + label: collapsed ? t("toggle.open") : t("toggle.collapse"), + delayMs: 500, +@@ -189,10 +227,9 @@ window.__ModuleLoader__.load({ + onClick: () => { + toggleSidebar(); + }, +- children: [!wide && (0, react_jsx_runtime.jsx)("span", { +- className: SidebarRoot_module_css_default.railMark, +- "aria-hidden": "true", +- children: renderSlot("sidebar.brand.mark", { size: 24 }, { fallback: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FishLogo, { size: 24 }) }) ++ children: [!wide && (0, react_jsx_runtime.jsx)(DshDesktopLogo, { ++ className: SidebarRoot_module_css_default.railFish, ++ height: 18 + }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPanelLeftOutline16, { + className: SidebarRoot_module_css_default.panelIcon, + size: wide ? 16 : 18 +@@ -227,6 +264,7 @@ window.__ModuleLoader__.load({ + }) + }), + (0, react_jsx_runtime.jsxs)("div", { ++ "data-dsh-sidebar-footer": "", + className: SidebarRoot_module_css_default.footArea, + children: [(0, react_jsx_runtime.jsx)("div", { + className: SidebarRoot_module_css_default.footerActions, +@@ -319,4 +357,4 @@ window.__ModuleLoader__.load({ + } + }); + +-//# sourceMappingURL=client.js.map +\ No newline at end of file ++//# sourceMappingURL=client.js.map diff --git a/src/preload/index.ts b/src/preload/index.ts index 45a479d6..b397c211 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -10,6 +10,7 @@ import { isPluginLoadError } from './plugin-error-view' import { mountWindowsTitlebar } from './windows-titlebar' const ROOT_ID = 'dsh-desktop-update-root' +const MOBILE_BUTTON_ID = 'dsh-desktop-mobile-button' const locale: UpdateLocale = navigator.language.toLowerCase().startsWith('zh') ? 'zh' : 'en' let host: HTMLDivElement | undefined @@ -19,6 +20,8 @@ let dismissedVersion: string | null = null let dismissedTransientPhase: UpdateStatus['phase'] | null = null let installing = false let receivedStatusEvent = false +let phoneConnected = false +let mobileStatusTimer: number | undefined let bootFailureTriggered = false let bootFailureTimer: number | undefined const pendingBootFailureMessages: string[] = [] @@ -78,22 +81,78 @@ function checkBootFailureInDom(): void { queueBootFailure(errorText) } -const domObserver = new MutationObserver(checkBootFailureInDom) +const domObserver = new MutationObserver(() => { + mountMobileButton() + checkBootFailureInDom() +}) contextBridge.exposeInMainWorld('dshDesktopDirectoryPicker', { pick: (): Promise => ipcRenderer.invoke('directory-picker:open') }) +function mountMobileButton(): void { + let style = document.getElementById(`${MOBILE_BUTTON_ID}-style`) + if (!style) { + style = document.createElement('style') + style.id = `${MOBILE_BUTTON_ID}-style` + style.textContent = mobileButtonStyles + document.head.appendChild(style) + } + const footer = document.querySelector('[data-dsh-sidebar-footer]') + if (!footer) return + let button = document.getElementById(MOBILE_BUTTON_ID) as HTMLButtonElement | null + if (!button) { + button = document.createElement('button') + button.id = MOBILE_BUTTON_ID + button.type = 'button' + button.innerHTML = `${phoneIcon}` + button.addEventListener('click', () => { + void ipcRenderer.invoke('mobile:open-pairing').catch((error: unknown) => { + console.error('[mobile] unable to open pairing window', error) + }) + }) + } + if (button.parentElement !== footer) footer.appendChild(button) + renderMobileButton() +} + +function renderMobileButton(): void { + const button = document.getElementById(MOBILE_BUTTON_ID) as HTMLButtonElement | null + const root = document.querySelector('[data-dsh-sidebar-root]') + if (!button || !root) return + const wide = root.dataset.dshSidebarWide === 'true' + button.hidden = !wide && !phoneConnected + button.classList.toggle('is-connected', phoneConnected) + const label = phoneConnected + ? locale === 'zh' ? '管理手机连接' : 'Manage phone connection' + : locale === 'zh' ? '连接手机' : 'Connect phone' + button.setAttribute('aria-label', label) + button.title = label +} + +async function refreshMobileStatus(): Promise { + try { + const status = (await ipcRenderer.invoke('mobile:status')) as { connected?: boolean } + phoneConnected = status.connected === true + mountMobileButton() + } catch (error) { + console.warn('[mobile] unable to read connection status', error) + } +} + function initializeUi(): void { if (process.platform === 'win32') { mountWindowsTitlebar({ document, ipcRenderer, locale }) } mount() + mountMobileButton() checkBootFailureInDom() domObserver.observe(document.documentElement, { childList: true, subtree: true }) + void refreshMobileStatus() + mobileStatusTimer ??= window.setInterval(() => void refreshMobileStatus(), 1000) } window.addEventListener('error', (event) => { @@ -115,9 +174,7 @@ window.addEventListener('unhandledrejection', (event) => { contextBridge.exposeInMainWorld( 'dshDesktop', Object.freeze({ - restartHarness: (): Promise<{ ok: boolean }> => ipcRenderer.invoke('harness:restart'), - openPhonePairing: (): Promise => ipcRenderer.invoke('mobile:open-pairing'), - phoneStatus: (): Promise<{ connected?: boolean }> => ipcRenderer.invoke('mobile:status') + restartHarness: (): Promise<{ ok: boolean }> => ipcRenderer.invoke('harness:restart') }) ) @@ -393,6 +450,21 @@ const styles = ` } ` +const phoneIcon = `` + +const mobileButtonStyles = ` + [data-dsh-sidebar-footer] { position: relative; } + [data-dsh-sidebar-root][data-dsh-sidebar-wide="true"] [data-dsh-sidebar-footer] > [class*="settingsArea"] { padding-right: 38px; } + #${MOBILE_BUTTON_ID} { appearance:none; position:relative; width:32px; height:32px; color:var(--dsw-alias-label-secondary,#73777f); background:transparent; border:0; border-radius:9px; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; } + [data-dsh-sidebar-root][data-dsh-sidebar-wide="true"] #${MOBILE_BUTTON_ID} { position:absolute; right:0; top:50%; transform:translateY(-50%); } + [data-dsh-sidebar-root][data-dsh-sidebar-wide="false"] #${MOBILE_BUTTON_ID} { margin-top:5px; } + #${MOBILE_BUTTON_ID}:hover { color:var(--dsw-alias-label-primary,#202124); background:var(--dsw-alias-interactive-bg-hover,rgba(32,33,36,.08)); } + #${MOBILE_BUTTON_ID}:focus-visible { outline:2px solid #4d6bfe; outline-offset:1px; } + #${MOBILE_BUTTON_ID}[hidden] { display:none; } + #${MOBILE_BUTTON_ID} > span { position:absolute; top:4px; right:4px; width:7px; height:7px; border:1.5px solid var(--dsw-specific-sidebar-fill,#fff); border-radius:50%; background:#4da66d; opacity:0; } + #${MOBILE_BUTTON_ID}.is-connected > span { opacity:1; } +` + ipcRenderer.on('updates:status-changed', (_event, status: UpdateStatus) => { receivedStatusEvent = true applyStatus(status) diff --git a/test/branding-patch.test.ts b/test/branding-patch.test.ts index a6d42bf2..8082d0b4 100644 --- a/test/branding-patch.test.ts +++ b/test/branding-patch.test.ts @@ -1,9 +1,8 @@ import { readFile } from 'node:fs/promises' import path from 'node:path' import { describe, expect, it } from 'vitest' -import { hasPatch, patchPath, projectRoot } from './patch-path' -const shellClient = path.join(projectRoot, 'packages', 'dsh-desktop-shell', 'client.js') +const projectRoot = path.resolve(import.meta.dirname, '..') describe('DSH Desktop sidebar branding', () => { it('matches the native window surface to the initial Harness theme', async () => { @@ -24,42 +23,34 @@ describe('DSH Desktop sidebar branding', () => { expect(main).toContain("height: '24px'") }) - it('leaves the official single-occupant brand slots to Harness', async () => { - const client = await readFile(shellClient, 'utf8') - - expect(client).not.toContain("name: 'sidebar.brand.mark'") - expect(client).not.toContain("name: 'sidebar.brand.name'") - expect(client).toContain("name: 'sidebar.footer.action'") - }) - - it('keeps the desktop shell out of ui-sidebar so upgrades carry no patch', async () => { - const composition = await readFile( - path.join(projectRoot, 'build', 'dsh-desktop.patch.yml'), + it('pairs the DSH logo with the original Harness wordmark in the expanded sidebar', async () => { + const patch = await readFile( + path.join(projectRoot, 'patches', '@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch'), 'utf8' ) - const manifest = JSON.parse( - await readFile(path.join(projectRoot, 'package.json'), 'utf8') - ) as { dependencies: Record } - expect(composition).toContain('name: dsh-desktop-shell') - expect(manifest.dependencies['dsh-desktop-shell']).toBe('file:packages/dsh-desktop-shell') - expect(hasPatch('@deepseek-ai/dsh-client-ui-sidebar')).toBe(false) - }) - - it('registers the shell plugin where the profile link farm can find it', async () => { - // Harness builds $DSH_HOME/profiles/node_modules by walking the *dsh* - // package manifest, not this project's. A local plugin that is only a - // dependency here resolves during tests and fails at runtime with - // ERR_MODULE_NOT_FOUND, so it has to be named in that manifest too. - const dshPatch = await readFile(patchPath('@deepseek-ai/dsh'), 'utf8') - - expect(dshPatch).toContain('+ "dsh-desktop-shell": "0.1.0",') - expect(dshPatch).toContain('+ "dsh-desktop-market-installer": "0.1.0",') + expect(patch).toContain('DshDesktopLogo') + expect(patch).toContain('DshDesktopBrand') + expect(patch).toContain('BrandWordmark') + expect(patch).toContain('/dsh-desktop-logo-light.png') + expect(patch).toContain('/dsh-desktop-logo-dark.png') + expect(patch).toContain('brandWordmark') + expect(patch).toContain('gap:4px') + expect(patch).toContain('transform:translateX(-24px)') + expect(patch).not.toContain('children: "DSH Desktop"') + expect(patch).toContain('height = 20') + expect(patch).toContain('height: 18') + expect(patch).toContain('.hHd-Xa_brand:hover') + expect(patch).toContain('padding-top:32px') + expect(patch).toContain('navigator.userAgent.includes("Macintosh")') + expect(patch).toContain('.hHd-Xa_root.hHd-Xa_collapsed{padding:46px 22px 6px}') + expect(patch).toContain('body[data-ds-dark-theme] .dshDesktopLogoLight') + expect(patch).toContain('body[data-ds-dark-theme] .dshDesktopLogoDark') }) it('uses an 80px macOS rail that clears the traffic lights', async () => { const patch = await readFile( - patchPath('@deepseek-ai/dsh-client-ui-layout'), + path.join(projectRoot, 'patches', '@deepseek-ai+dsh-client-ui-layout+0.1.0-rc.8.patch'), 'utf8' ) @@ -68,19 +59,19 @@ describe('DSH Desktop sidebar branding', () => { }) it('provides a sidebar phone entry that follows expanded and connected state', async () => { - const client = await readFile(shellClient, 'utf8') + const patch = await readFile( + path.join(projectRoot, 'patches', '@deepseek-ai+dsh-client-ui-sidebar+0.1.0-rc.8.patch'), + 'utf8' + ) const preload = await readFile(path.join(projectRoot, 'src', 'preload', 'index.ts'), 'utf8') const main = await readFile(path.join(projectRoot, 'src', 'main', 'index.ts'), 'utf8') - expect(client).toContain("name: 'sidebar.footer.action'") - expect(client).toContain('if (!wide && !connected) return null') - expect(client).toContain('bridge.openPhonePairing()') - expect(client).toContain('bridge.phoneStatus()') - expect(preload).toContain("openPhonePairing: (): Promise => ipcRenderer.invoke('mobile:open-pairing')") - expect(preload).toContain("phoneStatus: (): Promise<{ connected?: boolean }> => ipcRenderer.invoke('mobile:status')") - expect(preload).not.toContain('data-dsh-sidebar-root') - expect(preload).not.toContain('mountMobileButton') - expect(preload).not.toContain('refreshMobileStatus') + expect(patch).toContain('data-dsh-sidebar-root') + expect(patch).toContain('data-dsh-sidebar-wide') + expect(patch).toContain('data-dsh-sidebar-footer') + expect(preload).toContain("button.hidden = !wide && !phoneConnected") + expect(preload).toContain("button.classList.toggle('is-connected', phoneConnected)") + expect(preload).toContain("ipcRenderer.invoke('mobile:open-pairing')") expect(main).toContain("ipcMain.handle('mobile:open-pairing'") expect(main).toContain("ipcMain.handle('mobile:status'") }) From 4babd8e097367db79019d95a5505ef2165bda5e2 Mon Sep 17 00:00:00 2001 From: yaojin3616 Date: Thu, 20 Aug 2026 15:12:08 +0800 Subject: [PATCH 5/6] fix(recovery): replay frontend failures after restart --- src/main/index.ts | 64 +++++++++++++++++++++++++++++++++++++++----- test/release.test.ts | 12 +++++++++ 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index ed6917f4..ffc9e432 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -43,7 +43,7 @@ import { } from '../shared/desktop-menu' import { buildPluginRecoveryViewModel } from './plugin-recovery-view' -type PluginRecoveryAction = 'uninstall' | 'show-log' | 'quit' | 'restart' +type PluginRecoveryAction = 'uninstall' | 'show-log' | 'quit' | 'restart' | 'refresh' const PLUGIN_RECOVERY_ACTIONS = new Set([ 'uninstall', @@ -64,6 +64,8 @@ let mainWindowNavigationVersion = 0 let rendererPluginFailureLogs: string[] = [] let pluginRecoveryRemovedPlugins: string[] = [] let pluginRecoveryResetTimer: ReturnType | undefined +let pendingFrontendPluginRecovery = false +let pendingFrontendPluginRecoveryMessage: string | undefined function appendRendererPluginFailureLog(message: string): void { const trimmed = message.trim() @@ -74,6 +76,23 @@ function appendRendererPluginFailureLog(message: string): void { rendererPluginFailureLogs = rendererPluginFailureLogs.slice(-50) } +function queuePendingFrontendPluginRecovery(message?: string): void { + pendingFrontendPluginRecovery = true + if (message) pendingFrontendPluginRecoveryMessage = message + resolvePluginRecoveryAction('refresh') +} + +function takePendingFrontendPluginRecovery(): { + pending: boolean + message?: string +} { + const pending = pendingFrontendPluginRecovery + const message = pendingFrontendPluginRecoveryMessage + pendingFrontendPluginRecovery = false + pendingFrontendPluginRecoveryMessage = undefined + return { pending, message } +} + function cancelPluginRecoverySessionReset(): void { if (pluginRecoveryResetTimer) clearTimeout(pluginRecoveryResetTimer) pluginRecoveryResetTimer = undefined @@ -593,21 +612,35 @@ async function showPluginRecovery(options?: { cancelPluginRecoverySessionReset() const removedPlugins = pluginRecoveryRemovedPlugins let notice: string | undefined - let waitForRendererEvidence = options?.followRendererLogs === true + let recoveryMessage = options?.message + let recoveryLogs = options?.logs + let followRendererLogs = options?.followRendererLogs === true + let waitForRendererEvidence = followRendererLogs + + const applyPendingFrontendEvidence = (): boolean => { + const pending = takePendingFrontendPluginRecovery() + if (!pending.pending) return false + recoveryMessage = pending.message ?? recoveryMessage + recoveryLogs = [...rendererPluginFailureLogs] + followRendererLogs = true + waitForRendererEvidence = false + return true + } try { while (!quitting) { const snapshot = runtime.snapshot() - const message = options?.message ?? snapshot.message + const message = recoveryMessage ?? snapshot.message const detection = await detectPluginRecovery({ dshHome, - initialLogs: options?.logs ?? snapshot.logs, - readLatestLogs: options?.followRendererLogs ? () => rendererPluginFailureLogs : undefined, + initialLogs: recoveryLogs ?? snapshot.logs, + readLatestLogs: followRendererLogs ? () => rendererPluginFailureLogs : undefined, excludedPlugins: removedPlugins, slotProviderNodeModulesPaths: [join(app.getAppPath(), 'node_modules')], timeoutMs: waitForRendererEvidence ? PLUGIN_RECOVERY_EVIDENCE_TIMEOUT_MS : 0 }) waitForRendererEvidence = false + if (applyPendingFrontendEvidence()) continue const action = await waitForPluginRecoveryAction({ snapshot: { ...snapshot, @@ -620,7 +653,10 @@ async function showPluginRecovery(options?: { }) notice = undefined - if (action === 'uninstall' && detection.plugins.length > 0) { + if (action === 'refresh') { + applyPendingFrontendEvidence() + continue + } else if (action === 'uninstall' && detection.plugins.length > 0) { const failedPlugins: string[] = [] for (const plugin of detection.plugins) { const removed = await uninstallPluginFromProfile(dshHome, plugin, async (pluginName) => { @@ -660,6 +696,7 @@ async function showPluginRecovery(options?: { : `These plugins could not be removed: ${failedPlugins.join(', ')}` } await launchHarness() + if (applyPendingFrontendEvidence()) continue if (runtime.snapshot().phase === 'ready') { schedulePluginRecoverySessionReset() return @@ -667,6 +704,7 @@ async function showPluginRecovery(options?: { continue } else if (action === 'restart') { await launchHarness() + if (applyPendingFrontendEvidence()) continue if (runtime.snapshot().phase === 'ready') { schedulePluginRecoverySessionReset() return @@ -684,6 +722,16 @@ async function showPluginRecovery(options?: { showUnexpectedError(error) } finally { failureRecoveryVisible = false + const pending = takePendingFrontendPluginRecovery() + if (pending.pending && !quitting) { + queueMicrotask(() => { + void showPluginRecovery({ + message: pending.message, + logs: [...rendererPluginFailureLogs], + followRendererLogs: true + }) + }) + } } } @@ -896,6 +944,10 @@ async function bootstrap(): Promise { if (message) appendRendererPluginFailureLog(message) const logs = [...rendererPluginFailureLogs] appendRendererPluginRecoveryLog(logs) + if (failureRecoveryVisible) { + queuePendingFrontendPluginRecovery(message) + return { ok: true } + } void showPluginRecovery({ message, logs, followRendererLogs: true }) return { ok: true } }) diff --git a/test/release.test.ts b/test/release.test.ts index 73e8d33d..feb37b80 100644 --- a/test/release.test.ts +++ b/test/release.test.ts @@ -128,6 +128,18 @@ describe('GitHub release contract', () => { expect(main).toContain("} else if (action === 'restart') {") }) + it('replays frontend plugin failures that arrive during an active recovery', async () => { + const main = await readFile(path.join(projectRoot, 'src', 'main', 'index.ts'), 'utf8') + + expect(main).toContain("resolvePluginRecoveryAction('refresh')") + expect(main).toContain('if (applyPendingFrontendEvidence()) continue') + expect(main).toMatch( + /if \(failureRecoveryVisible\) \{\s+queuePendingFrontendPluginRecovery\(message\)/ + ) + expect(main).toContain('queueMicrotask(() => {') + expect(main).toContain('logs: [...rendererPluginFailureLogs]') + }) + it('publishes update metadata for installed desktop builds', async () => { const packageJson = JSON.parse( await readFile(path.join(projectRoot, 'package.json'), 'utf8') From eea3c0c2d0dad147a6b068ffba02e2c0e3a0602f Mon Sep 17 00:00:00 2001 From: yaojin3616 Date: Thu, 20 Aug 2026 15:16:56 +0800 Subject: [PATCH 6/6] fix(recovery): resolve dynamic plugin owners from loader errors --- src/main/index.ts | 14 +++++++++ src/main/state/plugin-recovery.ts | 17 +++++++++++ test/plugin-recovery-detection.test.ts | 42 ++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/src/main/index.ts b/src/main/index.ts index ffc9e432..1e3d9375 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -129,6 +129,19 @@ function appendRendererPluginRecoveryLog(logs: readonly string[]): void { } } +function appendPluginRecoveryDetectionLog(plugins: readonly string[]): void { + try { + const result = plugins.length > 0 ? plugins.join(', ') : 'unresolved' + appendFileSync( + join(app.getPath('logs'), 'harness.log'), + `[desktop] plugin recovery detection: ${result}\n`, + 'utf8' + ) + } catch (error) { + console.warn('[desktop] failed to persist plugin recovery detection', error) + } +} + function isDevelopmentBuild(): boolean { if (!app.isPackaged) return true @@ -639,6 +652,7 @@ async function showPluginRecovery(options?: { slotProviderNodeModulesPaths: [join(app.getAppPath(), 'node_modules')], timeoutMs: waitForRendererEvidence ? PLUGIN_RECOVERY_EVIDENCE_TIMEOUT_MS : 0 }) + appendPluginRecoveryDetectionLog(detection.plugins) waitForRendererEvidence = false if (applyPendingFrontendEvidence()) continue const action = await waitForPluginRecoveryAction({ diff --git a/src/main/state/plugin-recovery.ts b/src/main/state/plugin-recovery.ts index 1124397f..1c778e9d 100644 --- a/src/main/state/plugin-recovery.ts +++ b/src/main/state/plugin-recovery.ts @@ -251,6 +251,23 @@ export async function resolveProfileRecoveryPlugins( } if (matchedPlugins.size === 1) return [...matchedPlugins] + // A frontend loader error often names an official leaf package that a + // third-party bundle creates dynamically. Attribute that exact package + // reference back to the configured root without depending on the app's + // node_modules tree being available yet. This is especially important + // immediately after an install followed by a page refresh. + const dynamicallyReferencedOwners = new Set() + for (const detected of detectedPlugins) { + if (!PACKAGE_NAME_PATTERN.test(detected) || configuredSet.has(detected)) continue + const packageNames = new Set([detected]) + for (const configured of configuredPlugins) { + if (await pluginReferencesPackage(profileDirectory, configured, packageNames)) { + dynamicallyReferencedOwners.add(configured) + } + } + } + if (dynamicallyReferencedOwners.size === 1) return [...dynamicallyReferencedOwners] + // 2. Duplicate loader entry matching if (duplicateLoaderEntryId) { let offendingPlugin: string | undefined diff --git a/test/plugin-recovery-detection.test.ts b/test/plugin-recovery-detection.test.ts index da5a7ed2..46bfc2f3 100644 --- a/test/plugin-recovery-detection.test.ts +++ b/test/plugin-recovery-detection.test.ts @@ -158,4 +158,46 @@ describe('plugin recovery detection', () => { expect(detection.plugins).toEqual(['dsh-full-remote']) }) + + it('attributes a reported leaf package without relying on app node_modules discovery', async () => { + const profileDirectory = join(testDir, 'profiles', 'web') + const dynamicPluginDirectory = join(profileDirectory, 'node_modules', 'dynamic-plugin') + + await mkdir(join(dynamicPluginDirectory, 'lib'), { recursive: true }) + await writeFile( + profilePackageJsonPath(testDir), + JSON.stringify({ + dependencies: { + 'dynamic-plugin': '^1.0.0' + }, + dsh: { + profile: { + bundles: [ + '@deepseek-ai/dsh-base', + '@deepseek-ai/dsh-web-app', + 'dynamic-plugin' + ] + } + } + }) + ) + await writeFile( + join(dynamicPluginDirectory, 'package.json'), + JSON.stringify({ name: 'dynamic-plugin' }) + ) + await writeFile( + join(dynamicPluginDirectory, 'lib', 'index.js'), + 'const UI_PACKAGE = "@deepseek-ai/dsh-client-ui-directory-picker-browse";' + ) + + const logs = [ + '[stderr] failed to apply loader entry abc123 (@deepseek-ai/dsh-client-ui-directory-picker-browse): single slot "conversation.hero.workspace.directoryFlow" already has a registration' + ] + const detection = await detectPluginRecovery({ + dshHome: testDir, + initialLogs: logs + }) + + expect(detection.plugins).toEqual(['dynamic-plugin']) + }) })