diff --git a/docs/architecture.md b/docs/architecture.md index 2060234e0..a1861c77d 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -75,6 +75,8 @@ When a plugin prevents startup or frontend rendering, the recovery path collects Safe Mode is non-destructive: it starts an isolated official-core profile, keeps the Agent and user data available, and allows the user to remove selected third-party plugins before returning to the normal profile. +Whether a profile plugin loads has one authority: the package switch in `profiles/web/.dsh-market/state.json#disabled`, read and written through `dsh-desktop-market-installer/plugin-state`. Harness boot skips a switched-off package before resolving it, and dsh-market, the official Plugin Manager (through the `profileBundlePackageBackend` `switched`/`removed` hooks), the workbench page, Recovery and Safe Mode all record their toggles there. `dsh.profile.bundles` is derived composability: launch projection and bundle healing may re-list an installed bundle without re-enabling it, except that a plugin with a pending removal is never re-listed and stays switched off until its removal commits. Every uninstall path forgets the switch so a reinstall starts enabled. Package ownership is separate: the generation registry owns plugins installed as generations; pnpm owns the shared-tree market and Profile-owned packages, so the generation backend declines those and Plugin Manager falls back to pnpm. Installing a generation over a Profile-owned directory completes at the next launch projection, because a loaded directory cannot be replaced in place. + After interrupted migration/restore gates, startup establishes the enabled market's compatible shared-tree baseline before migrating ordinary plugins. A deferred migration therefore cannot skip this baseline. Market installation keeps `.desktop-market-install-pending.json` until pnpm succeeds and the active package is verified; a partial install forces a retry even when its package version already looks current. The marker preserves the first pre-install manifest for diagnosis. Restoring that manifest on failure is not a rollback of the entire dependency tree. For reused or deferred legacy trees, startup reads bundle manifests and YAML layers through Harness's own profile loader before launching. A bundle that is declared but no longer installed has its declaration removed once and the check retried, since disabling a plugin writes a patch row and cannot clear a manifest-level fault; this removes third-party declarations only, never core bundles, package files, user patch rows or plugin data. Inputs that are still invalid enter Safe Mode with plugin repair controls enabled, and the failing bundle is listed there. An incomplete migration/restore transaction still locks those controls; a newly rebuilt tree retains the existing real-launch/rollback verification. This preflight does not execute plugin code or prove successful activation. The native recovery manager is also opened if the recovery Harness fails, since shared settings can still affect both profiles. diff --git a/docs/development.md b/docs/development.md index 1eb0d4b68..f243634d2 100644 --- a/docs/development.md +++ b/docs/development.md @@ -8,7 +8,7 @@ This guide covers local development, validation, patch maintenance, and target-n - npm - macOS on Apple Silicon or Intel, or Windows x64 -This baseline pins `@deepseek-ai/dsh@0.1.7-rc.2`. Windows packages bundle a target-native Node.js runtime for Harness, while macOS uses an Electron UtilityProcess. Both are independent of the Node.js version used to run development commands. +This baseline pins `@deepseek-ai/dsh@0.2.0-rc.2`. Windows packages bundle a target-native Node.js runtime for Harness, while macOS uses an Electron UtilityProcess. Both are independent of the Node.js version used to run development commands. ## Local setup diff --git a/docs/harness-0.2.0-rc.2-upgrade.md b/docs/harness-0.2.0-rc.2-upgrade.md new file mode 100644 index 000000000..a1fde369c --- /dev/null +++ b/docs/harness-0.2.0-rc.2-upgrade.md @@ -0,0 +1,20 @@ +# Harness 0.2.0-rc.2 升级记录 + +仓库内所有 `@deepseek-ai/dsh-*` 依赖从 `0.1.7-rc.2` 固定到 `0.2.0-rc.2`。上游 `@deepseek-ai/dsh` 的依赖集只新增了 `dsh-experimental-schedule-bundle`,Cordis 系包版本不变。仓库内插件和 PPT 运行时的 dsh peer 区间追加 `^0.2.0-rc.1`。 + +## 补丁处理 + +- 13 个 dsh 补丁(另有 `cordis-plugin-loader`、`undici` 两个)可原样重放,只改文件名。 +- 11 个补丁上下文失效,采用三方合并迁移:以旧版原始包为基准,把旧补丁的改动合入新版原始包,再用 `patch-package` 重新生成。`@deepseek-ai/dsh` 补丁要修改 `package.json`,需用 `--exclude '^$'` 覆盖默认排除规则。 +- 需要人工处理的冲突: + - `dsh-client-ui-agent-preset`:上游移除了 `AgentPresetSection` 的 `useDeveloperTools`,导入/导出/搜索逻辑照旧追加。 + - `dsh-client-ui-chat`:上游让 Desktop 默认使用 `standard` 记录视图,`openUploadedAttachment` 提供者接在新的构造之后。 + - `dsh-client-ui-settings-models`:上游在编辑器提交时新增 `onSubmitCredential`,同步写入 Desktop 的 `footerProps`。 + - `dsh-client-ui-workspace` 类型:采用上游新的 `forkSession(sessionId, onCreated?) => Promise` 签名,保留 Desktop 的 `deleteSession` 及注册接口。 +- 删除 `dsh-client-ui-model-selection` 补丁及其测试:上游 0.2.0 已原生提供模型搜索(超过 4 个模型时显示,按名称排序,带清除按钮)。与旧补丁的区别:搜索不再匹配服务商名称,模型少于 5 个时不显示搜索框。 + +## 验证边界 + +已执行:全新 `npm ci` 重放 26 个补丁、`npm run typecheck`、`npm run ppt:build` 后完整 `vitest`(170 个文件、1539 个用例)、`npm run build`、`scripts/verify-harness-auth.mjs`。macOS 开发构建使用临时 userData 启动:Harness 就绪,客户端完成挂载,Agent 预设页的导入、Awesome preset 和搜索可用,模型选择器可以打开。 + +未执行:Windows 验证、安装包打包与安装、Safe Mode 真机启动、自定义预设导出、超过 4 个模型时的搜索交互,以及市场插件在 0.2.0 下的兼容性(启动时多个已安装市场插件报告 peer 区间不含 0.2.0-rc.2 的兼容性警告,但未阻止启动)。 diff --git a/package-lock.json b/package-lock.json index 23765676d..aee94d41a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,225 +17,225 @@ "@deepseek-ai/cordis-plugin-loader": "1.0.5", "@deepseek-ai/cordis-plugin-timer": "1.1.6", "@deepseek-ai/cosmokit": "1.8.5", - "@deepseek-ai/dsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-acp": "0.1.7-rc.2", - "@deepseek-ai/dsh-acp-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-tool-presentation": "0.1.7-rc.2", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-settings-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-authorization": "0.1.7-rc.2", - "@deepseek-ai/dsh-base": "0.1.7-rc.2", - "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-bash-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-modules": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-store": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-brand-official": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-deliverables": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-model-selection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-plan": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-general": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-models": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-trajectory": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-user-questions": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workflow-run": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-compact": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-basic": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal-round-driver": "0.1.7-rc.2", - "@deepseek-ai/dsh-headless": "0.1.7-rc.2", - "@deepseek-ai/dsh-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-hook-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-hooks-claude-code": "0.1.7-rc.2", - "@deepseek-ai/dsh-hooks-codex": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-auto": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-retry": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-client": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-persona": "0.1.7-rc.2", - "@deepseek-ai/dsh-plan-mode": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-repeat-tool-reminder": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-windows-acl": "0.1.7-rc.2", - "@deepseek-ai/dsh-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-minimal": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-export": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query-sqlite": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-stats": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-telemetry": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-telemetry-otel": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-turn-outline": "0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-badge": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-json": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-time-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tmux-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ask-user": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ralph": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-str-replace-editor": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-loader": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-questions": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-crypto": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-time": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.2", - "@deepseek-ai/dsh-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-fetch-http": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-frontend": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-search-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook-github": "0.1.7-rc.2", - "@deepseek-ai/dsh-win32-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2", + "@deepseek-ai/dsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-acp": "0.2.0-rc.2", + "@deepseek-ai/dsh-acp-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-tool-presentation": "0.2.0-rc.2", + "@deepseek-ai/dsh-anonymous-user-id": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-settings-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-workspace-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-authorization": "0.2.0-rc.2", + "@deepseek-ai/dsh-base": "0.2.0-rc.2", + "@deepseek-ai/dsh-bash-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-bash-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-modules": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-store": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-brand-official": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-chat": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-deliverables": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-model-selection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-plan": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-general": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-models": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-tool": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-trajectory": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-user-questions": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workflow-run": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workspace": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-client-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-observation-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal-round-driver": "0.2.0-rc.2", + "@deepseek-ai/dsh-headless": "0.2.0-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-hook-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-hooks-claude-code": "0.2.0-rc.2", + "@deepseek-ai/dsh-hooks-codex": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-auto": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-frontend-static": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-client": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-persona": "0.2.0-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-repeat-tool-reminder": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-windows-acl": "0.2.0-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-minimal": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-checkpoint-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-export": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query-sqlite": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-stats": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-telemetry": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-telemetry-otel": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-turn-outline": "0.2.0-rc.2", + "@deepseek-ai/dsh-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-badge": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-fork-in-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-in-process-driver": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-time-context": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tmux-context": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-call-timeout-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-str-replace-editor": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-loader": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-time": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-workspace-path": "0.2.0-rc.2", + "@deepseek-ai/dsh-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-fetch-http": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-frontend": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-search-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook-github": "0.2.0-rc.2", + "@deepseek-ai/dsh-win32-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2", "@deepseek-ai/schemastery": "3.18.4", "dsh-desktop-client-ui": "file:packages/dsh-desktop-client-ui", "dsh-desktop-hmr-fallback": "file:packages/dsh-desktop-hmr-fallback", @@ -297,9 +297,9 @@ } }, "node_modules/@anthropic-ai/sdk": { - "version": "0.123.0", - "resolved": "https://registry.npmmirror.com/@anthropic-ai/sdk/-/sdk-0.123.0.tgz", - "integrity": "sha512-Y9oX9mPNGZClHQOFqrWRk43Srcu/UHuPq3rfxxOq7JgW0gi+lJA2MAOK4Ul3k/+AUrwRWFJvd0tK3oC0Pw25dw==", + "version": "0.124.0", + "resolved": "https://registry.npmmirror.com/@anthropic-ai/sdk/-/sdk-0.124.0.tgz", + "integrity": "sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA==", "license": "MIT", "dependencies": { "json-schema-to-ts": "^3.1.1", @@ -364,74 +364,23 @@ "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", "license": "MIT" }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, "node_modules/@aws-sdk/client-bedrock-runtime": { - "version": "3.1048.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", - "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", + "version": "3.1127.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1127.0.tgz", + "integrity": "sha512-IDl/lrPb90aH+pZFHGNDmgH9nAUQj5PlZH1sJ3w7RikctyjHSnY3oNjZhrLoaBoQn/rNK0zsP6OHEqEhj2tdLA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.11", - "@aws-sdk/credential-provider-node": "^3.972.42", - "@aws-sdk/eventstream-handler-node": "^3.972.16", - "@aws-sdk/middleware-eventstream": "^3.972.12", - "@aws-sdk/middleware-websocket": "^3.972.19", - "@aws-sdk/token-providers": "3.1048.0", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.2", - "@smithy/fetch-http-handler": "^5.4.2", - "@smithy/node-http-handler": "^4.7.2", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.977.9", + "@aws-sdk/credential-provider-node": "^3.972.82", + "@aws-sdk/eventstream-handler-node": "^3.972.34", + "@aws-sdk/middleware-eventstream": "^3.972.29", + "@aws-sdk/middleware-websocket": "^3.972.52", + "@aws-sdk/token-providers": "3.1127.0", + "@aws-sdk/types": "^3.974.5", + "@smithy/core": "^3.33.3", + "@smithy/fetch-http-handler": "^5.7.2", + "@smithy/node-http-handler": "^4.11.3", + "@smithy/types": "^4.17.2", "tslib": "^2.6.2" }, "engines": { @@ -491,20 +440,6 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": { - "version": "4.12.1", - "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz", - "integrity": "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.33.3", - "@smithy/types": "^4.18.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.973.17", "resolved": "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.17.tgz", @@ -703,20 +638,6 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { - "version": "4.12.1", - "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz", - "integrity": "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.33.3", - "@smithy/types": "^4.18.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.996.47", "resolved": "https://registry.npmmirror.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.47.tgz", @@ -733,16 +654,16 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1048.0", - "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", - "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", + "version": "3.1127.0", + "resolved": "https://registry.npmmirror.com/@aws-sdk/token-providers/-/token-providers-3.1127.0.tgz", + "integrity": "sha512-Dv2TMWBshJ+tF6ahs2Sy5bh4Iabsd4GAQqVvE9XZmYmnoaVbpS2QKIKE/HRacc7bTtbjEEvP+laGzHvHlf1CiQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.11", - "@aws-sdk/nested-clients": "^3.997.9", - "@aws-sdk/types": "^3.973.8", - "@smithy/core": "^3.24.2", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.977.9", + "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/types": "^3.974.5", + "@smithy/core": "^3.33.3", + "@smithy/types": "^4.17.2", "tslib": "^2.6.2" }, "engines": { @@ -762,18 +683,6 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.10", - "resolved": "https://registry.npmmirror.com/@aws-sdk/util-locate-window/-/util-locate-window-3.965.10.tgz", - "integrity": "sha512-ycwH6Zd2GhuSqdXX9ihbCjeGTB6xOJs+O3+Jb8/zDG9978XU80qs75dfkPJRMNKe5MvBZPuNeFpd4JZKPoUF4g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/xml-builder": { "version": "3.972.41", "resolved": "https://registry.npmmirror.com/@aws-sdk/xml-builder/-/xml-builder-3.972.41.tgz", @@ -1389,88 +1298,89 @@ "license": "MIT" }, "node_modules/@deepseek-ai/dsh": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh/-/dsh-0.1.7-rc.2.tgz", - "integrity": "sha512-SQFhriLvza8GnFApnC5/32AgpcyKxrWnYXhvwDOLJdgWpkCX2EexyR9c8kCkMITJXnFLEN3Qb2CEh0W36vkLyw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh/-/dsh-0.2.0-rc.2.tgz", + "integrity": "sha512-EAJ3gPNcVt/uv8X19PMm9NkVhWgT7xXNMk0UKCVm+IQ5rpSQOcsMUa0HWlnYYVybKMsccjcRB21vVVsaXQ6IdA==", "license": "MIT", "dependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-include": "~1.0.9", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", "@deepseek-ai/cordis-plugin-timer": "~1.1.6", - "@deepseek-ai/dsh-acp-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-tool-presentation": "0.1.7-rc.2", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-base": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-compact": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-basic": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-agent-team-profile": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-auto-review": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-voice-input-bundle": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal-round-driver": "0.1.7-rc.2", - "@deepseek-ai/dsh-headless": "0.1.7-rc.2", - "@deepseek-ai/dsh-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-hooks-claude-code": "0.1.7-rc.2", - "@deepseek-ai/dsh-hooks-codex": "0.1.7-rc.2", - "@deepseek-ai/dsh-http-proxy": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-client": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-persona": "0.1.7-rc.2", - "@deepseek-ai/dsh-plan-mode": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-minimal": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-office": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-time-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-tmux-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ask-user": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-present": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ralph": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-str-replace-editor": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workspace-dependencies": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook-github": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.2", + "@deepseek-ai/dsh-acp-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-tool-presentation": "0.2.0-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-base": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-client-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-agent-team-profile": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-auto-review": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-schedule-bundle": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-voice-input-bundle": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal-round-driver": "0.2.0-rc.2", + "@deepseek-ai/dsh-headless": "0.2.0-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-hooks-claude-code": "0.2.0-rc.2", + "@deepseek-ai/dsh-hooks-codex": "0.2.0-rc.2", + "@deepseek-ai/dsh-http-proxy": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-client": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-persona": "0.2.0-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-minimal": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-office": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-time-context": "0.2.0-rc.2", + "@deepseek-ai/dsh-tmux-context": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-present": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-str-replace-editor": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workspace-dependencies": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook-github": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "commander": "^15.0.0", "js-yaml": "^4.2.0", @@ -1481,25 +1391,25 @@ } }, "node_modules/@deepseek-ai/dsh-acp": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-acp/-/dsh-acp-0.1.7-rc.2.tgz", - "integrity": "sha512-pYA/KH4ks/q/S82PEwdpGQ+Bdmyx8G4aspd2N0BVM9KAfupEszrgZyfNX7L0+hvy4sYTjP5LyUr6/2QmQVhXiw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-acp/-/dsh-acp-0.2.0-rc.2.tgz", + "integrity": "sha512-UbejJaK2DycmUbIw+N3LCdcENeD7I3fgs5xvieHQNUjEK4PKnmv8Z2em+74FG2ltKZs9l77PL3AWO0d4KcfPJg==", "license": "MIT", "dependencies": { "@agentclientprotocol/sdk": "1.4.0", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-client": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-client": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-token-meter": { @@ -1508,13 +1418,13 @@ } }, "node_modules/@deepseek-ai/dsh-acp-app": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-acp-app/-/dsh-acp-app-0.1.7-rc.2.tgz", - "integrity": "sha512-7Km0Fchvx/PoL3/By4M6ykKkrmmIgelXq/1l0624Ixt3JgTtFNSgko3dpL/32Hv/a5Fn/wEsuujBHzmcBBcZ7Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-acp-app/-/dsh-acp-app-0.2.0-rc.2.tgz", + "integrity": "sha512-4eL+Cj/kGKvf1VSEE8NFmrh+uELCUUAFesaFh0NMTxUWO9HP8f71qjkWvNl2tUcNCP9DiIxSzNTmV1PPCZ0ovw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-acp": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", + "@deepseek-ai/dsh-acp": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", "commander": "^15.0.0" }, "peerDependencies": { @@ -1522,21 +1432,21 @@ } }, "node_modules/@deepseek-ai/dsh-agent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent/-/dsh-agent-0.1.7-rc.2.tgz", - "integrity": "sha512-9U/zHZvZqRR5S2FD9fjjAuoMh+WfDan+bE/cLBLSLpqftjZ0FhIlEBK99yonUkNkGemyHiH/lL3jCKYw35ahJA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent/-/dsh-agent-0.2.0-rc.2.tgz", + "integrity": "sha512-CUkbU+c1G0ETXkpoLkpAFo5midz66FQGtlgQOP9pzvU9H3zJQVl4H5LrhhGVbEXKLFgdbtQiOynEW8hpWn3y0Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-workspace": { @@ -1545,68 +1455,68 @@ } }, "node_modules/@deepseek-ai/dsh-agent-default-model": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-default-model/-/dsh-agent-default-model-0.1.7-rc.2.tgz", - "integrity": "sha512-Ilvgi3Dsogn6X3GTd6ke8MrWV1jBTLIVep7xji7own/TVdhtu7pP7Zs0mFYDTuuP1INGGrcnS/dHEPayNyRm+A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-default-model/-/dsh-agent-default-model-0.2.0-rc.2.tgz", + "integrity": "sha512-m0obV++p2V7nJp0X/04VntPisDUcNQfuyV+AuG9XhUxdm3tvFvBtY6wgNjAcqE2GMLwFVnZovCnO7GqnhBbB8A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-config-editor": "0.1.7-rc.2", + "@deepseek-ai/dsh-config-editor": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-instructions": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-instructions/-/dsh-agent-instructions-0.1.7-rc.2.tgz", - "integrity": "sha512-q6V4d4XIEmLiHgNg/z3jYV5K0f1qHvpuq1fatEHaLjTCZPXy4p3O7ge+PKQSoB8I/Gxy8HGXthZ4oJPXro5Klw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-instructions/-/dsh-agent-instructions-0.2.0-rc.2.tgz", + "integrity": "sha512-jasnwitU5efx5WT8X0OBapbdfssUdo+YpK7aquN7tSItCgVodN5RmGjm83zNw9awvlXjVlt7QMYeRcFUfZrZ6Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-loop": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-loop/-/dsh-agent-loop-0.1.7-rc.2.tgz", - "integrity": "sha512-X+fegYY7yITQ5kAIayFrylMY9Vg6zHFLnP83rJVZ89juF9EBRm8soGAJHvyjat+mdk5a1WViWYdIPM0t9g/glA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-loop/-/dsh-agent-loop-0.2.0-rc.2.tgz", + "integrity": "sha512-Ayi1L7s1LIJAq3iCCRFDCGM9Y2lriGlV6nblIYXhKrq+J8bUFQtOdfBYNE1N39WcYb3CwSvTNHDtzZ4oW6MZ6A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-preset": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-preset/-/dsh-agent-preset-0.1.7-rc.2.tgz", - "integrity": "sha512-T3HKwuNf9S+FxZilyHw34bXilX+a8GqXfaoL8QqShghUyNYLLuAI9lUDdNpADf7huuTvBA1TO+ulUmVXAN/QhA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-preset/-/dsh-agent-preset-0.2.0-rc.2.tgz", + "integrity": "sha512-hrRWLO0ow0lVWqDL0nWPPZqsjUR+J05JgDoTuz1qJrpvGbXMykayOx+ZkKWy64ErkqW2pMIgT4JGYeOPoH7kmA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -1614,16 +1524,16 @@ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-preset-registry": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-preset-registry/-/dsh-agent-preset-registry-0.1.7-rc.2.tgz", - "integrity": "sha512-qpB4H6uWuPx/Jqm2sLbNJPrWOtVhk3FLK+5PdqLBHqEDfCmpBZCBm6lUdSWsmnKmPnHiBeHSVZO9AZl9qJJlHQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-preset-registry/-/dsh-agent-preset-registry-0.2.0-rc.2.tgz", + "integrity": "sha512-Awdhxsnm85ZrQASUc/fLpBHnggAnI2ar7RIJL++Lcy04Hx9q/INqJlFfCKVL68ugZGh14iJNy5/OM+ZfcmbjUw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "js-yaml": "^4.2.0", "zod": "^4.4.3" @@ -1632,80 +1542,80 @@ "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-include": "~1.0.9", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-agent-tool-presentation": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-tool-presentation/-/dsh-agent-tool-presentation-0.1.7-rc.2.tgz", - "integrity": "sha512-xKfJLdNhh91bO52qCAl9qCGJkEbuZdHg7sWGfY5dB+RsXxOGXxZwXQUOnPgbKS54f3Ydks93SmphzYKJHBSdxA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-agent-tool-presentation/-/dsh-agent-tool-presentation-0.2.0-rc.2.tgz", + "integrity": "sha512-TDoipfVMvuuwZglKn8eW3oVCRcMb10A1SPgj8xn753F6IWo4sDnlQ5I3/+xZ5lNfWowKJcQlBCobokHSAs/TIg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-anonymous-user-id": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-anonymous-user-id/-/dsh-anonymous-user-id-0.1.7-rc.2.tgz", - "integrity": "sha512-krpu7wg/5+5MjeYml8TfViV6nXm3hzPvTBIa70tjcUTyLJidXmchwDr65HqYE2Mv+tRlrkGKZr6a+iOpdscEug==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-anonymous-user-id/-/dsh-anonymous-user-id-0.2.0-rc.2.tgz", + "integrity": "sha512-/VDAUjcv/xj+iPDrTTt6rC/+jo8r/H8WXEQPmjbB8W9q/cDnlp3KzM87Dy/6jT085G7a3BjsXTk0K6Bol0AcTg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-account-controller": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-account-controller/-/dsh-api-account-controller-0.1.7-rc.2.tgz", - "integrity": "sha512-0dQuFlmeoOcxvVg9UooR5ZztCZlLBq7V/APVTErIgZaMTbwV5myJSxlftc92Y3gxAM6lCpyjYa2eAq1mT09oww==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-account-controller/-/dsh-api-account-controller-0.2.0-rc.2.tgz", + "integrity": "sha512-auwEoRLEBcWbtdxpEoeQjeQ72dk9igh/fNJHEVPbmDLK7oXR+Yxn+hTxoT3v4IsLfQjKKljeEN4zz6aNgdbqjw==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-gateway": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-gateway/-/dsh-api-gateway-0.1.7-rc.2.tgz", - "integrity": "sha512-CnM2kk7UQc/7MSEgNUG6V1CeWYoG7cS1b/IF7tpYEQihuswXGaBVPBsQSMZMAiU8uMyUFTBKm4POSJ/J6QiT2Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-gateway/-/dsh-api-gateway-0.2.0-rc.2.tgz", + "integrity": "sha512-syeclzuoVpGor6JyDHcxg2Iwy9oeM76y4dK8abY19x1s/eMgJMCO3kL/IeKPg+d0Go7aHPTEyWRvCmfkA35U1g==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "ws": "^8.21.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2" + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-job-controller": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-job-controller/-/dsh-api-job-controller-0.1.7-rc.2.tgz", - "integrity": "sha512-yO3bQ3fQ5G/SG3Mm/3kQHIB7YaXjSRufIvOtBWV321SN1NOrCuhncIWBzE7UmsnaqxhGGzNQ5lIUILtIxy1aGQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-job-controller/-/dsh-api-job-controller-0.2.0-rc.2.tgz", + "integrity": "sha512-AAAi3SaeLUHyz/qbY5iiGnU9T+d44z82b5oyQaf6HdU8tnHe7dJsO/y2YRRB52AuS+KWpXpwka1qW5XT8/9N6g==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, @@ -1714,63 +1624,63 @@ } }, "node_modules/@deepseek-ai/dsh-api-remotes": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-remotes/-/dsh-api-remotes-0.1.7-rc.2.tgz", - "integrity": "sha512-MYPFy7wb9wJE3CkeFum2aEHDaDTy8YIkRSJWIpkpsYTKSEFr2IZTU6TH8dFQf8eF58WAHr0YUCA0t7p/uQJPow==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-remotes/-/dsh-api-remotes-0.2.0-rc.2.tgz", + "integrity": "sha512-mfDctTtpM26rS5O0upviPofuyiiNCkaSgRifc5wgaCiBPJ5rG1FE2lxMQSfUiBASs7s+xXR5JVZlDrrZCzYTLg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-scope": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-session-controller": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-session-controller/-/dsh-api-session-controller-0.1.7-rc.2.tgz", - "integrity": "sha512-PB6Sk3h9g0ZGeIxUNcnZJIdWQxvhV4dh9g7KOd+Wu2YyqnA7TqweU9JRKitrDb4hYB1TFTDImGmdcAhiiMhbEw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-session-controller/-/dsh-api-session-controller-0.2.0-rc.2.tgz", + "integrity": "sha512-WDmk1aWOHbzIKRRt7rtHDxSupw/XLB+BgMyKHlzB7QGinXrK/Dnht6JIdgE1iSShnf1RNANGAGh2G94VzDpl5Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "mime-types": "^3.0.2", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-file-upload": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-time": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-file-upload": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-time": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-workspace-path": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -1785,9 +1695,9 @@ } }, "node_modules/@deepseek-ai/dsh-api-settings-controller": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-settings-controller/-/dsh-api-settings-controller-0.1.7-rc.2.tgz", - "integrity": "sha512-6CWdSCOSjNx07WTlat3Oq2UIMlT/tqtMC9CHqIbLFEmumQcoFFIyr34IFEMyWxN8Lwf0yL5s5wJ6KcF9UOLb5Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-settings-controller/-/dsh-api-settings-controller-0.2.0-rc.2.tgz", + "integrity": "sha512-+tWsZLldhUVPwEKhz3o/oYVMEjnFndYwaDJnpN5PqeuEctU3PgZ/xYd5QxH44Ob/g5ROokHAkUWP8wER7+EwWA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -1795,23 +1705,23 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-terminal-controller": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-terminal-controller/-/dsh-api-terminal-controller-0.1.7-rc.2.tgz", - "integrity": "sha512-SxsRrFEbi6uEmu3QHnus/pDPIUzlh40hwKonjomLZoZeceW9AjAo7G0kvU2xNQDX6RpieayOhYdSVyQjBRIQHQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-terminal-controller/-/dsh-api-terminal-controller-0.2.0-rc.2.tgz", + "integrity": "sha512-Cn+kZR2kHG2JH+e5eU2J7aS31c4UUGNcEkSfUizJ5SPLEa413qyFKlvVMU0DhITpljJSarpxrG6tfGqsF6mX1A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-lazy-require": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-lazy-require": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "@xterm/addon-serialize": "^0.14.0", "@xterm/headless": "^6.0.0", @@ -1819,39 +1729,39 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2" + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-workspace-controller": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-workspace-controller/-/dsh-api-workspace-controller-0.1.7-rc.2.tgz", - "integrity": "sha512-BUeoGq1didny2GqiGsCDfQTp9QF+oeAzRCG3z6gjbkQ4AGzOWw5QoSS7eknI+BU5vUq0zrJoVPR1gOaKK/9fbg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-workspace-controller/-/dsh-api-workspace-controller-0.2.0-rc.2.tgz", + "integrity": "sha512-3CoKQUgGxJ8yH++j/HurB4ZTrVLMZXS0cMm8Fb3ZaMB1dTseroaMoepvnBtzJF1hQx6YArNu8XvXO5qPRA6Fgg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-api-workspace-files": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-workspace-files/-/dsh-api-workspace-files-0.1.7-rc.2.tgz", - "integrity": "sha512-ImRQDxH7s4imG+G3EgT3nNepUomobwriGZtf+V39hlimytIdFcV9lZjzMkx9sQgz/V+3ExovAcvr7TEnu8EA6A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-api-workspace-files/-/dsh-api-workspace-files-0.2.0-rc.2.tgz", + "integrity": "sha512-X2mKXzaWOjTv2rBvZl4GyKsB63ZUHJZaq9KX2r+yaMJfguxMkWMCx0to6bdp2BPrzaD826X1D672hFY6Ps/0jA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, @@ -1860,13 +1770,13 @@ } }, "node_modules/@deepseek-ai/dsh-app-boot": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-app-boot/-/dsh-app-boot-0.1.7-rc.2.tgz", - "integrity": "sha512-d0QWMMXxT6kICO9QRrXTqJRKP6bWNes7SVGJK6OOEzX6Ua9mzCx1KghPIf7tjW/ZmX0b8n1FoySr4IHElBkrOg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-app-boot/-/dsh-app-boot-0.2.0-rc.2.tgz", + "integrity": "sha512-WvgNhBHSj85Z7u9vC1oQr9C7yZQ/L/JS+eVK4bueWEkaoqdEna504V5bi7qtWXxAz5JkeVZTy1sX86p8XG7LJg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-package-manifest": "0.1.7-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-package-manifest": "0.2.0-rc.2", "@eslint-community/regexpp": "^4.12.2", "ajv": "^8.20.0", "js-yaml": "^4.2.0", @@ -1879,202 +1789,203 @@ "@deepseek-ai/cordis-plugin-group": "~1.0.4", "@deepseek-ai/cordis-plugin-include": "~1.0.9", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2" + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-atomic-write": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-atomic-write/-/dsh-atomic-write-0.1.7-rc.2.tgz", - "integrity": "sha512-gdUVkVv5DXBgnEDB1Dh/lL+HV/8mKR3AGUqNjLhQJSEqE9MIYyiHC+3zwzaWjeWhiTdLXd5rkA4HVCiS3KIcUg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-atomic-write/-/dsh-atomic-write-0.2.0-rc.2.tgz", + "integrity": "sha512-CezxdPmADDnOyG/ed9R18In/NifnLgu8hfJEjTBKxd7kbu0XXenyqnk25jeWD6bJYwu8AWAwcpVFuf438EJPJA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-attachment": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-attachment/-/dsh-attachment-0.1.7-rc.2.tgz", - "integrity": "sha512-g2SQ12Ki1l28T/H+fZKtSWDFF5Y1gavcKVBb2X4eOVX5uT5Jwumx+9Svelp1pHaknuAE1N2Yt9tMwj2quMkhDg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-attachment/-/dsh-attachment-0.2.0-rc.2.tgz", + "integrity": "sha512-asUDLv+mfb30vjjlQtMI9aBnC+kmPoUxS1ooadhwAd8wssIlLetq97nzC5W1qd0GQGwZtPG/gpljVAMcSwPr1g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-attachment-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-attachment-local/-/dsh-attachment-local-0.1.7-rc.2.tgz", - "integrity": "sha512-Z50ktA9dTTR6DfjwoRQac7BBfkCvyE+FUcbj68u3R0d4lZpYQ9a9r4uYrSF57wrxZCVjYw48HbTYegxvyFh5mw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-attachment-local/-/dsh-attachment-local-0.2.0-rc.2.tgz", + "integrity": "sha512-VDyHGvKoN59D+3t3rwkZYNFJJJ1PbCV/6z9ngL5lErd1H98NqmFqFzGgGypGPvBGdmi42ckhVldBPq8ZJWzKcA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-lazy-require": "0.1.7-rc.2", + "@deepseek-ai/dsh-lazy-require": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "sharp": "^0.35.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2" + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-authorization": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-authorization/-/dsh-authorization-0.1.7-rc.2.tgz", - "integrity": "sha512-20hFGce+wzzWQ9qG2BfLeO26550HVVEe5ApELvmA6J7QUVsHkGWQsldKsYUzZ6AkgzgeUz4mwuOFYDf0r4timQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-authorization/-/dsh-authorization-0.2.0-rc.2.tgz", + "integrity": "sha512-hcvguIxKa6P5zhb6API9gLNLveQ2H2dXUo8vf2aTzoc9J4madUFltR2suUDfvusgN13qCWtbbUcgWdZt79uVuw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2" + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-base": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-base/-/dsh-base-0.1.7-rc.2.tgz", - "integrity": "sha512-LYwclGWi0SEZh0ZjnlJT/kHaOV0JDuI1mCHFCOQthYlabPp90Ohba+7wdIRX1oqcQN6erFzsQrrV1WFf+NhRYg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-base/-/dsh-base-0.2.0-rc.2.tgz", + "integrity": "sha512-AclHClefnPmUe2qoPrKMUvauA/KelYevYlxFdHLZGcPRqrDH+D21HyrwJmj4f7Iu5OO0IqfjB4zBOkwMp5h1ug==", "license": "MIT", "dependencies": { "@deepseek-ai/cordis-plugin-timer": "~1.1.6", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-authorization": "0.1.7-rc.2", - "@deepseek-ai/dsh-bash-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-compact": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-basic": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-image-offload": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.2", - "@deepseek-ai/dsh-config-editor": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-account-platform": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal-round-driver": "0.1.7-rc.2", - "@deepseek-ai/dsh-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-retry": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-plan-mode": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-ptc-runtime-node": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-repeat-tool-reminder": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query-sqlite": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-telemetry-otel": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-badge": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-json": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-present": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ralph": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-loader": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-questions": "0.1.7-rc.2", - "@deepseek-ai/dsh-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-fetch-http": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-search-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-authorization": "0.2.0-rc.2", + "@deepseek-ai/dsh-bash-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-image-offload": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2", + "@deepseek-ai/dsh-config-editor": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-account-platform": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-observation-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal-round-driver": "0.2.0-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-otel": "0.2.0-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-ptc-runtime-node": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-repeat-tool-reminder": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-checkpoint-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query-sqlite": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-telemetry-otel": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-badge": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-fork-in-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-call-timeout-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-present": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-loader": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2", + "@deepseek-ai/dsh-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-fetch-http": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-search-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-bash-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-bash-local/-/dsh-bash-local-0.1.7-rc.2.tgz", - "integrity": "sha512-8InocMSTIzUGuKXnSp05pTBfeQmUdC+L5T1I+2iESzPtrNh/F9jLQeCPknWZ7ren/XwDki79J9EqYaLE1vNiUg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-bash-local/-/dsh-bash-local-0.2.0-rc.2.tgz", + "integrity": "sha512-38cihtu0JSBfj4GAH8pPX0v2tPDZBcPbgX9CjjMTPbhNRF30C+Ncg5zhJo5weaHQR0RnqOIJVuDHxcJ3yT50gg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-bash-sandbox": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-bash-sandbox/-/dsh-bash-sandbox-0.1.7-rc.2.tgz", - "integrity": "sha512-M4laxtYLPkXlvbtMpLm4hTWKmBb1xJuNMma/eA+xYTNdjHtV/ZJPxiKMVe1crjBp/dKuMTJR42p8rizLM1vkNg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-bash-sandbox/-/dsh-bash-sandbox-0.2.0-rc.2.tgz", + "integrity": "sha512-PNTarU5/b5rmkpMVqk5iHq12dktFL68B7dGofWoG9S3xKe7QXTmjQCZXPxyfMqEujtTxDE8HyLcLDE+46Nlchw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2" + "@deepseek-ai/dsh-bash-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-brand": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-brand/-/dsh-brand-0.1.7-rc.2.tgz", - "integrity": "sha512-cvcvlNRuiFqZNNqyxdu7wcpiBjd9xa/0MpuhRvee43zBp9uED2p5JolZr5/2EKJf57gYx9k9bedb+Zbyiqnpkw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-brand/-/dsh-brand-0.2.0-rc.2.tgz", + "integrity": "sha512-A5XlN4tIgP0qObkYFhcZ7Oz/tM2oESEZqLwS0Qq+sM1ivGx6o4AMPgJdfKQlwLzqk0cMLNtAaVBHfiYoElt4lw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-chunked-list": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-chunked-list/-/dsh-chunked-list-0.1.7-rc.2.tgz", - "integrity": "sha512-fMpkkFPG9I9/wlQygbyPAdGKMK/RnD1p7/czm2hbzyAZtr/kDz+RThOWtlV1VDZ23NWkps98qTwlhM3NJ3LkXg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-chunked-list/-/dsh-chunked-list-0.2.0-rc.2.tgz", + "integrity": "sha512-3KJhtGoWL39UIY6dyQ/FNuwRssPzxf3Abe6BuYdGwEh8FJcEG1JgSFIltKL+mfhbp4idV3cF7EnTVutGlurMDw==", "license": "MIT", "dependencies": { "zod": "^4.4.3" @@ -2084,39 +1995,39 @@ } }, "node_modules/@deepseek-ai/dsh-client-connection": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-connection/-/dsh-client-connection-0.1.7-rc.2.tgz", - "integrity": "sha512-Wc2ANM5NO3Ri+p8wBoVnPxTYxz++zYSuEoVOhd498WMY779w0RCgWfRzHekPY5ftJX/G02qzWNHe0yBIoTpXXw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-connection/-/dsh-client-connection-0.2.0-rc.2.tgz", + "integrity": "sha512-eL66YSZ0+HlWRzAPGU8jtCLd322WXBoMGN1g1OsM5T7Skqbbo9hSwV1FO3Lm0IcMZR3Y07sGPQBwZwf/l66T3w==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-scope": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-client-file-upload": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-file-upload/-/dsh-client-file-upload-0.1.7-rc.2.tgz", - "integrity": "sha512-jjXlNn0pANLGO+VzW1ABmtGgM/9z6rvg/Dj4y1LVliGQD5bQBw+xCp2faKjpe3C/LEu2lAv9FMjUjB9YrukzVw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-file-upload/-/dsh-client-file-upload-0.2.0-rc.2.tgz", + "integrity": "sha512-+uU8KHjLyHoMpslnRQZp02BtBSSBvRsJdYlH2vnVYE00b86fVtrBOvtzcF3jv1f7b0pYbph5z6ikIH8hvhzdOQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-scope": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-client-hmr": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-hmr/-/dsh-client-hmr-0.1.7-rc.2.tgz", - "integrity": "sha512-5Qx01rqP8uq3l2hKW3bCNPzvNZ0KdAQHM/KDGSX24LCgYQRejV4BC7VOacMRCZFZAOLVU+RlFnPXIucF6v0C9g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-hmr/-/dsh-client-hmr-0.2.0-rc.2.tgz", + "integrity": "sha512-hE/+LDYFelYY5ayisx1UkBVXe7hygvgI7Ts9IyJa7nZNoppsChoZQbf5iHMO/ogS5efeeyy/yS0nKOzJB9RYPw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2126,9 +2037,9 @@ } }, "node_modules/@deepseek-ai/dsh-client-locale": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-locale/-/dsh-client-locale-0.1.7-rc.2.tgz", - "integrity": "sha512-zkRt/JrBvS7w1TPi/dOo0QCqjkcAApq7nNoeIL2lX0VlzwHD86Hrg/n/YJJlg1i0nvOEtZDibR9FGwa/X2wpvA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-locale/-/dsh-client-locale-0.2.0-rc.2.tgz", + "integrity": "sha512-JdZPMv/8hLOQNxHk1dM6YbNbChB5S6lGaGAPtraP0670i9Tb4dX+yKOAUgkS7nSoO5TYZztXgI1kgcEregRPJA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2138,31 +2049,45 @@ } }, "node_modules/@deepseek-ai/dsh-client-modules": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-modules/-/dsh-client-modules-0.1.7-rc.2.tgz", - "integrity": "sha512-+ePHhpZr3H7bWbbQxiYq/B4oINmot11O2A+IeVMmkwMGClGi2ZumO5BWuIYZLlS1Aof9ANSez+uoX5BeVjqAdg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-modules/-/dsh-client-modules-0.2.0-rc.2.tgz", + "integrity": "sha512-eDF7dycEl8QJ8CAZTSTz+dZh2PFHsf/ESAsjWjhcHxueLji7LF8/MY54PgU051Ho0V7zQKCAAeFWK2/GyIpgIg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, + "node_modules/@deepseek-ai/dsh-client-product-analytics": { + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-product-analytics/-/dsh-client-product-analytics-0.2.0-rc.2.tgz", + "integrity": "sha512-gAxwso7bK4S+5M4KURB/JzUWX55z+gZBSNpzy6dyiIwUg6SZo536hVUjzmb+Tlu72vULgZ4K/uO2zO0d1WcceQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/schemastery": "~3.18.4", + "zod": "^4.4.3" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.4" + } + }, "node_modules/@deepseek-ai/dsh-client-resources": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-resources/-/dsh-client-resources-0.1.7-rc.2.tgz", - "integrity": "sha512-gbfYcakpo6BhOH4/XAiNVYrpHroH3xJhSb0LUOwPLhZEOFBgDAyAy1dtlBj+o+CNPraI3j+8SCt/oHVOu5y6mw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-resources/-/dsh-client-resources-0.2.0-rc.2.tgz", + "integrity": "sha512-fij1KTx7rBMyZHHnghZyXYWGpli9j3KrcfDBq+XhzNY2n5nidoIMIPj647DTajH+CaHFrb7f0Btj2/7Rs0d0Ng==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-shortcuts": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-shortcuts/-/dsh-client-shortcuts-0.1.7-rc.2.tgz", - "integrity": "sha512-yM52NmuHZcDkV1pbvD9f+Me5W+SgMz2jc1K8Iu9VZOgL5sy4EtMre6kPoHYMT4g1kcYpbVaqyygDXjA/guRW/A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-shortcuts/-/dsh-client-shortcuts-0.2.0-rc.2.tgz", + "integrity": "sha512-/mgW9+qbx/XMFODH58vtBsMeZr0lFE4i+mZWqGXfHbmwG9b5POBWi6QQOcCB6tQGE1TPSeiWC8GbCJL7lGAYSg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-crypto": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { @@ -2170,54 +2095,54 @@ } }, "node_modules/@deepseek-ai/dsh-client-store": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-store/-/dsh-client-store-0.1.7-rc.2.tgz", - "integrity": "sha512-8nF4gqy/3yvSN3KsuHX61DVP1Z2YjC93wkB2uGVS5xg4iyD1KgCqWB2S+fVAdQ7END9PDzWhZTk71AYnkSh7LA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-store/-/dsh-client-store-0.2.0-rc.2.tgz", + "integrity": "sha512-unHIDNnHudDIj05W99m+dVPXLYy7qNvMJ/D5FWb7cov0CbiQvliqbvFeMAU6LzC+u3vTkVJgSMIAwAVdQgYHEA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-agent-preset": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-agent-preset/-/dsh-client-ui-agent-preset-0.1.7-rc.2.tgz", - "integrity": "sha512-dE0Ua4Ke8yDo31BPEdTK+a3mrbuTRPLbdEK3LDWwUYQ9L0V2vYjHikQle4p/Asmx2Z/g2P87Wyx/016CnXHFNw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-agent-preset/-/dsh-client-ui-agent-preset-0.2.0-rc.2.tgz", + "integrity": "sha512-G4d4OFNoqQoLrIHDu4yy0xkvJhtZdTDPAEglmAkfDt03I6ypZxNO/cer6hasDne+gqUw7iwQB35Hvo1Gg1gAFw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-approval": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-approval/-/dsh-client-ui-approval-0.1.7-rc.2.tgz", - "integrity": "sha512-zM8k2o504kLz9jDzqKze36W6Opb1voDwsO+YgWFmTrGQIjMXLmxdyuLxbMco9ER4cygUeJf8weH92FKQDw5CeA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-approval/-/dsh-client-ui-approval-0.2.0-rc.2.tgz", + "integrity": "sha512-r85w95YxSwl/VlwAp5G9Y984KetesWGwsoV7ZYt0lV3gAo69GwH05EkUsZr1YmrQGdpu+hHUx4GOc24Qvgdz/g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-attachment": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-attachment/-/dsh-client-ui-attachment-0.1.7-rc.2.tgz", - "integrity": "sha512-PG5bsHJ6WioVegi8K7GuXsoPZ3wd4rQBZ9OwSPjB4L6G2Zzln3UuBlNuAVpaTJL8lvxB5IBnUdw++4yQ8DvAWw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-attachment/-/dsh-client-ui-attachment-0.2.0-rc.2.tgz", + "integrity": "sha512-KwJC64HYqhsT/evoYZ2EjueCRWTknwTLVTth2LrL5XXtt5tMkDYDLgr3D/SHbb6gRpmtAgEClskj3kVYJUQ6fw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-brand-official": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-brand-official/-/dsh-client-ui-brand-official-0.1.7-rc.2.tgz", - "integrity": "sha512-pdWYHX/xRFMIWkT+IfemhTTOZVAJiA3CAlesUJpTDhbu6MEXQcPeBnsd3iPKswzCiVSPanvaj9Vv/057oXWfUA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-brand-official/-/dsh-client-ui-brand-official-0.2.0-rc.2.tgz", + "integrity": "sha512-R0rHBtD1YWEDU0X7Tu+GvTyj1zqJUkvZmu08wXAyNGlCWvlOWyMNQyBmOjqDM7tBDuNh9yQlKw9WpcHtb0zPGw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-chat": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-chat/-/dsh-client-ui-chat-0.1.7-rc.2.tgz", - "integrity": "sha512-mH4Womiv1jFMdhNQQvvlF2t8T7rcQNDuR5e2YSJvJdVpZ2+9CxZOd/56hBURTciYX9p8QnCe+Qb1zj/A0ilWqA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-chat/-/dsh-client-ui-chat-0.2.0-rc.2.tgz", + "integrity": "sha512-1rsCHGvWNLaO6B6t1fJa8Qsov0OvJC6bnhpyK2NmDCaLu9uzb4dC4DxCH3OzmJwJkEByHrb3j3l9kbpaV+dTCw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2227,18 +2152,18 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-commands": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-commands/-/dsh-client-ui-commands-0.1.7-rc.2.tgz", - "integrity": "sha512-bw6+g4uSNYMoRtkzE8gqzRK6F38Qxa5HQonGf1KcAGWkQ79k8MtTcE9MOS++SBEr4pxokuwRncjPH+Ywjh/m2w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-commands/-/dsh-client-ui-commands-0.2.0-rc.2.tgz", + "integrity": "sha512-2bbQT/isVZX+xr+Wd2FA8Wfr3Ltomt3eFapvH8EGU2Ygf9bF+msGVm3DzqfHkTAUcU6C5n6WczzGdmnFUFk33g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-conversation": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-conversation/-/dsh-client-ui-conversation-0.1.7-rc.2.tgz", - "integrity": "sha512-bPC3RNBF2TgMwoueaRuFLMIrRVA/k9iqZQ6Lre8GPpn5c8uhmtTV5D1TlKNHQPNtnKv/Gn5BGw2Kh16ItbY83Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-conversation/-/dsh-client-ui-conversation-0.2.0-rc.2.tgz", + "integrity": "sha512-Y1eWKVeh84cbB0fcV0MFOMUHBeptlzBCzsw6xslZS7p1a8l9PeFcjx5ZVTkKFuFMCfwEHWTeV9HcYqWLYH0bhw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2248,133 +2173,133 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-cordis": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-cordis/-/dsh-client-ui-cordis-0.1.7-rc.2.tgz", - "integrity": "sha512-v1ktLqwVQJq1Mjcml4jZpFeN0VcbePH2Pg7IkI25bAHaF2fn2afsf8hRYJdR2nfL9Us0mIwlo6/M/EkkfUGIXA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-cordis/-/dsh-client-ui-cordis-0.2.0-rc.2.tgz", + "integrity": "sha512-5ScFoWmk2S0+e4a0ZxthBicpE53edBprpA3j86wdpaYbK6wAQI3nzlTYAvtuIfC+rLIBNm0mQR+GFabKnFJkpA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-deliverables": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-deliverables/-/dsh-client-ui-deliverables-0.1.7-rc.2.tgz", - "integrity": "sha512-/7eOaMsDJQgOYtPRHFHoyY9wwDOgM0af8Ihy8EtvnQjr7VqeluJvX2B3L55wOW0aBnCp0llHL4MZlYa+f7Z3SA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-deliverables/-/dsh-client-ui-deliverables-0.2.0-rc.2.tgz", + "integrity": "sha512-zsPP0ZB38O+otSib61XM37jUeUWlfXMHMUO3upb2O9Rz0RhAuXyjrk7/0ZLCAtN4q+qawVnLlEMHvwIk10kheg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-directory-picker-browse/-/dsh-client-ui-directory-picker-browse-0.1.7-rc.2.tgz", - "integrity": "sha512-rpUbd6d2ZJs/uVa36ATa2y+QlX5i/RQ+24VZTWmz70hj/UhxiRWq3E6hXc2trOHIpHnXI8I3cfKYdP9BJPBb7w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-directory-picker-browse/-/dsh-client-ui-directory-picker-browse-0.2.0-rc.2.tgz", + "integrity": "sha512-RxHNr6jUawkQvMLlrwQok6CrFcZKc3TsrJS4UWGGEFZd54D0AtpnhMP5NDVo4mL/LNti6m1VSlL/8nNgMQJa1w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-directory-picker-native/-/dsh-client-ui-directory-picker-native-0.1.7-rc.2.tgz", - "integrity": "sha512-zEK/4cg6HKjqOabLRtcXWyPxsB0Q34RKulg6bYuOh58eQBEYBLlY6inyFESEVjP30fVkYx2qvrBuzBEVZ1A6Mg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-directory-picker-native/-/dsh-client-ui-directory-picker-native-0.2.0-rc.2.tgz", + "integrity": "sha512-MaFnBCKvcr4cZ1Zx6QJ3+0+n4JHB3GISNEcYWtvUPmRh1WEZCIx/MOfWdcs0bltMUezGQ7RwV6VB43lxRo3FqA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-goal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-goal/-/dsh-client-ui-goal-0.1.7-rc.2.tgz", - "integrity": "sha512-1h3u/5FNEuui+31lCklla2q+Df7EAribAwuY/O3lv8Gf/kT9seQfrJNkxwaZMoLh/9wnx/mAAnQT6K7v4OWmMg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-goal/-/dsh-client-ui-goal-0.2.0-rc.2.tgz", + "integrity": "sha512-VmboGx4kq+9EigTdvvbqiekXB0443MpS+sLBBUlr6wREL8kBjiSzkTNYX1XNHMtGXgKJULYTuTIrcaKWK/bftA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-input-trigger": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-input-trigger/-/dsh-client-ui-input-trigger-0.1.7-rc.2.tgz", - "integrity": "sha512-m2uKSOFijUI7gW66LjsThuPbHt67ezvL+nfKL+IpoBSc5596/WFcj6HysFdiGBv0bv7Gd0pNXUVTOJ2Z6Jhg4Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-input-trigger/-/dsh-client-ui-input-trigger-0.2.0-rc.2.tgz", + "integrity": "sha512-X63sYrlwQflDyzCbT/rBxXJtq9hEmKbzwggYmXQ3x1N+ZgNT3RQsd8Q7D3DWycNHnavoJ3R84smxY+GB6nW7MA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-jobs": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-jobs/-/dsh-client-ui-jobs-0.1.7-rc.2.tgz", - "integrity": "sha512-QIFavpfsmMjmD/lb2nAoJNHpuaf7TQyWlpN3BNUVe2iBURu0+KviSnRQLOR8PxBztobo0AYtrAMNrmAACfLnuA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-jobs/-/dsh-client-ui-jobs-0.2.0-rc.2.tgz", + "integrity": "sha512-UhiL5YGvHSXXg9PRyOFuqu79XIMsgxCSeGxpiX+mr5JK41mZ9MX4NSDNXh8yyuwzjKQlt/HPpOYuv5uTfaGG0w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-layout": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-layout/-/dsh-client-ui-layout-0.1.7-rc.2.tgz", - "integrity": "sha512-od2Q5A3SxiOO5V1Mi35lmm64LQLNjew+HgigjTC9oLpCkb+es739VQeWPdUnzWP/+4WVIyQ2+SbHMLZiyB5jVg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-layout/-/dsh-client-ui-layout-0.2.0-rc.2.tgz", + "integrity": "sha512-OZzGxqoAV5zHPgFveJnw599J0j0pWbJiD5c5hdPeLyNMdRdTa2CC2gR7fbn63XGu08O+OruTDXHkCrOVuvkdQw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-message-feedback": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-message-feedback/-/dsh-client-ui-message-feedback-0.1.7-rc.2.tgz", - "integrity": "sha512-6WbWPtxFc3NpFqsGlU02z+UzLaAaKZkOeD046T+DG3WXf9eAjWHs7nwyxo//kYtWOGYVFyvXI+To9knby78TXw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-message-feedback/-/dsh-client-ui-message-feedback-0.2.0-rc.2.tgz", + "integrity": "sha512-de4g5/IjIMEUHOGTWr6yqduBkmYfpA0BmqGchqQbsrYvmnvGqOOzo/rkcyC8uq1XIF55HfHEhgqKFmA1R0AwqA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-model-selection": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-model-selection/-/dsh-client-ui-model-selection-0.1.7-rc.2.tgz", - "integrity": "sha512-kazoUL2VstZZs1Pvd+IliHIHqgNVKOHPmiXehUCBxc4pqwUV6v84X+aH4W6dxFCFojd1zqzgfp7dA2RwkNBfsA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-model-selection/-/dsh-client-ui-model-selection-0.2.0-rc.2.tgz", + "integrity": "sha512-fL6Iyirvk4xOMjbioguxv3E/iAf4AlfqnA9WhEPwdK/0wV7StMKhuAcZkbz2o3kEFHBE98yroyzrbM//yJv4ow==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-open-in-app": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-open-in-app/-/dsh-client-ui-open-in-app-0.1.7-rc.2.tgz", - "integrity": "sha512-cIZ8Q1v/HdPMSe1fouJMNTyIYRz9VKtN96I5Q8PwgRHKUIwoIQ1qDIxMaeCaOkYBnDftmafDVGxNSsvQ7XjfDg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-open-in-app/-/dsh-client-ui-open-in-app-0.2.0-rc.2.tgz", + "integrity": "sha512-T8xjc7I2YAB4iPC4XlmiTFfksKkOPRt7iSX8yWD+rJCjznbqWVS9fiPDI0IaNwrQRf9mR9mGdc14jkHpWcEG3g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-permission-presets": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.1.7-rc.2.tgz", - "integrity": "sha512-RUt06rwzQ1oYX74I5Va/y+nGOJC0l0i29EL5UEzfnz1RH26OGMw11PZnVDFQZbDE6QFpp44Rh8RF6H0MBlKttA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-permission-presets/-/dsh-client-ui-permission-presets-0.2.0-rc.2.tgz", + "integrity": "sha512-qeawIA9Q2rBpn0wlv7cCpkk0zssb8vR1nhrh0igeXJOHpz27CA3jEwy31pfc9hcR24PAWgXcwfZnqWu00HwRAA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-plan": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-plan/-/dsh-client-ui-plan-0.1.7-rc.2.tgz", - "integrity": "sha512-IYw6lMWvMZ0gCHStZYAKqUuimSIgns1iShTOqNJBsyL82u99iRLUCOjTePRNVcn+OPSD0MpJEUPA4wPa1t3byw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-plan/-/dsh-client-ui-plan-0.2.0-rc.2.tgz", + "integrity": "sha512-uXaj8o+CKLGd56rsl8rfJporCAnzX+XArs5lTRq6DvD7tyO3iah2wy/e3Hsa3RLdv5dz19S6oUqldn/mNxIcEA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-plugin-manager": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-plugin-manager/-/dsh-client-ui-plugin-manager-0.1.7-rc.2.tgz", - "integrity": "sha512-y2BlSTNqiFKxvtx86r/xaskWhjc6OYfHmtbJGI6BVfquqrHBhKeHJ7D1vNURamOFdouJjurWdc6UclrM/6D4OA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-plugin-manager/-/dsh-client-ui-plugin-manager-0.2.0-rc.2.tgz", + "integrity": "sha512-AncAiGUMawllpfnqirmABN7KXwmVEhu0E8ClJvfsLDhEd2oazZ6nk2nUPHHPu1tVKq+e8IbiTHqwpnlDR7mPUA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, @@ -2383,54 +2308,54 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-primitives": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-primitives/-/dsh-client-ui-primitives-0.1.7-rc.2.tgz", - "integrity": "sha512-ymIUil9ivHcIDgaAmF88lOygC7dJ0UsUgdbIvXT5bymPZDzvDJIoorOKhlMsCqPEG1ZawCMVhUatnIPi4xdlMQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-primitives/-/dsh-client-ui-primitives-0.2.0-rc.2.tgz", + "integrity": "sha512-Zx/MRT8NH6rYEvPnk4FQaHrADM6Dh1PQCprieqdvKj6yFhD/CJUVjSN08suGF6FPQekfVTJtS0WxY1XbQ5Ed9Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-reference": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-reference/-/dsh-client-ui-reference-0.1.7-rc.2.tgz", - "integrity": "sha512-6gfOeDM/Z9hJRDP+m777VPgiFvjhVvbjnCxkXlG8rsXQBcdO4SSqCBWX0ioQ+2tIGMuMypfVNdFPOk8pxoR7FA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-reference/-/dsh-client-ui-reference-0.2.0-rc.2.tgz", + "integrity": "sha512-HCdQto0tHfERzxNSDHZRKYVu+lBPjhfzf0F/rblzda2znMxNE5pjHtFfHZHkaQwUH3lPhFHkuGzP/AvBtamISQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-renderer": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-renderer/-/dsh-client-ui-renderer-0.1.7-rc.2.tgz", - "integrity": "sha512-GdOE1zyespclxrcCGPTWk8+TQKQy3tUNC2Ch+4eoAyzp1GD4hmQNyzwFIiQDLB6Bwc7kv+8cWc51sbjr5/2vNg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-renderer/-/dsh-client-ui-renderer-0.2.0-rc.2.tgz", + "integrity": "sha512-vQ/LH4A53K1J/UeF5fQs1Dj8km5cnVos7vO0rmj+pJROhE6Vs7pAAKGz5P2e02t2/2to6+iMDu2+SSITrcYWTQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-schedule": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-schedule/-/dsh-client-ui-schedule-0.1.7-rc.2.tgz", - "integrity": "sha512-MIdo7fTNZ+kNOO0fp9oiw3D6qJ1O8xyjnYyJlZ1gqDFjuT+IdH65BEOoeGyT5atYYJnwMDWD7vL3sUMh5l5lqw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-schedule/-/dsh-client-ui-schedule-0.2.0-rc.2.tgz", + "integrity": "sha512-aBWxbwbbrLzqKIi8BU5gc82clY4totY+ikE4ypaanxr8qDgJ/ZOe3SVaZRHWWSAsunLP/rYtsamIRE/2eJDveA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-session": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-session/-/dsh-client-ui-session-0.1.7-rc.2.tgz", - "integrity": "sha512-gr7hwtWpgqU1mJwFFtugxH2QOYw+j/RvU/h8719mGYjkmBbOxzy3wgTL00tf0WFHLZh8pPMKQMg/eG3bEb0Z/w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-session/-/dsh-client-ui-session-0.2.0-rc.2.tgz", + "integrity": "sha512-QbavrwYkWqdmR4Be7Bv2tNqf+Gh1LV6+rlDkdukMWvdJFSeAmX9Fsctwn8yqgnPRGEHZUfZIjef8zKXIWexuYQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings/-/dsh-client-ui-settings-0.1.7-rc.2.tgz", - "integrity": "sha512-RAZXUt25mVibi2fnZyHhRArAtmNYIbyEUcAx/nc0i01V8dabnZkUCuGDRLjUeB4X6aPAOrlqLCliNcATuHD+hw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings/-/dsh-client-ui-settings-0.2.0-rc.2.tgz", + "integrity": "sha512-Kyho8FvRGYb7Ok1t7T429d4Dj/XF8+tE/+MX6T1s41RkXCe7v0sP89i4DUMo6OeUxyE+/uGoAVa5QZXY4O/y+g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2440,9 +2365,9 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-account": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-account/-/dsh-client-ui-settings-account-0.1.7-rc.2.tgz", - "integrity": "sha512-bMrSAJjkGGW1NCRS5I7rYFpUrTtl+6d3rUGWAJQlFRB3GCBDICfyAd2ZjLC+8NtklqyG8sXlmKPZr29N5mh61A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-account/-/dsh-client-ui-settings-account-0.2.0-rc.2.tgz", + "integrity": "sha512-4Twq6woo7QJshkHu7hXzE0eyDnYCf01iuLfWZftWpLl6olaA6eQBxaRrMyW7YDubYpnTIu6m+1QRGtQ5MARYgw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2452,18 +2377,18 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-agent-loop": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-agent-loop/-/dsh-client-ui-settings-agent-loop-0.1.7-rc.2.tgz", - "integrity": "sha512-qD0C+CK8KJ02B7URv7lsnddT1exlv9imvt7e6wAb5nkmzIdptXfLs2MfL5CXoH+b7NGx9sGYFHR9hRqKU3OMUA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-agent-loop/-/dsh-client-ui-settings-agent-loop-0.2.0-rc.2.tgz", + "integrity": "sha512-e3Vx0ZE8jfuNQjaGXggUA+cp8x71VqkYFldd3IeXuMW1w4MeBzo+wbKeCOOf4TCCyvqLTD+x3OD5wVr1lgkjiQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-general": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-general/-/dsh-client-ui-settings-general-0.1.7-rc.2.tgz", - "integrity": "sha512-Qy7nobyQqUuXoTwe0QckrikCAFmX8JJ5RT5Wt7J2ZZ+soesDnaEkMkAfO1ZTxJi6MKzntuwwMwjF+Z330FFmAw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-general/-/dsh-client-ui-settings-general-0.2.0-rc.2.tgz", + "integrity": "sha512-LqM4OitgSKe7KDFiyBauVuJ8wvS2G5Vk/BNV1wmYz3oTNyCJXZxdJVP6qijFc4yf1zPXWfEGAufYBdtyYb35WA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2473,9 +2398,9 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-models": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-models/-/dsh-client-ui-settings-models-0.1.7-rc.2.tgz", - "integrity": "sha512-WDHuCh0cVJiSUyaa31OiXSSgpwWD9TAW2gEWBWUrF8eO+hyQEA8Q5f3wzVvea1ltiOmjqU0IBFMQRtpSckyDPw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-models/-/dsh-client-ui-settings-models-0.2.0-rc.2.tgz", + "integrity": "sha512-vZVCHW1PYaPOhlunGL771e2WfkN023CTvZ7ZeiTWX6vkiDloUPCAMCjCl0e/xkbtgSMGvVjquuqGluwxqqIShQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2485,81 +2410,90 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/-/dsh-client-ui-settings-plugin-inventory-0.1.7-rc.2.tgz", - "integrity": "sha512-TweCas4hY0NPl6m4TFeE9OVNSNGH6BjRCSzRfKVddZ6qm54aCW3pxy0fprJLLRVIkVckushjbfl+vaxyYGHoFA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/-/dsh-client-ui-settings-plugin-inventory-0.2.0-rc.2.tgz", + "integrity": "sha512-oS2EwNGQeNQwSsbZYv7PzuR9byUu905KcVuf4nwaQ/JOJJRfMj7fzpP2wSh6nJ1l11Yjhvvc9TQ6nzmGDmL9jA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-plugins": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-plugins/-/dsh-client-ui-settings-plugins-0.1.7-rc.2.tgz", - "integrity": "sha512-eLljHiQ6fR0K/yXDiHeyiWkCsmg1eQucoMAKcwerh8sjtyKPTpqLFQDmOn/O7znJz+b/V89yshkyyHw8ZvC38Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-plugins/-/dsh-client-ui-settings-plugins-0.2.0-rc.2.tgz", + "integrity": "sha512-mW/BaxHgKNyO2Q/ePhqFvFziQc0OVU7HUVu5RC0YG6YbT6ZIEsXs8UWrucwgExjcenPDnmW11j89+q1Vi/1YJQ==", + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.4" + } + }, + "node_modules/@deepseek-ai/dsh-client-ui-settings-session-log": { + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-session-log/-/dsh-client-ui-settings-session-log-0.2.0-rc.2.tgz", + "integrity": "sha512-aacrU3GfHkCTB8FFM0yEF2XFHetX7DZz4TWPJeAbMafFpbXi90pLOxY2wg92wehURtTuhNebqa+IYWBldg8sOA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-shell": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-shell/-/dsh-client-ui-settings-shell-0.1.7-rc.2.tgz", - "integrity": "sha512-+N2RZaN/WCA9vVqCdf4PnvuzmtGnzyacnlOe37g5NSpZGrg2MpPnUTuv9vJnygsQhYLHZxkJOojAnxEJ/dOgfQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-shell/-/dsh-client-ui-settings-shell-0.2.0-rc.2.tgz", + "integrity": "sha512-dTEdo5Pbh/M3bi+co7gvKbdTewHakkvwy9ESJVjzq0WD/7qtQT6szbhlBJ+WaDKvRDhxnlcnuXB2u5wyRsKVmg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-subagent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-subagent/-/dsh-client-ui-settings-subagent-0.1.7-rc.2.tgz", - "integrity": "sha512-c93MFjtSoffOCeVAUBOL9oTul1Hd5MhyUngGetBUv7APixG5zN6X13NjnS20mqOKRidSMc0xyizYiS30ygz2fQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-subagent/-/dsh-client-ui-settings-subagent-0.2.0-rc.2.tgz", + "integrity": "sha512-Fk61weXn1Udb0lHSnvmId2rqNtdwg51Gw/Hdk2Upf+D5hGKaeRCv+lsO97Xi83fJaJz+md7OvBnqu9htduZuxg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-settings-web-search": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-web-search/-/dsh-client-ui-settings-web-search-0.1.7-rc.2.tgz", - "integrity": "sha512-/EwngqLFH4tBnF8GXMVRDpR0Lfwk3uhJ103UFSLq+p4E46yv2zxH6S3AcKIWR8YdntB8i0nj2Xr/5Cs4IbK+yQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-settings-web-search/-/dsh-client-ui-settings-web-search-0.2.0-rc.2.tgz", + "integrity": "sha512-vt2Rgf0Z4sx1EE10EJDKQvHjK7xsNEMxrUv2ZUoxA6E8cFtRMD+wGblW7f8s6OwV2pNyAE+hiYePPf1zK24dbg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-shortcuts": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-shortcuts/-/dsh-client-ui-shortcuts-0.1.7-rc.2.tgz", - "integrity": "sha512-Bo5Z0j6Xcm5NHWmrgJwMP9vehsfUcNQvZ0IT6WAT5z51cEza3iIXfpfEa/3GTos68cv9R5i14wjAJL9a3Go7Ow==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-shortcuts/-/dsh-client-ui-shortcuts-0.2.0-rc.2.tgz", + "integrity": "sha512-MZtbV4PgYGx7MOUFlwfiWF75sBeLZcds9uHlYTQlHSjkJwJWLnqnT9OYwTVQdfWYs5MBv3Bj5PK1kS8zUO49hg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar/-/dsh-client-ui-sidebar-0.1.7-rc.2.tgz", - "integrity": "sha512-/rzmtzk5Wg89zkT03nPGD/yYx9x1MD2ircBb9zIaLB9+DMBUFNjHJh5htYmYFxN7ldNEa6zDnmcx0N6jg1xnPg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar/-/dsh-client-ui-sidebar-0.2.0-rc.2.tgz", + "integrity": "sha512-qAvv42Jt36dVVHNuuZFUbR5kMofhPmGeFafBcOU1mlmUJitZFf31MFFF34UER3JSnByxwAeHsMx9JMq4k7nA4w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-browser/-/dsh-client-ui-sidebar-browser-0.1.7-rc.2.tgz", - "integrity": "sha512-Mnn+EVIy2YGIEyHcJf5ifAhLKUdeYjhv1XA4fMhfGUmadq0QYGMN+K9j0mWb6eBCSXoujBzfwiClhCT11dN+3w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-browser/-/dsh-client-ui-sidebar-browser-0.2.0-rc.2.tgz", + "integrity": "sha512-tp5007jcJlcJnnjslpix4XbnbKGpKQjXCzlRKyFdUqcbua7Oqn1ZcIrCM/+gvgd3cOC+ZlAxrmyJQtbulFg4oQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/-/dsh-client-ui-sidebar-documentpreview-0.1.7-rc.2.tgz", - "integrity": "sha512-5SRZ9SgYIq0GB4q9PQPY7uInG+WKaVLv7V9kQn58YWjwzzEVDDcGMDbgCP5lBLq/Hj+fZ7jI70na1M8hMCjf1g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/-/dsh-client-ui-sidebar-documentpreview-0.2.0-rc.2.tgz", + "integrity": "sha512-0daQxoPZiJ7Jkq3xwVZguqYURtrM4Sa8ghxyVjw7/Kyp5xGZ8+agFAJ7ZovlVramp7LacBc3A6aNlB3aRLlBMA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2569,63 +2503,63 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar-files": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-files/-/dsh-client-ui-sidebar-files-0.1.7-rc.2.tgz", - "integrity": "sha512-5H9kFhSFoZDj19YE8BYue3Ux1anPOGC4JNAYZJI9cmYLXB/Onb8nndFUxt+9HKJhQaRaLXgYBMrBQxg+Wig6Bg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-files/-/dsh-client-ui-sidebar-files-0.2.0-rc.2.tgz", + "integrity": "sha512-QapGZ5bpiGRFFOT4tw32nJxgkFdTkbEw7qO32vYLkcSdmbuWMETCutVBp77HLGsizB1RtYUtW/Y3IMT3uGb3Xw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar-right": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-right/-/dsh-client-ui-sidebar-right-0.1.7-rc.2.tgz", - "integrity": "sha512-CXTONIEGrMJA7Aj9OK5K7XSv6Qa/f+yK8UqKHvrT03m1FAqLJZGVqj2OUUbCgoB6Yf3wBTrNh5D4RqTE0rLpVw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-right/-/dsh-client-ui-sidebar-right-0.2.0-rc.2.tgz", + "integrity": "sha512-ocVUP6v3X7vShYeJ5I1Z3t1lDC02hJdZ49/kIRj29Xbe+BIfMY9HSDyUVUUDdijdd3jP8dpmhmbHbDJudwFUtQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-terminal/-/dsh-client-ui-sidebar-terminal-0.1.7-rc.2.tgz", - "integrity": "sha512-1nr+HVNXkxnJ1eSxkIt2NnIaotyjTHvX2tHNaV6Fy7T/KoxcDecCW3sFFqIFnhZqR61SsQ8yNIP79DV65xWfog==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-sidebar-terminal/-/dsh-client-ui-sidebar-terminal-0.2.0-rc.2.tgz", + "integrity": "sha512-W49Incf9cPFQ8Ntpb0S0dUkbn7bdlffbEUASYACxIxPceZc1YVzz7Tp32kTYUEZNJPkyi7E4r3M81wAhSYimmA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-skill": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-skill/-/dsh-client-ui-skill-0.1.7-rc.2.tgz", - "integrity": "sha512-DQhYOWGid/KIX9Pg4vCngO5vIOrtxxaL6v12RIV3PWJlZQ70JB2j8UEfayN3qtfHpbmWo15UTDJ56sA71lf/Mg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-skill/-/dsh-client-ui-skill-0.2.0-rc.2.tgz", + "integrity": "sha512-WJ991QnG+V5Lc9rkpexlgDShO8kCGva0K3mc+VI+6BRJ5tRE6ZFf0hutCax6iyUz/gtaFsxoYs615Uw2jas6sQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-slots": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-slots/-/dsh-client-ui-slots-0.1.7-rc.2.tgz", - "integrity": "sha512-83cd5owHfNMGIc5THEkMw1L6iKj/tl2m3thQhVGWp2p3Y+QAPh2hIrIQCNI+i97cH+7SsIsUIoCIoB0mu51aqQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-slots/-/dsh-client-ui-slots-0.2.0-rc.2.tgz", + "integrity": "sha512-zfILCyG3ijHT7S8+WDXFz4RMxBJtG9A3ngtDBnqcLbD5wzKz8H7E+HC657USa6RgG13C2RGSs73sfKcSs4WtWQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-subagent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-subagent/-/dsh-client-ui-subagent-0.1.7-rc.2.tgz", - "integrity": "sha512-iXO910+1CQ+AMrRkrzuG6XYDH/lH3iIXIU0YvEt844Vmp3r3GJ+HrEQAo5E1CXgctBwQtMDmocyhIUQNlYV7iA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-subagent/-/dsh-client-ui-subagent-0.2.0-rc.2.tgz", + "integrity": "sha512-n/1dJBhJE/LgC9qFr+sTm70yu8mY/vULcKCZo7rFs1+/GGlycjqBW4NjOF1Rc66QQQRpaMFuWPEGo83RelwiSQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-theme": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-theme/-/dsh-client-ui-theme-0.1.7-rc.2.tgz", - "integrity": "sha512-sgI50PPgGwhxXR+xEUa0zTAg80S2RaQOLsuuVdfliZPbVLjodme7/bbc8cnPQ+ZV9oU5Q3to+yXxAQByuIKjRQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-theme/-/dsh-client-ui-theme-0.2.0-rc.2.tgz", + "integrity": "sha512-1pdHD6QfRGalG3BchmvvuVZportaMcSGQ1lwjFlddB2oyZrHk4lsYMYN8l1icQDgB7VrA4cA1VIlYlUfl7qbLw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -2635,54 +2569,54 @@ } }, "node_modules/@deepseek-ai/dsh-client-ui-tool": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-tool/-/dsh-client-ui-tool-0.1.7-rc.2.tgz", - "integrity": "sha512-0HDXXfaqw6u2tB0HES+XvOO+QRKGHP2gRUU5+9gE0uDcJWawj7SXX6Dj27hJ3rztT2xAAu4W2fA2S9vjxzw8MA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-tool/-/dsh-client-ui-tool-0.2.0-rc.2.tgz", + "integrity": "sha512-Obs9FeOoIHWJUszQTY4MbdqAhlxX+lkzpwPpxk36t2pGCfkvaPWDdKwC0oUrTkRZxqYdx7inY8JK/+PZaWPnoA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-trajectory": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-trajectory/-/dsh-client-ui-trajectory-0.1.7-rc.2.tgz", - "integrity": "sha512-RteqWWQuqj/2VGQYeNo+nKkuPPd/bv7ejJxHnMRtHEuYrnwObkBUqhZ4+7CbhZuM9m0Jv26+tg9SxIp7GzO03Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-trajectory/-/dsh-client-ui-trajectory-0.2.0-rc.2.tgz", + "integrity": "sha512-CSN5GnTpg03QysgHL2XW+DKAUea15Sf7a8CKHyHvp/EhtbRMq3JLcvkfx2SV8/d6he9AcJ9wu8++r+S7Qfmm2g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-user-questions": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-user-questions/-/dsh-client-ui-user-questions-0.1.7-rc.2.tgz", - "integrity": "sha512-cmZOeVspzKrD2r87xvXSGbQ7j18VwznKKkvA1lukBCpsHYfFYKdqg5vt3tbW4UJYPGa9Ch0j8qX0zpRGD0YBUg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-user-questions/-/dsh-client-ui-user-questions-0.2.0-rc.2.tgz", + "integrity": "sha512-N19AmrBM4BNl2FNOVwi8q48W3utd3IUSdnhRxeDSR6TZRzWcFPlYZx9irt+kFFehsjvKRCnPz3Dv2A/CgCppcQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-workflow-run": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-workflow-run/-/dsh-client-ui-workflow-run-0.1.7-rc.2.tgz", - "integrity": "sha512-241DeEeaF8vp8vC54rrENDNA0R2n+nRRPvUCg4OYNi5MKLp0p7jgbeQ1lIcTaCuabRr1wYM0AZdoMyBaCkpaCQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-workflow-run/-/dsh-client-ui-workflow-run-0.2.0-rc.2.tgz", + "integrity": "sha512-vwHA+gyGXc9faftXvd5qoxmEy+8C4bWXuTogSs4/bA51hXhpOfFolQxm/C0F9Pq5nTDe926mcwIm/8KK5nTR+w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-client-ui-workspace": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-workspace/-/dsh-client-ui-workspace-0.1.7-rc.2.tgz", - "integrity": "sha512-iaf28XLl3+1WTgVMsykV8HVvGPH8VXv+CQD7Z5koejk0EJZVXtMB9nosUKX810qF+CVJKL04en9a8mOm8dIsFg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-client-ui-workspace/-/dsh-client-ui-workspace-0.2.0-rc.2.tgz", + "integrity": "sha512-dGKLOFJXBiGDKl+qWMQ0cYF0AT485JMzSk+AUM6/81tZPapJuirxP7Yf5ZFMfsmgQFv6m4jjYlnOc6KcIfUUZQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-cmdline": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cmdline/-/dsh-cmdline-0.1.7-rc.2.tgz", - "integrity": "sha512-IULzGaZowx/xNJkWDwGTFTEP2wdjPZ7FT1uCW0gwvQdkN4MWEsbC9B1BMCenAoER1n6rs+GqIWmj3z8celngWQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cmdline/-/dsh-cmdline-0.2.0-rc.2.tgz", + "integrity": "sha512-S4X5fqxjRykgZvfISnw4ta8Kr5YDFUHD73NwD0aUaFbfyhCNFgVSgdZUHVA/a3NmBptIv4Wh+dGM1sI/5DI0yA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", @@ -2690,97 +2624,97 @@ } }, "node_modules/@deepseek-ai/dsh-command-compact": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-compact/-/dsh-command-compact-0.1.7-rc.2.tgz", - "integrity": "sha512-vSDXWGW9Gh7hFrCCkfdMwut2kseS6HYOD89X5X43cnIxBayofenKfnMb/ZuN+NTGIWRr74FihtAe6mg0FxTtSw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-compact/-/dsh-command-compact-0.2.0-rc.2.tgz", + "integrity": "sha512-QrDjlw1aU0IV6JUdvD7ZGGBjMScRar1JIzpO7g/9LAKvbDLhuJC8RNU2cnZDGCvcAC4sD87KAzK/x+y5JhUeGQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2" + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-command-feedback": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-feedback/-/dsh-command-feedback-0.1.7-rc.2.tgz", - "integrity": "sha512-BczHqimHOdWQYNfpGfVtMPEBhFh1AhDia88cVDxLENfSXfaF8xUagSb2cJKXxS4iG8Xco6lz8lnnZAGOdLX2JA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-feedback/-/dsh-command-feedback-0.2.0-rc.2.tgz", + "integrity": "sha512-O6h7T503zXfKkqgdo5aNDW04oZ1V7owMxsMeU/OGbvlx8Y3RmhgSY2Gyt6UAC2o+6sD0AKWk7fCjm61Ic/FeJg==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-anonymous-user-id": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-command-goal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-goal/-/dsh-command-goal-0.1.7-rc.2.tgz", - "integrity": "sha512-NSBwTXaU3eFiOjHFHdxllLE2h5CJSWBcIeKIONBMZqYW2q1myAdldTv9NHY5uPSYDQU1ew4hMt47OigpJ8Vicg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-command-goal/-/dsh-command-goal-0.2.0-rc.2.tgz", + "integrity": "sha512-zAQTumQZorlPoDKt7EnrWkIgIVRpRII/8i+aC1bUasf6l1L5Nua5Sy6g2Mf/ILzMO8eiIt7p3/CPJWbL/tvrEw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2" + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-commands": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-commands/-/dsh-commands-0.1.7-rc.2.tgz", - "integrity": "sha512-wVAHwHNDLDNBKXJZU2rHnwc+e3mhi6EuazAfJmqtbzU/ldQVEoJ9f5eXqesBcdQbRIrWQlpjfjdlw3nCJfK2HQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-commands/-/dsh-commands-0.2.0-rc.2.tgz", + "integrity": "sha512-pU5oUyOMPDN0yxEjE1wJRInNeC5hs5vJnbOG8MSSfkFov/7Q8hrfwETxZtcRnbrpzzeG19wsvtRz1twkEMKZBA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-crypto": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.0-rc.2", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-compaction": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction/-/dsh-compaction-0.1.7-rc.2.tgz", - "integrity": "sha512-NOrFYDM6EdvO+UBioNcpiZ+Klv5v2xvOxLXDWKtA0rjKKW8IvW7Rui2hBnOpchsWe5So5vwBvu4lNjTdl5/2CA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction/-/dsh-compaction-0.2.0-rc.2.tgz", + "integrity": "sha512-aghHthiqhFZK5NlX/EJk54UgdBYJesmqHMxLQqwwzdq35kuFAx1ThxyNCEM/d244MG9IvvD0tSVk0Fj4UPx+Mw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-compaction-basic": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-basic/-/dsh-compaction-basic-0.1.7-rc.2.tgz", - "integrity": "sha512-8I2TzEDZA9MhbjmSTanw4nM4Ud6mZTUy0Xe9Zy8oQ7GCbYpVhAe3grb5MHnpS0WYisrW1ws063Kj8hHZerdaEQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-basic/-/dsh-compaction-basic-0.2.0-rc.2.tgz", + "integrity": "sha512-5FUfmXUTM04gjnMhWxnpRk2iHY1eUgBBqSFNJFYTxRx5bVV5ZMJH8E5E+Bc1P8Xt0FORxW4y25MhpC+XA0uBow==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-compaction-tool-result-pruner": { @@ -2789,45 +2723,45 @@ } }, "node_modules/@deepseek-ai/dsh-compaction-image-offload": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-image-offload/-/dsh-compaction-image-offload-0.1.7-rc.2.tgz", - "integrity": "sha512-IraXZq6uR88RbJcxkK7vfDViIB4WCxm8Kf9s43VWoias9Tr//w0s8oHZWTfNuy8kVgpw4cBze6DeExZooMALrw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-image-offload/-/dsh-compaction-image-offload-0.2.0-rc.2.tgz", + "integrity": "sha512-aNX4glTxfengJnr26a8oxHaxjHgBEQxEKaoKXPINlASeBzbsJpCdPyQelTPpn5B/CgRFpw2p7oqlRLwGZjyYoA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-tool-result-pruner/-/dsh-compaction-tool-result-pruner-0.1.7-rc.2.tgz", - "integrity": "sha512-ih1YpOuUNTZQR1epsZ2SgfT7+VsBrTBypl37DTbCqWZo3nO7LvTHILvdd+Kd2B/DkV1gKpXpBt4H493UNtXJOw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-compaction-tool-result-pruner/-/dsh-compaction-tool-result-pruner-0.2.0-rc.2.tgz", + "integrity": "sha512-FK/nqlznWQm0HBJDQkXB7QjEm5ou01em2is+dbVo+LQJtIMo8V7tUDbjqRiIAOCK3MesxyF0HdG16TkY4M5F7Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2" + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-config-editor": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-config-editor/-/dsh-config-editor-0.1.7-rc.2.tgz", - "integrity": "sha512-UgNqOUqI9ZNABnb7TvoJ9d6EbaScVymL54YV/s8rU06cl4bTKuz/ahA8uLclyutCoRANkwh/eMiA+othLyhooA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-config-editor/-/dsh-config-editor-0.2.0-rc.2.tgz", + "integrity": "sha512-LG/4EyMMBEwcUAsewqn9+6m9+mFeXVGaze0gaz3YOO/bCnJRI/2f4iuejsk/n+yMI9CNczOaIfWT5b3s7zyhfA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", "js-yaml": "^4.1.0", "yaml": "^2.8.1" }, @@ -2835,8 +2769,8 @@ "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-include": "~1.0.9", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-hmr": "0.1.7-rc.2" + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-hmr": { @@ -2845,52 +2779,52 @@ } }, "node_modules/@deepseek-ai/dsh-cordis-client-runner": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cordis-client-runner/-/dsh-cordis-client-runner-0.1.7-rc.2.tgz", - "integrity": "sha512-cYRPl4Ftu8Gwbi7gDmAB11wgRvt4hiqdkRNCLq+988jU6q7p9h6lRYpvR4G/5YodP0Bs0fSdyRaZgHrpF2LOoA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cordis-client-runner/-/dsh-cordis-client-runner-0.2.0-rc.2.tgz", + "integrity": "sha512-5VeQlKRUD2VitlGaDvksOI/bIGGOH4C8E1e+Y5kp+CeFxd1W3IABJkQEhEK90Vv3Gj+2S+ZbDh8n0ydsP7s9hg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-cordis-host-runner": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cordis-host-runner/-/dsh-cordis-host-runner-0.1.7-rc.2.tgz", - "integrity": "sha512-Rts8lOjeJyVAkth7ezDpDPAXOjr0GHplqUz1BmWcAotErQWZGkVxJK6hqiVMlFKB24JMQwr/UWH4474iZUiZKw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-cordis-host-runner/-/dsh-cordis-host-runner-0.2.0-rc.2.tgz", + "integrity": "sha512-XbCihVALcsNc/wZlOHTM5IRB1WyMbk753eUPlbtlAxjzRalzXVlnfjw5FFdxjoeavDGC+36k8aZFRtTnnCULBQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-credentials": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-credentials/-/dsh-credentials-0.1.7-rc.2.tgz", - "integrity": "sha512-Zi5MCL+o2bphuvWcfFsaRmg6eIafkjCa758+DVB2ac2tt5hzXLoKhwSku4YVhvhZYJan8TP87abIzyGr5z1X5g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-credentials/-/dsh-credentials-0.2.0-rc.2.tgz", + "integrity": "sha512-TQlvP0jxXYGy1ZNzh4nVsiCzb8FR9iGarD6BfIZ3LwJC8lDtjSxQHWE8//NYjpn10TIMxmaR4s6niHuJ3JkTOw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-credentials-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-credentials-local/-/dsh-credentials-local-0.1.7-rc.2.tgz", - "integrity": "sha512-pl3PRh+y9iLpwxZZmtxZzRTahiNGO6xNVC9nsN9h3eLu0ECetUkqRl2ByxLY/3ZcahSRzsad4eHjwKH5Prt7/w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-credentials-local/-/dsh-credentials-local-0.2.0-rc.2.tgz", + "integrity": "sha512-az83NVgu0COpjrPRAbXs0+evmSznQN1c8tFv/JKVvgcyPeFw5nLK5+0kA2QRBQ2g1p0+1x5H/4XBtr3Lwq/Piw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -2899,22 +2833,22 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2" + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-deepseek-account": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deepseek-account/-/dsh-deepseek-account-0.1.7-rc.2.tgz", - "integrity": "sha512-nJ142OEH8XPF2j9vCLBba9aQAQbO/eb3kfkZr/YdtXr3soYeConxveNFFXgIVLqevItKJReo0sa0P0l5E1xZiQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deepseek-account/-/dsh-deepseek-account-0.2.0-rc.2.tgz", + "integrity": "sha512-hA1Etqs6oFvcRvkwCBP5Zp3lknSc629WyOgudMF/N7DkOsMBsYC+3Qj4hpkoF/G2pWGO7qsXmC3fRwFk17foHg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-agent": { @@ -2923,9 +2857,9 @@ } }, "node_modules/@deepseek-ai/dsh-deepseek-account-platform": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deepseek-account-platform/-/dsh-deepseek-account-platform-0.1.7-rc.2.tgz", - "integrity": "sha512-ppvmTdigUDtljfuZZkPkElscjOB3EA9C2hpgBMY1Y58j7F/8pYAD1OCiuFot4C+lb6uk90NbZE2M3th7NxP5mQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deepseek-account-platform/-/dsh-deepseek-account-platform-0.2.0-rc.2.tgz", + "integrity": "sha512-JX61prldKAfHmsBE7yyVfp7EShGp0PgWvIAmQnUqy3MxZvBB24k2XBZ/UmPk56WvRhHnirGM4pJyipaT/ljdlw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -2933,69 +2867,69 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-authorization": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2" + "@deepseek-ai/dsh-authorization": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-deepseek-llm-api-extensions": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deepseek-llm-api-extensions/-/dsh-deepseek-llm-api-extensions-0.1.7-rc.2.tgz", - "integrity": "sha512-RCUarjaYUQDuyQzQ47qDyngMKbOkALMa7P8i3jZd5SsGK67eZd49O72ClFGd/r6CeO7JNQK4s1/W+C0orosUuw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deepseek-llm-api-extensions/-/dsh-deepseek-llm-api-extensions-0.2.0-rc.2.tgz", + "integrity": "sha512-AAiHShG4cgAtDa2XOe0mI6fTTkxrAI70x29HilYN6ZNss8XzC5tFF/XWlEf6fUx+l98Ohudn5101nhhbENgqkQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-deque": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deque/-/dsh-deque-0.1.7-rc.2.tgz", - "integrity": "sha512-a4zFfo+D7+BhV7hQzFQgIMtD65Hm3DQTLGRRd1EkI2O5TjrvBgVHOanyGJYK6VAgj07eIxIira8ws1KKNbbT+w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-deque/-/dsh-deque-0.2.0-rc.2.tgz", + "integrity": "sha512-XwZvafZAxyDm2TRnQetEizuczZ1UG7RhO8vmmIUbAdjbRbMA15NOTlJ3d24uw+I8gcSKKkmWl/jwoKYKl/qo/A==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-experimental-agent-team": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-agent-team/-/dsh-experimental-agent-team-0.1.7-rc.2.tgz", - "integrity": "sha512-N3/M+Wc1p50jKNF4fxJIP4m3iL4T4MiZelpIneVwwxVxoCTPlzdz0E5tKyN+p5x318aOxsibsa98D4N13Q4uoA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-agent-team/-/dsh-experimental-agent-team-0.2.0-rc.2.tgz", + "integrity": "sha512-ds9BrnyJ+BAbxaH3J81c/+JJpk8jUtnpzUCyTXxrDW2nZOnFWqdPH/TZKAI1ttCuls218+RF4PPFPbhYaXNl6g==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-experimental-agent-team-profile": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-agent-team-profile/-/dsh-experimental-agent-team-profile-0.1.7-rc.2.tgz", - "integrity": "sha512-WdcCnmEflVTWK4HRtJGnLDZxZFd00cCqB2kNc80XA60SB71/r+umYU2JACtTbslLlThD5OzADG0c/3LAYuW1vQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-agent-team-profile/-/dsh-experimental-agent-team-profile-0.2.0-rc.2.tgz", + "integrity": "sha512-XmOjwaAoHlmLkN3weOGd6phIdXtc3JaaT927Em32/yeduirVwdlQ9igDwIrpOcmNqi7jH6FldliHHvT3zrVkuQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-client-ui-agent-team": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.2" + "@deepseek-ai/dsh-experimental-agent-team": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-client-ui-agent-team": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-tool-agent-team": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-experimental-api-speech-to-text": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-api-speech-to-text/-/dsh-experimental-api-speech-to-text-0.1.7-rc.2.tgz", - "integrity": "sha512-OWvVO1iG1ypxR3XKvAU8HH3To7NU9dt5AAI+g9Xb9QJ2AIbmI2qXklbm3vvrYaJyxW24p9pnEkuwuTJWcIBbWQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-api-speech-to-text/-/dsh-experimental-api-speech-to-text-0.2.0-rc.2.tgz", + "integrity": "sha512-1RUi6flQ368MYEv3ukRFwyGqf9/5WaUfPgbi4/IAI0CaZeER/yBp7AlbaAzVwWo4EVqew0fXNcW95KoUgpHwZA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -3003,84 +2937,98 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-experimental-speech-to-text": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-experimental-auto-review": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-auto-review/-/dsh-experimental-auto-review-0.1.7-rc.2.tgz", - "integrity": "sha512-qycXHx0+rxiu15vN3d5VOK5mIsKxk6yFteISHaMrEd7A+Y7aLAnJBhnKtBV0GObEfpuUjAsEbB0/N6htIxSMLA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-auto-review/-/dsh-experimental-auto-review-0.2.0-rc.2.tgz", + "integrity": "sha512-WMGHoNP/vX2TU8PmONeC4ji+DzRH/6LBjo0Sml66Nko9++m0n0+ksL4/DjIcJrBKGSH73gTGsDFNWt9YxO7wyA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-client-ui-agent-team/-/dsh-experimental-client-ui-agent-team-0.1.7-rc.2.tgz", - "integrity": "sha512-K74WkKbc5ctqjVYxO3HHdBnINWvlVM39aMFIZntIH7PMK9HVRzzD0D51keigWAZhdvUVWwcX1IO7VW5ALg9TPg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-client-ui-agent-team/-/dsh-experimental-client-ui-agent-team-0.2.0-rc.2.tgz", + "integrity": "sha512-xrx4ThE3TbK0gbDcbW3oLLL0NzyP1poTygNeTBwoyY3gwPQZGx+4Q3W7CugGpEjNU2Ie4SZWqGYDN9jauiki3A==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workspace": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-agent-team": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-experimental-client-ui-voice-input": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-client-ui-voice-input/-/dsh-experimental-client-ui-voice-input-0.1.7-rc.2.tgz", - "integrity": "sha512-JuFJgrCoG+4gePKZlJjmCAgZN4l7TGMT7xnGEY8jr4cnKHjdyB5buMRGqNo6gF6Bu6UCJVtc1+oqsFuCz2vbHA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-client-ui-voice-input/-/dsh-experimental-client-ui-voice-input-0.2.0-rc.2.tgz", + "integrity": "sha512-oDJf2pSeaV+785Rk5le0HBteinB17Lw01EtexH27UWQQombNhOj1ZXs+PH5F/caTGyLaiIt/1Z4+o7e+TIcr0g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-store": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-api-speech-to-text": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-speech-to-text": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-store": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-api-speech-to-text": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-experimental-schedule-bundle": { + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-schedule-bundle/-/dsh-experimental-schedule-bundle-0.2.0-rc.2.tgz", + "integrity": "sha512-6oGDFceBMAsrKeJfFxByyvXBPE+Obfd0oMCwNYdWesPmRBueuRwj5lwp8BY+v59mQAc3Jzdkx1hZh/E6xRcMng==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-client-ui-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-time-context": "0.2.0-rc.2" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-experimental-speech-to-text": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-speech-to-text/-/dsh-experimental-speech-to-text-0.1.7-rc.2.tgz", - "integrity": "sha512-AYsU6xhb/Y2lBoHU+qBB4X3NKYnCOmJhP6lLhh8xl2hAxY8UPcOKMeUFatTQtMUXD3lL2flg4UwXM7vJAApj0Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-speech-to-text/-/dsh-experimental-speech-to-text-0.2.0-rc.2.tgz", + "integrity": "sha512-p9j8bU00eRlKsVfKK/tYj4Y4tHtuyYV5WSg/zd08g28/07ejUNu0J9vMlw6RzTFHMHqOSGGnsx6ra9IxfvCc2w==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2" + "@deepseek-ai/dsh-settings": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-loader": { @@ -3089,135 +3037,135 @@ } }, "node_modules/@deepseek-ai/dsh-experimental-speech-to-text-sensevoice": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-speech-to-text-sensevoice/-/dsh-experimental-speech-to-text-sensevoice-0.1.7-rc.2.tgz", - "integrity": "sha512-SVg4+Bz1QnP4bRr6lBmV39fxyDPiy6mg5f9loAM+RUI4mC6suKjDnt3A0VLhJ5TTIziFe5r5tfPRsCH6Ts2zzg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-speech-to-text-sensevoice/-/dsh-experimental-speech-to-text-sensevoice-0.2.0-rc.2.tgz", + "integrity": "sha512-Czz8Vp+p1wPXU0quJ2en7Okhrq5mp2wYxh/ZDjsiYq/Nm6GagNz4ZRYXSyxWZE/yFCv2UQ5gVcVOzp6OKNqxnw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "sherpa-onnx-node": "1.13.8", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-experimental-speech-to-text": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2" + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-experimental-tool-agent-team": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-tool-agent-team/-/dsh-experimental-tool-agent-team-0.1.7-rc.2.tgz", - "integrity": "sha512-WQ4NkWo6c1WPv5D6VP3wIhWyEkFk5+ShsBk+ecwhzNKWi4Q8v92rqwoIBy0xtPiCkHdVcrjlD37H3PS8oAUQYQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-tool-agent-team/-/dsh-experimental-tool-agent-team-0.2.0-rc.2.tgz", + "integrity": "sha512-iwaUH4Ev4jz56iV9Zm1IkY/34c0NoUe3gFDKDzw8UQfy8S87uNoTOR5z4//ycdN0uuHQ01MfP7U0zKkdIuYjoA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-agent-team": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-experimental-voice-input-bundle": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-voice-input-bundle/-/dsh-experimental-voice-input-bundle-0.1.7-rc.2.tgz", - "integrity": "sha512-IoaMPoVxuTFx+SRrXWeuClKCBlpeQGUKFiNozmRLM63/EzZmTqB8yLxzSkHtL3TYfnx6gMU6m31RRKUYbdjimQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-experimental-voice-input-bundle/-/dsh-experimental-voice-input-bundle-0.2.0-rc.2.tgz", + "integrity": "sha512-am08Ylak3AYyX2DYxnfN8zn5t80xl5a5Iys6BJ46Ji7ruF4vD6d4C3SaitEtjNgciPxn41R9B9iWTzYTD/cQhA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-experimental-api-speech-to-text": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-client-ui-voice-input": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-speech-to-text": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-speech-to-text-sensevoice": "0.1.7-rc.2" + "@deepseek-ai/dsh-experimental-api-speech-to-text": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-client-ui-voice-input": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-speech-to-text-sensevoice": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-file-reference": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-file-reference/-/dsh-file-reference-0.1.7-rc.2.tgz", - "integrity": "sha512-kjtnauKgQSnoQ6acOhVrRFFsIiIb2NnLXV08Inow34is6oANH0Ti2EqJmOVFlt/7mqcEYHxBvJUbh/DY6h/vmQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-file-reference/-/dsh-file-reference-0.2.0-rc.2.tgz", + "integrity": "sha512-vIjixx03qmWeEoVAhIOFEXyQ7I3UTenWtql8tT0IEQLYp7WRRhMNr7vojpkRO7JPgSgW5tjUIiQvg8/h990GvA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-file-reference-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-file-reference-local/-/dsh-file-reference-local-0.1.7-rc.2.tgz", - "integrity": "sha512-DRsbWY4NCWIeyhnnGpbGKsbiXf0m/FB51SI/4xdGL/TLZbZjIdROtBzXthL2IYG62QDtQMzEVs+jsg9zaBAuUw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-file-reference-local/-/dsh-file-reference-local-0.2.0-rc.2.tgz", + "integrity": "sha512-xrzsF7lrCExK4mdrFXuJM6XeYaZCQoaaqgv1Ab4YbN56N2UcCTHd5rKgFwwRRwauPkeytUAYMoFmXZmTIdhnVA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-fs": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs/-/dsh-fs-0.1.7-rc.2.tgz", - "integrity": "sha512-3ES1FKLM4asLvFS+yBcatzRNGINfUx/Cl+x+JzGhEK5QWX3aCxpH8Oa9Z4T9k0McBStWg1CTfHziRR8trHPYyw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs/-/dsh-fs-0.2.0-rc.2.tgz", + "integrity": "sha512-PuVcI7drTwa19Key54DROoqnDFTTFkl8TPlyrTnS3BSnykm+jKbB13ES/PQEJoRunNdQkNZa12jtbUI4BP/EHw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-fs-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-local/-/dsh-fs-local-0.1.7-rc.2.tgz", - "integrity": "sha512-7XlSqUY2nk1S0GQNU7f7rimhBnYZYdtOtW5xr3oApHuaiWyP2Qj9D2Y0Xq5+jyFz7kQ9hoNHq3gA+g5IK1Dofw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-local/-/dsh-fs-local-0.2.0-rc.2.tgz", + "integrity": "sha512-lDzh5VlQsXf3nI+E0+T0weYdH1VAoo+htj6Kwc62P7/Lx+xjnYSLQYTeGeaJR1d8H2iQv2FvlwaDKv60AorKdA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", "chokidar": "^4.0.3", - "koffi": "^3.1.0" + "koffi": "3.1.1" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2" + "@deepseek-ai/dsh-fs": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-fs-observation-policy": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-observation-policy/-/dsh-fs-observation-policy-0.1.7-rc.2.tgz", - "integrity": "sha512-htzbOb2krclujHcSMu4eLiMxE1zl1fNlQylN7RReU3ais5J08pJPzenNLH+M18zecRWr7IljxI/mrGAXlH0Upw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-observation-policy/-/dsh-fs-observation-policy-0.2.0-rc.2.tgz", + "integrity": "sha512-YPqpJ+WPhYUHS6PtUN4abjUx/dK6bexUiQdFGeQ81F0CEWbIfxyT1QzadKPvU5PrjxpG5e+UtjoEmAQKSCrsiA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2" + "@deepseek-ai/dsh-fs": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-fs-sandbox": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-sandbox/-/dsh-fs-sandbox-0.1.7-rc.2.tgz", - "integrity": "sha512-E1f+stkuTefmMeOQ1lEQJum42igtOeg+V5J5P92dZp5QObt3VT1EcIkywe9zFHtEJ+jExVzACLIxj8XNmisiiA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-fs-sandbox/-/dsh-fs-sandbox-0.2.0-rc.2.tgz", + "integrity": "sha512-y1RCQ64FOXzKXsLLHKVcExn8wKVN3klZY+OBeLYpiTEGZemADk6lf/5bNXQP9v6EwXK4bi4FRkTe8vURZMB/HQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2" + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-goal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-goal/-/dsh-goal-0.1.7-rc.2.tgz", - "integrity": "sha512-9ULU4IMWGBkUTzOoQC+3tuyy7J/oFq5J05rv2PyxpLZyJGf5lRRDfhNjm/PAfbKzuXAPGEB2aOQ8eAdZ1RCnHA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-goal/-/dsh-goal-0.2.0-rc.2.tgz", + "integrity": "sha512-dxjUpSl1WAmg6GqO+m9dYGKPAV+whMR+0xqQCoapb8C60FEmeHa2YdopGKKRLziUzB9H5JoDXjtv5HsfuRQRjA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -3225,57 +3173,57 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-goal-round-driver": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-goal-round-driver/-/dsh-goal-round-driver-0.1.7-rc.2.tgz", - "integrity": "sha512-pIIDOhEGMr/BMLsRa+L7Q+qZgQupeAcT5wA7z3GEoZB/ABH4KTsepg0BZadZyuGEen4t0x6AG2pK2K+evonJLQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-goal-round-driver/-/dsh-goal-round-driver-0.2.0-rc.2.tgz", + "integrity": "sha512-9J+uUo7+US98xqboK+JPXUF1TIGDwN3BB5AdhiDRDweLi1T3wBefpAHD4+ngM3C2e81MnUHk7FIFmK5IUY4B9A==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-headless": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-headless/-/dsh-headless-0.1.7-rc.2.tgz", - "integrity": "sha512-3M2QA46ATJNwdz2AYB5MpQMZot1ehwH36AqRBU2mNu9Iv8kC9cjsSST0eBnk1EyjF4jTqh5h6PZAkgLOBOExyA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-headless/-/dsh-headless-0.2.0-rc.2.tgz", + "integrity": "sha512-qe1X+9fV0bgStRFlegsaXvIV34Y6gP/7Cxlf2MmhRduXtUQhvHAX+OJC8oySCiy1xKGeaFjB3POG3Bh5Er2y4g==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "commander": "^15.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-hmr": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hmr/-/dsh-hmr-0.1.7-rc.2.tgz", - "integrity": "sha512-+Zz8Fz9wwaOQ1h2KYc8BHPsCNIifRZVb+mPMRgl8N2ECByO8ZlarN0He4NjwWR9T/zgMEOvvhRf1aumPLs6TIw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hmr/-/dsh-hmr-0.2.0-rc.2.tgz", + "integrity": "sha512-DyMnylNJ3v8NgtUi13SdVm7Y2Aml4MN0K7gvN+7FDrSD9iCqr0BlPqODxD/XH2EM2AYULxK2ISis7Y5/8gqnfQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", @@ -3288,102 +3236,102 @@ "@deepseek-ai/cordis-plugin-include": "~1.0.9", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", "@deepseek-ai/cordis-plugin-timer": "~1.1.6", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2" + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-home-paths": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-home-paths/-/dsh-home-paths-0.1.7-rc.2.tgz", - "integrity": "sha512-LafnefS9IttUziet9cQfCNfyBVce+aCPBGFrZGxsQJZYZXvkDQH94QHzDIxOIJfwwHuKC36fP5riD+Eajpx5jw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-home-paths/-/dsh-home-paths-0.2.0-rc.2.tgz", + "integrity": "sha512-n4O5C9pNIVWbBklB5RzSTc3kr9hmUnDlZ6Leqj3TIk+CO593DTAmDGTt0rHMQe8H+1Ur+Jqj9Hqgsug/WRkkvQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-hook-protocol": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hook-protocol/-/dsh-hook-protocol-0.1.7-rc.2.tgz", - "integrity": "sha512-MoTAuM84wpxOQX5N56PQFgWYS8mqxjJ7CbIvP+3KSa//+z6Ob7MWQAwi36S5VLGvywFMbzxpImCz9EawRuE5fQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hook-protocol/-/dsh-hook-protocol-0.2.0-rc.2.tgz", + "integrity": "sha512-ew0biR00o9ilXExq71XGYYbC0uJl+sr6Ju/zjzNUf/vXSZEuOMs9I89xA0R82Od8KLPMobPtQIs8YMwTHjiJEQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-hooks-claude-code": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hooks-claude-code/-/dsh-hooks-claude-code-0.1.7-rc.2.tgz", - "integrity": "sha512-TJx0FUFm6GZEjJKz4o8HiuBfk3qbOEAAEoIfEIy0Kgo2JDWgl04o/c7ZOf9KgurdZt/WpfVt2dG6nEQg6UJ7mA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hooks-claude-code/-/dsh-hooks-claude-code-0.2.0-rc.2.tgz", + "integrity": "sha512-xMcX3KOeLOdiiA2Kzzo6TZbXmNMtr3xfJdbRu2Z4/MDvOHOxzPW1GUqDKUjpR16dZHZr8pB1Q2YhPlnWij/dXA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-hook-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-hook-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-hooks-codex": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hooks-codex/-/dsh-hooks-codex-0.1.7-rc.2.tgz", - "integrity": "sha512-xsGEcQOvt42vdkCQtJgV4/w136EJKALjs7TkljeeWKkQKJyEWvPjaUV3vJtJetd/wdqcv2vof1eNxfRzRybIRQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-hooks-codex/-/dsh-hooks-codex-0.2.0-rc.2.tgz", + "integrity": "sha512-EtA1KUArcSwiyJqZCclbZ26Mo8+DLpP9JIFevicj40jD/wjBjX3DutFFiEdAxigUi3qgJs7VZKmNQd2yQuTbgQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-hook-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-hook-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker/-/dsh-host-directory-picker-0.1.7-rc.2.tgz", - "integrity": "sha512-J/by0v0yRI5LHPPaHCokDXEJNKNEPCaDziJueGI+fxpXfXwFvpoHp3hjwdWiN+bLPDdZL6DSQLh1evC46wobtQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker/-/dsh-host-directory-picker-0.2.0-rc.2.tgz", + "integrity": "sha512-qrgr2mgIaLCQJbJnMiVCuDnrGyQUgamjOnC9/K3oUL4YRc6ymNy7SJ5y+6YHtziA1dF81pSmFAA2QPZd2zQDVA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker-auto": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-auto/-/dsh-host-directory-picker-auto-0.1.7-rc.2.tgz", - "integrity": "sha512-o2YCHr3uioc4HyB/s24gKDr1ZktEAHsuhqQocfTWPLivwe2Uozdvh/Kjq1LU9pBNeBGTHzUvtkhgVMTCpQXedg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-auto/-/dsh-host-directory-picker-auto-0.2.0-rc.2.tgz", + "integrity": "sha512-loiTeinKMrqstd+4GdGV2Odz1rhdCZ4hHtS+oVeK/C/r+EhWK++GiZMWKf2fn06+32QOS4Gi079AlMT0/cuPOg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2" + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2" + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-host-directory-picker-browse": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-browse/-/dsh-host-directory-picker-browse-0.1.7-rc.2.tgz", - "integrity": "sha512-XV+iP2MXbeQ6nRKCiTGLE7ntDX6/SbJJ7hK0f8UO7WbC6TrbaCWtLTiCQ3xgqC314Zc3YpOVZPs7LGUS3P013w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-browse/-/dsh-host-directory-picker-browse-0.2.0-rc.2.tgz", + "integrity": "sha512-1mWqpuxBRxm4O+fUKpiAYne35MQMDTeerClJhW3pclnO90T5fs/gaaa+np1nDhLdsUMXeZKBvDf0X0KuvdMDEA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-host-directory-picker": "0.1.7-rc.2", + "@deepseek-ai/dsh-host-directory-picker": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { @@ -3391,42 +3339,42 @@ } }, "node_modules/@deepseek-ai/dsh-host-directory-picker-native": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-native/-/dsh-host-directory-picker-native-0.1.7-rc.2.tgz", - "integrity": "sha512-97pxHwk3bhMRgBlTH36W3fEyLI6JeuG6oaKLEVCyS8xduhAeWGVAv3M3JxmeTAQsKvIxaqwlVJ18bgHc7Qw6tQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-directory-picker-native/-/dsh-host-directory-picker-native-0.2.0-rc.2.tgz", + "integrity": "sha512-p+KJRDaCyiZzCozcdW+M2wtw3uvZ+EBbquaMFy0Z2PL2EacgDWY329nihql2NsziyJ3/EfwP4nya55N6Jn+jfg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-host-directory-picker": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", - "koffi": "^3.1.0" + "@deepseek-ai/dsh-host-directory-picker": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", + "koffi": "3.1.1" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-host-frontend-static": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-frontend-static/-/dsh-host-frontend-static-0.1.7-rc.2.tgz", - "integrity": "sha512-G1DHZONOfyxiPyvEMyJns3EFPANz5svjxh+gRK0PDC7WJv6fivvJ0agR3D2wa0RIRhQLML7FMw9C1MD2Hzrfxw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-frontend-static/-/dsh-host-frontend-static-0.2.0-rc.2.tgz", + "integrity": "sha512-8wLpf1rw7gGINGISrHloNaPJDIGUuekqGAlq1bn14BjE2SNd01woy/+xOJgWgu365poefA/xlQ/6hEv3rnsLug==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2" + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-host-open-in-app": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-open-in-app/-/dsh-host-open-in-app-0.1.7-rc.2.tgz", - "integrity": "sha512-bozNEbEAeCmk6fny4qaDioLYLvX9xLmHPYVAeXdXoLRML7qiwIP88BbH8NxpibreCcFKFi9uMpx/GdoiwK2bMw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-open-in-app/-/dsh-host-open-in-app-0.2.0-rc.2.tgz", + "integrity": "sha512-d/DDm/8s+VjLVx19FyXdn+TDDn+JUqmucU6ZHo7QqQClBndzyL4qvWKjHpRuYLmJDSwlcmsrKIppjdYIm9L9Fw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { @@ -3434,9 +3382,9 @@ } }, "node_modules/@deepseek-ai/dsh-host-plugin-inventory": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-plugin-inventory/-/dsh-host-plugin-inventory-0.1.7-rc.2.tgz", - "integrity": "sha512-krS/FKI7cacoUtjpIaZnFQZy4cM2DnshsP//jafFdC1LyKyh5gG97MPmQ37jRM5Gm4VDJfDj3ojqWzx3BrP1sQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-plugin-inventory/-/dsh-host-plugin-inventory-0.2.0-rc.2.tgz", + "integrity": "sha512-l/ESrOGxkk0aemM4t2b8yV3AvMZQ9oxSmgo4b1FSK3CYeaDoPJHC6iKW41DhmnJ0igdLpVIw+rg7R3KN0DREdg==", "license": "MIT", "dependencies": { "zod": "^4.4.3" @@ -3444,9 +3392,9 @@ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-agent-preset-registry": { @@ -3454,10 +3402,26 @@ } } }, + "node_modules/@deepseek-ai/dsh-host-product-telemetry-otel": { + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-product-telemetry-otel/-/dsh-host-product-telemetry-otel-0.2.0-rc.2.tgz", + "integrity": "sha512-qwAG4OA9IIILLr8NQwVJ+vBb25WLCSzj0lWM56nCKEir71rRST83DsSfaycR+xghWbJGf8nnJl5Nq9iFYDc0dQ==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.4", + "@opentelemetry/api-logs": "^0.220.0", + "@opentelemetry/otlp-exporter-base": "^0.220.0", + "@opentelemetry/sdk-logs": "^0.220.0" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.4", + "@deepseek-ai/dsh-otel": "0.2.0-rc.2" + } + }, "node_modules/@deepseek-ai/dsh-host-webserver": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-webserver/-/dsh-host-webserver-0.1.7-rc.2.tgz", - "integrity": "sha512-0ex5NsJFvpqchfnar/IPtNOG5Tx7PmtUO3/zVptT4MJs5OOrvtjNYHpZ6DGntmnpupgXnci1cUsQJIfG3D+U+Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-host-webserver/-/dsh-host-webserver-0.2.0-rc.2.tgz", + "integrity": "sha512-0zvI44emJMRr928Tfl//cPJlx/hiTGWfD1zaDlXu35eGIgOATFJlTPkJLApJvJOPVPPAlSOSdhI2L+j1TnzStw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -3469,9 +3433,9 @@ } }, "node_modules/@deepseek-ai/dsh-http-proxy": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-http-proxy/-/dsh-http-proxy-0.1.7-rc.2.tgz", - "integrity": "sha512-sG0bj5U6CX54BLWizf/6QtqYgtbv56qSe7wW/0B+DxmN+TtOr4s+6TRWLLMUxH2SCR9th20SwiEDHvuLf17Q7Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-http-proxy/-/dsh-http-proxy-0.2.0-rc.2.tgz", + "integrity": "sha512-zIGscCHeW6MUIKrksxhW03McWtKKpaDVVMf877bt51ZPP8p4UG8KmBUqJmX2l3eVoHeuuEyqM5zJSCj5NtSBGg==", "license": "MIT", "dependencies": { "undici": "^8.10.0" @@ -3481,9 +3445,9 @@ } }, "node_modules/@deepseek-ai/dsh-invariants": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-invariants/-/dsh-invariants-0.1.7-rc.2.tgz", - "integrity": "sha512-GY2lY2TUUH2Qk1ZnrB3Q5+lXSh4webn1kbt5nQfhojVmNbist/f3dJC8JJa7XXOUNvqAgqRN9IZ4egbDZ9LLxQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-invariants/-/dsh-invariants-0.2.0-rc.2.tgz", + "integrity": "sha512-QOVc0HpRsS8ekvprb45FlxieDvgR/cAMaxW289HASjMoV/U/B54FpbkHuPBw4EnTw07/sPkjx2B/23+YqE0cbg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -3493,17 +3457,17 @@ } }, "node_modules/@deepseek-ai/dsh-jobs": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-jobs/-/dsh-jobs-0.1.7-rc.2.tgz", - "integrity": "sha512-bzbdcQ1dzCAGjYDs2J+YiwG58cDpASecJ4N6euUJNl0CCmnDETwCUhCpyMKDKCWcExdG3XcHmCjaCnL2hZIC0g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-jobs/-/dsh-jobs-0.2.0-rc.2.tgz", + "integrity": "sha512-SuCCfXZDabBxsKbHoulXEeQrRSYuOYLSfhvnflQf+CYeb68wggKraejkLyO60LrCGnBJsgCqKIdIKLCUvIeN+g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-workspace": { @@ -3512,50 +3476,50 @@ } }, "node_modules/@deepseek-ai/dsh-jobs-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-jobs-local/-/dsh-jobs-local-0.1.7-rc.2.tgz", - "integrity": "sha512-DE0HLEuI15Vw1ncXLDESUIBTdWhrXgKWV3g/jupEGCwmm6GCqC9W9cjJPmbLP7JQGB7UPkui5DrIft+8MYL6Nw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-jobs-local/-/dsh-jobs-local-0.2.0-rc.2.tgz", + "integrity": "sha512-sNyolYfcNVodxGyoWUM3G0f+numJexMrqwR0HC4x9kvzzZNR1WZV7ca4lCAzlaRSEvY8UPYxKC6Fi4T+MnBkSQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-launch-environment": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-launch-environment/-/dsh-launch-environment-0.1.7-rc.2.tgz", - "integrity": "sha512-i8U15ebCS4tWtL2mnuhfl0h5XXBagtbiGO63/OMeHpfWb5sHUvTYBNWTDxmlMjLDkTNQgPsXmRl0UrbWKCSJwg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-launch-environment/-/dsh-launch-environment-0.2.0-rc.2.tgz", + "integrity": "sha512-IyhZjJJQ7RVLcKlc4pPPjojOKrr2XCYm7VRpslFq7bvGj3DGt8WMTSCCZUWxCThY2jg6kFF1ujiTGunELfRO6Q==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-lazy-require": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-lazy-require/-/dsh-lazy-require-0.1.7-rc.2.tgz", - "integrity": "sha512-tJGmGfJzr+zXK9ZoDLFF9r8ZI5X5ARz945rl+tHTEDcgtm2NavkRbx4qjOg3kXoBasYGXtp18RGlBB2rWT7vGQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-lazy-require/-/dsh-lazy-require-0.2.0-rc.2.tgz", + "integrity": "sha512-t6m+13fe+4veaepjGwNu0BLTtqdrSPq+A/zmOzC+7DXgWCBHJ3IxfW2vUlLviKfviwMI4BqQMPv4wHeuJgYFIw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-llm": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm/-/dsh-llm-0.1.7-rc.2.tgz", - "integrity": "sha512-hNT3ovFnbNDQ8g544bh2Q9ORX40aI6Y+jhjer1lETeHS4g0jTjqUUVfARCTA7uAFvHucSBg2rFgbisIktmJCxw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm/-/dsh-llm-0.2.0-rc.2.tgz", + "integrity": "sha512-6QFrQn/h0iNqCfPpgQidnHtLSpA99A7ZND/uYKaGSd/4BGP8KBhuRd0w63e9s4u+hfW8jc3j29WKcNLIOeUfcA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-crypto": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, @@ -3564,29 +3528,29 @@ } }, "node_modules/@deepseek-ai/dsh-llm-deepseek": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek/-/dsh-llm-deepseek-0.1.7-rc.2.tgz", - "integrity": "sha512-bFHhDxegsawOI2uqGHAbPoYiRM9Lpq5g31TeqVYAMcMCpa5qbk1wGUsAzCP+eJM/Sbb19VHJpsJj/Op6UbBESQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek/-/dsh-llm-deepseek-0.2.0-rc.2.tgz", + "integrity": "sha512-Vk0oz0qAXYLC/tKoGfhRioank4FNX0Xdx8oDYduKL1HDf2tO72X+Nrq7hZaJp9nwvXCcg5TnPRIvE8ETZ98C5g==", "license": "MIT", "dependencies": { "@deepseek-ai/cosmokit": "~1.8.5", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "eventsource-parser": "^3.1.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.7-rc.2", - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-anonymous-user-id": "0.2.0-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-loader": { @@ -3595,17 +3559,17 @@ } }, "node_modules/@deepseek-ai/dsh-llm-deepseek-account": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek-account/-/dsh-llm-deepseek-account-0.1.7-rc.2.tgz", - "integrity": "sha512-Yq3oVAYih7b+kvb4S82fqcKkOmVtoT1WoxCQ7Y27SYbir2gO6g/QqVk3CsLS0Xqnq1CwBAH4xU3r2m+siq2o6A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek-account/-/dsh-llm-deepseek-account-0.2.0-rc.2.tgz", + "integrity": "sha512-02nSBVyVxfRgZhNa7IHvSb3OMWFWRBTu1jCKMPcOONZx5e4wv8+Adad2vMfPRftEIJg7hFV2RGh/yN/5y02sZQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-deepseek-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2" + "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-loader": { @@ -3617,9 +3581,9 @@ } }, "node_modules/@deepseek-ai/dsh-llm-deepseek-api-key": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek-api-key/-/dsh-llm-deepseek-api-key-0.1.7-rc.2.tgz", - "integrity": "sha512-Djc3LE0fZ73U+T75P81obElk9c5Fd7G25uNubtcFcSDKuo+tuJi8qEqvSTScCQVvTAsCPRQh7Ti5YjPKQdO29g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-deepseek-api-key/-/dsh-llm-deepseek-api-key-0.2.0-rc.2.tgz", + "integrity": "sha512-F022Y9VK7NE3Z24TqTADgd9Gg3XzuVt8eRPXMRvs6rRDJiZBUCthFcSFAuZ668oTH6If4dC7PNoLgaN7QQVLRA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -3627,10 +3591,10 @@ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2" + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-loader": { @@ -3639,26 +3603,26 @@ } }, "node_modules/@deepseek-ai/dsh-llm-pi-ai": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.1.7-rc.2.tgz", - "integrity": "sha512-pkRHMAAu9v7Ko2yo+UzZmGg0rNlVymF3KjTch/z6kT9BfIxpI4dtNDkeibamszRvjqz3Oywm8uGm+Iwz0zW2sA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.2.0-rc.2.tgz", + "integrity": "sha512-8DxCwQNhfQwqNQ6khxyDSh6Pba9PjpnNQqvAz29SF/V86ClZNH5xZuqCdNfU8E426Ec6wti5oUtM+uKohMAe3A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", - "@earendil-works/pi-ai": "^0.85.1" + "@earendil-works/pi-ai": "^0.87.1" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-authorization": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-authorization": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/cordis-plugin-loader": { @@ -3667,9 +3631,9 @@ } }, "node_modules/@deepseek-ai/dsh-llm-retry": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-retry/-/dsh-llm-retry-0.1.7-rc.2.tgz", - "integrity": "sha512-t3RP8ftkHFUXPRnpUGLogKsgXykJWPDad251qk8PvOHpWw/ex6HY8GqXm5YWSgbLHpEKHz+0gR7u6MyIdpqtxA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-llm-retry/-/dsh-llm-retry-0.2.0-rc.2.tgz", + "integrity": "sha512-k992Xuafcz0plUyUHyxABDrB+elh6JYvVtQDnEIjUJkSAc8bbsN7ZcF5fxHFx0zCEoMrxRA7ZqtqxkFTYUiNMA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -3677,35 +3641,35 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-mcp-client": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-mcp-client/-/dsh-mcp-client-0.1.7-rc.2.tgz", - "integrity": "sha512-AUEhxqk8rPl41cIfi07/9dbIKKDOT0LWifX3K7xRki57X3Hd3XCT4PRiYekqt9sOJ7863d2t/knWk4pryieZtQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-mcp-client/-/dsh-mcp-client-0.2.0-rc.2.tgz", + "integrity": "sha512-UqP2sY1r6qAhBPFeuclqrXiMBBxPaCNrXlXRqKxAON7uI1wmZZ0B3/1GmBviQ3/WjjTQlOOkj0su2v4e5DMkug==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "@modelcontextprotocol/client": "2.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-mcp-resources": { @@ -3717,19 +3681,19 @@ } }, "node_modules/@deepseek-ai/dsh-mcp-resources": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-mcp-resources/-/dsh-mcp-resources-0.1.7-rc.2.tgz", - "integrity": "sha512-V6G8Hdmh5gtvzzvlV8RgM43LbTOnoQnfmMdd8dBNoHKZLvv0XvcpmqZWNZVqpDP8NUx3/PGjo9SQK7R3gwROYg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-mcp-resources/-/dsh-mcp-resources-0.2.0-rc.2.tgz", + "integrity": "sha512-ZP4B0DQPFlFpzUymv7GuZ2rwcyxTJ/xPAhn2r06yPUfUnwVFpcyt32ipOSAds8OnpHm9jEybRX4+lWzE8MK+JA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-system-prompt": { @@ -3738,9 +3702,9 @@ } }, "node_modules/@deepseek-ai/dsh-message-feedback": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-message-feedback/-/dsh-message-feedback-0.1.7-rc.2.tgz", - "integrity": "sha512-XYgpXXr9iqgiuCzpFzdoNR55tT+kyZ7xEYC0DuxdcK9JNHpQdQcckOZkJU8+MzJ1FjoYGijTSV+y5jSuhX2UlQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-message-feedback/-/dsh-message-feedback-0.2.0-rc.2.tgz", + "integrity": "sha512-c6gc3173YL1vIqyLXdj6vcTwXUhPZYOhSyMrOK4Zb5KkrSfGshNo5mG3+BVGd7ZW0vbsMScSGbNG2PXidmUTpw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -3748,31 +3712,31 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-native-command": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-native-command/-/dsh-native-command-0.1.7-rc.2.tgz", - "integrity": "sha512-XObRF7I6fVAXWSWvAK0HVp+nT9ZLR6g6mPss6j2ciovW6wBiAm71O2wzi2S1YqmQXYNaGwvudolqJyMRtCSCxg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-native-command/-/dsh-native-command-0.2.0-rc.2.tgz", + "integrity": "sha512-RgjkI2avXHxJFwI7tjb42WTHHd4xL6Ybbg5I12T8qbuW4ph6gzAGcl8UKv7tSFM59yD85i2rnULTiZOzKKSdqw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-office-to-pdf": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-office-to-pdf/-/dsh-office-to-pdf-0.1.7-rc.2.tgz", - "integrity": "sha512-4FQi4gTiSgPg6oCYcYv5eT8hewoOK1Y3sYBAMGmYwBcJXuy7e37qOGOAu9bKaowhTAc1bi0yofdNruBm7595eg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-office-to-pdf/-/dsh-office-to-pdf-0.2.0-rc.2.tgz", + "integrity": "sha512-Dl0TjqzrrzgQZCLATAvLuoXGOkmJ+deQLsLtL1HZUehN/aTyDI9j42obKPdOwSEHZeUnrdY2SEga+RiqY/J8ag==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", "@deepseek-ai/libreoffice-kit": "^0.1.1", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" @@ -3781,28 +3745,238 @@ "@deepseek-ai/cordis": "~4.0.4" } }, + "node_modules/@deepseek-ai/dsh-otel": { + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-otel/-/dsh-otel-0.2.0-rc.2.tgz", + "integrity": "sha512-LR1fSfTS2/0D/TYSSinIOu1AXO/iKRbZAnJ5d4un/rlGQKL0caQiCflQ2lo5ryPOIa9pJnIIEGu949xsZY2gIg==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.1", + "@opentelemetry/api-logs": "^0.220.0", + "@opentelemetry/core": "2.9.0", + "@opentelemetry/otlp-exporter-base": "^0.220.0", + "@opentelemetry/otlp-transformer": "^0.220.0", + "@opentelemetry/resources": "^2.9.0", + "@opentelemetry/sdk-logs": "^0.220.0", + "got": "^14.6.6" + }, + "peerDependencies": { + "@deepseek-ai/cordis": "~4.0.4", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/cacheable-request": { + "version": "13.0.19", + "resolved": "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-13.0.19.tgz", + "integrity": "sha512-SVXGH037+Mo1aIMO5B2UcleR43FGjFdN+M8JObSyEoQ2Mn4CODRWx28gN5jiTF0n5ItsgtIZfyargMNs8GX4kg==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.2.0", + "get-stream": "^9.0.1", + "http-cache-semantics": "^4.2.0", + "keyv": "^5.6.0", + "mimic-response": "^4.0.0", + "normalize-url": "^8.1.1", + "responselike": "^4.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/decompress-response": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-10.0.0.tgz", + "integrity": "sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==", + "license": "MIT", + "dependencies": { + "mimic-response": "^4.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/got": { + "version": "14.6.6", + "resolved": "https://registry.npmmirror.com/got/-/got-14.6.6.tgz", + "integrity": "sha512-QLV1qeYSo5l13mQzWgP/y0LbMr5Plr5fJilgAIwgnwseproEbtNym8xpLsDzeZ6MWXgNE6kdWGBjdh3zT/Qerg==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^7.0.1", + "byte-counter": "^0.1.0", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^13.0.12", + "decompress-response": "^10.0.0", + "form-data-encoder": "^4.0.2", + "http2-wrapper": "^2.2.1", + "keyv": "^5.5.3", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^4.0.1", + "responselike": "^4.0.2", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/p-cancelable": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-4.0.1.tgz", + "integrity": "sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/responselike": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/responselike/-/responselike-4.0.2.tgz", + "integrity": "sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@deepseek-ai/dsh-otel/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@deepseek-ai/dsh-output-retention": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-output-retention/-/dsh-output-retention-0.1.7-rc.2.tgz", - "integrity": "sha512-hQodzFmVrANIiDw3i662XkA++Jmj0TCFW2aG3/9RYpiR+wkxmEx1bmWv5MuTX9t5QZ7vdyaAUn3t8c11OGyxhw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-output-retention/-/dsh-output-retention-0.2.0-rc.2.tgz", + "integrity": "sha512-+yVL95Om473rZTHIyvjZ6JUyDl2orRpyjXeMSqOzJqh66/sERUfPgCtwMbnH9tzhxTF6nw6cC30I9dxgHEz13w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-package-manifest": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-package-manifest/-/dsh-package-manifest-0.1.7-rc.2.tgz", - "integrity": "sha512-oS6OD0emk+HD25B8FomvuAkqCg0aEooQEs/Tk7sZj9ww0uMXwYtU69Wnh4rFBQzp8pkZBYv9HeIzw67iBwDH0w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-package-manifest/-/dsh-package-manifest-0.2.0-rc.2.tgz", + "integrity": "sha512-CFycoLxUT4g4w1IGjaHi/IjTzTRgnQ2PQVeHHSWoEppD+0NTZ1rHHW3ofkh74ZgQagoeo7n+91Yjl0rDGuWE3g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-permission-presets": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-permission-presets/-/dsh-permission-presets-0.1.7-rc.2.tgz", - "integrity": "sha512-ci5LzPdhsaxUSMq43a1LOF5wixuFWECf3BzrUSlnOHp4q+cssd6Pf50LADe/CukHJkP7yf+ns8EXhT20iDwvrg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-permission-presets/-/dsh-permission-presets-0.2.0-rc.2.tgz", + "integrity": "sha512-7jOAGdhEtRlhXZnJC92Sj+Z689jGcZdI8xMkA64o5GNyTxDcyzmTMwQLa24Jqm0NH5GKj1DHYoKm8LMEmicl0w==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -3810,50 +3984,50 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-persona": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-persona/-/dsh-persona-0.1.7-rc.2.tgz", - "integrity": "sha512-1PceaaPx/xlZpCOJmcHVs2nAxdtgGTNo4mpytrmeEstxxc1ZEno7AoDKeTuZcnC4HIdSXBsTZHTWndNUW+SeDQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-persona/-/dsh-persona-0.2.0-rc.2.tgz", + "integrity": "sha512-GfOs+GRlYVN4KHmCmAYal7aONmNQ9Z8m5yLwZKVC2c9tG1TsF2+wU+sHUXU1KrStdF5UDOKoE5qMhz2lPkC6xA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2" + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-plan-mode": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plan-mode/-/dsh-plan-mode-0.1.7-rc.2.tgz", - "integrity": "sha512-Lj4btqbwnSaXC2mQkk8VHnOPqx/HFNQyuLLB/n6RgeEjbAVDeGzDWcjEy3vpT+7K9YY1zU0FxMwp7ON3cGDX7A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plan-mode/-/dsh-plan-mode-0.2.0-rc.2.tgz", + "integrity": "sha512-Lpjv2GSz7rHijH+RNUwLTLH6AIptf6jUw/VfjiD7jGG0w6kq9KfpNs9WEW+lHeBrIWKGcfUkx47P3nu8uUbVvw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-questions": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-commands": { @@ -3862,14 +4036,14 @@ } }, "node_modules/@deepseek-ai/dsh-plugin-manager": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plugin-manager/-/dsh-plugin-manager-0.1.7-rc.2.tgz", - "integrity": "sha512-jYMEyz8fJWa099wvs7meXCOC+W9n2N5mxDL4hze/GDU+t9+brMrpnif6Ind8ENTu/RXVx8O40iCCsPcUXGwa2Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plugin-manager/-/dsh-plugin-manager-0.2.0-rc.2.tgz", + "integrity": "sha512-WnLDgkj3snW8YnOESlAhHTYerLSZBVEqYlup8XHJBXly2SnOTG6GG11phLvngocSDbhvMI6PB3L2oWkFNTYNFQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "execa": "^10.0.0", "yaml": "^2.9.0", @@ -3878,15 +4052,15 @@ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-hmr": { @@ -3898,21 +4072,21 @@ } }, "node_modules/@deepseek-ai/dsh-plugin-package-inventory-deepseek": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plugin-package-inventory-deepseek/-/dsh-plugin-package-inventory-deepseek-0.1.7-rc.2.tgz", - "integrity": "sha512-Y+3VG3feOpjrwFupkr6jAncASs4As82VswGclr7FzqnzGz6GS2YIlALe3EaQ4sBygN1gE3cnXPFLFUhFXOzEtw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-plugin-package-inventory-deepseek/-/dsh-plugin-package-inventory-deepseek-0.2.0-rc.2.tgz", + "integrity": "sha512-aSSwU1KDIodDj0s28C6njtDE8Mz3pIrPh3i7aVu4SHbGkYxhURcrfCtdRREVGnCRBsp0QV6W8qx6ArC2i+DwUA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-agent-preset-registry": { @@ -3921,113 +4095,113 @@ } }, "node_modules/@deepseek-ai/dsh-ptc-runtime": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-ptc-runtime/-/dsh-ptc-runtime-0.1.7-rc.2.tgz", - "integrity": "sha512-zRFwSSUgTpKuFQTVwnuNO4067Gyi//4C4RRLaUntXaHkZv3z1S07f1fTaYwX4+ubIIAuAVeEsczxf6tPgZ8P5g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-ptc-runtime/-/dsh-ptc-runtime-0.2.0-rc.2.tgz", + "integrity": "sha512-HR/3h1VFRcNlAAjCtCAxZ4V3F5pViYicXcLBuYLGjzXWpOhr4zKzeFKh9+UMLjsc9XWIarJMoSvxl662nDV/xQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2" + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-ptc-runtime-node": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-ptc-runtime-node/-/dsh-ptc-runtime-node-0.1.7-rc.2.tgz", - "integrity": "sha512-E+c60QE0Lh4GCw7yDkvO56E17uRqbiT1ehJxdmFMmpu7hg3wbTT4rNB+w6qVsy5RUs8LSW7bsoSIk9ibW4R9ow==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-ptc-runtime-node/-/dsh-ptc-runtime-node-0.2.0-rc.2.tgz", + "integrity": "sha512-MYGTCOBFYuD8568j0hm4ChOTX/cBOUk0H1s+xuioRy9NAjjpTz+ybNZUJTYP3+noN5nzinDZfeiRdHqVoFh6YQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-pwsh-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-pwsh-local/-/dsh-pwsh-local-0.1.7-rc.2.tgz", - "integrity": "sha512-OJlGS7JLJe5CcLMvVdbxryS6bKW5pfYN2emIeTYhSu+tBsKAiah8kdD+2EOwC0XMq24NcwgKO7xlNmS8oIrurQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-pwsh-local/-/dsh-pwsh-local-0.2.0-rc.2.tgz", + "integrity": "sha512-WNKHUCDkNeT108RB5o/clJ696K3vp9dw38Ekr23wRlWX1EDyxYmTzRDt7WfWDZoeQ+sh5CguLrUbFoPsOy9uEg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-pwsh-sandbox": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-pwsh-sandbox/-/dsh-pwsh-sandbox-0.1.7-rc.2.tgz", - "integrity": "sha512-c3kXLNhf8fNL7nt8NfJwcHU0jPvRiy6IPF+DHtT/Tp7+NhytHwj8vR3Ln7GIwsXGNU2hJbaD63S2IStjWLaylQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-pwsh-sandbox/-/dsh-pwsh-sandbox-0.2.0-rc.2.tgz", + "integrity": "sha512-V59arHVNWPhPHWZaEtdsl3hQ+9E1dZuqW85aGp5N/Vh2IdvEW99BcKL18jB5o+uZ1eI4PmAQ6HHWDU95ephmyA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-pwsh-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2" + "@deepseek-ai/dsh-pwsh-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-repeat-tool-reminder": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-repeat-tool-reminder/-/dsh-repeat-tool-reminder-0.1.7-rc.2.tgz", - "integrity": "sha512-tuG5xgqXth+CfNJiEMhsW+HTXfy14vMkuKx+J+47792P9AdxHr/a/Gi8qj6Err7TRU+Tz+d/VdzfsY+6+oWkkQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-repeat-tool-reminder/-/dsh-repeat-tool-reminder-0.2.0-rc.2.tgz", + "integrity": "sha512-UOtSkw6L8OTUrCofK2t+VDuJTlX6eR/Ppki8lnHyJY4kcqUwiIMQ58SwQlB0shDdrJbMcK6HlpvZBsIEB3wTxQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-sandbox": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox/-/dsh-sandbox-0.1.7-rc.2.tgz", - "integrity": "sha512-7aP893mtTvnuZfCKD6hUN5gYchi6Wogn4W3mg/rGMvogmhbWgrCs00boJx/eHK4KvVJmEW1e8kO5N+GtsesptA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox/-/dsh-sandbox-0.2.0-rc.2.tgz", + "integrity": "sha512-luKF7ey6HRZkGhImqLCB5Npt4f4omDRk1r+x5qQNqqdNOuN9LXciKDMNPfnSbHfKCcqSZbH3sK+APOmKzRAhVA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-sandbox-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-local/-/dsh-sandbox-local-0.1.7-rc.2.tgz", - "integrity": "sha512-Xfyj+z5QZbbAU3nGU5JMpoJpL+mHkNCueMO8nzbBPiDvJBNeHvNefEvKmBRgtQmaxeHrpG9NRU6P/81KfqajlA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-local/-/dsh-sandbox-local-0.2.0-rc.2.tgz", + "integrity": "sha512-fM1QtkRxeQ498isBeotl0lW+oK/GS0G63cBNvwJJn6686Qzdl+gqwTDPS61L8pFzxRnqhqcXFxzu2tIV3o2zbg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-sandbox-windows-acl": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-sandbox-windows-acl": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/node-addon-system": "~0.1.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-sandbox-policy": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-policy/-/dsh-sandbox-policy-0.1.7-rc.2.tgz", - "integrity": "sha512-pIhCaOEqYjNoKy/c7dYYgYzK+zp8/FxnEeaBA5e6fTmNROb+/qSFsC4hY3Qu+PVU9IdbH/4fa6TbT2jnqoDPQw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-policy/-/dsh-sandbox-policy-0.2.0-rc.2.tgz", + "integrity": "sha512-0xXVqWw908/V6scohMyyU9SZSiQJYji+S1hMPulcUNLb3iew89d+WPWMIkWQBJRvcJzdQ2ghHwCESRkONXTJnQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -4035,33 +4209,35 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-sandbox-windows-acl": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-windows-acl/-/dsh-sandbox-windows-acl-0.1.7-rc.2.tgz", - "integrity": "sha512-QOi5DSTDdEXTI2qhfx/uRZ+2zo3ssDG+r8uHWCor8Hg3VK28JICO1nWNbl3SDevvHqcKsM2oxNdwr5XTSC14jg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sandbox-windows-acl/-/dsh-sandbox-windows-acl-0.2.0-rc.2.tgz", + "integrity": "sha512-z8blR3g/lIfWd2zR/GjEitXdysNU8NOcPZdILuxoSodBDpkPmKQOHYaH7nzjB1a/S5TxMADgPE1UDXsmJ0zfTA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-lazy-require": "0.1.7-rc.2", - "@deepseek-ai/dsh-win32-process": "0.1.7-rc.2", - "koffi": "^3.1.0" + "@deepseek-ai/dsh-lazy-require": "0.2.0-rc.2", + "@deepseek-ai/dsh-win32-process": "0.2.0-rc.2", + "koffi": "3.1.1", + "yaml": "^2.4.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2" + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-schedule": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-schedule/-/dsh-schedule-0.1.7-rc.2.tgz", - "integrity": "sha512-GR9m2V923qZkgvkEGcF/XN47hxs5By/3XahtJjqSRnqnUdMjUZ1k2C0XL4dDsluJLefrpFAK3sRx0LPJXxer3A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-schedule/-/dsh-schedule-0.2.0-rc.2.tgz", + "integrity": "sha512-1eqTxT3gTs0qDynu0r63ciHIAP+tUNgOE964Y7WsfpzOyuE+CyF5FvZhxEdErVp84bakXehePUdKZ6Z+2IVIkw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -4070,40 +4246,40 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-scope": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-scope/-/dsh-scope-0.1.7-rc.2.tgz", - "integrity": "sha512-rk/OM5ej6/V8pCNczEqQ3BkKx3DuPeFGzNUsEZo8hF+tnkF/EhsxMWSXC/yP/uLKeNkSsVHzjFpaQR0qr0J3gQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-scope/-/dsh-scope-0.2.0-rc.2.tgz", + "integrity": "sha512-066p7Wv74GNWt4xA5Cyvl+7c/i9KrNEDALYh2/hu0VsJPLb4T9He+TY7y1bld9OgungmqyTy1n/cB2ZrVskvxA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-sdk-app": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-app/-/dsh-sdk-app-0.1.7-rc.2.tgz", - "integrity": "sha512-H+SUCfCrHAIHUSSM3jnxUqUf3frSdtsUDBDcQ0SjybfyWuq4P3w/L3hfmvVK26EitireKOYkhoOpEB5I/PzXlg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-app/-/dsh-sdk-app-0.2.0-rc.2.tgz", + "integrity": "sha512-RX2ugii2C1AwJk/n1ajqypelNubOxdMfTNsG+vwTBEtonmjiJ4ACoKLFV/P6+RtyEeKEcveIEO1EmI6yXEjeMw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-office": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workspace-dependencies": "0.1.7-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-office": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workspace-dependencies": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "commander": "^15.0.0" }, @@ -4112,308 +4288,308 @@ } }, "node_modules/@deepseek-ai/dsh-sdk-jsonrpc-server": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-jsonrpc-server/-/dsh-sdk-jsonrpc-server-0.1.7-rc.2.tgz", - "integrity": "sha512-2eOJZ/Ml3p4LnASEGydxUq+qTild9E6mcbBQmMElRfmiy0Po5b42L0Ds+8V0uRxVKZbvKooq8XNhDywQ4ZCcQg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-jsonrpc-server/-/dsh-sdk-jsonrpc-server-0.2.0-rc.2.tgz", + "integrity": "sha512-lNg524lActTvh27Z+FDQOD3n43hzVXe/rN9+q3gGBuUeUkMv+7Hw5TFiDqE6H4VzqAUvuQp8B/0LkChtY2Fi4A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-sdk-minimal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-minimal/-/dsh-sdk-minimal-0.1.7-rc.2.tgz", - "integrity": "sha512-nxvJQXkrA9PvgGh96GAel2mpW4XCR6D9VTgYb1UzVTX6ja6kJT+IR2SIRHf9BnqWdDHxQXw7kGdcxd9GywE2WQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-minimal/-/dsh-sdk-minimal-0.2.0-rc.2.tgz", + "integrity": "sha512-yGb64ou0LUM9mH0dz4UaX8d+bKp9FAybIIS4IRJVxrWc/K3eCETrFNoSVE3LKmVY/QgUzx15XpVVp6GzdGRx/g==", "license": "MIT", "dependencies": { "@deepseek-ai/cordis-plugin-timer": "~1.1.6", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-retry": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek-api-key": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-sdk-protocol": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-protocol/-/dsh-sdk-protocol-0.1.7-rc.2.tgz", - "integrity": "sha512-jt75g7h8cxypjL6uXGiWlsvSpO8dY/aUo5Me4wnxpeslVyItYQurkIk35rYBlVG4fdlFep9/FAy+pRhnK/TKUA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-sdk-protocol/-/dsh-sdk-protocol-0.2.0-rc.2.tgz", + "integrity": "sha512-hs4Kl2x17wAuhSMUWuNpeHvv1mOm+F+A2EQnYu1QmxVux50PR3xHthee7IX/PylpgZybcfBn1JAigKvOFs5GPA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session/-/dsh-session-0.1.7-rc.2.tgz", - "integrity": "sha512-0dXv1t4Zox/yHkZ4PfPNSBWJfIc72PDqOvjz43EMoHpbmoKTVpit2UpUI+yTtX01e4MVBbDMxBZ95oJW/Oydnw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session/-/dsh-session-0.2.0-rc.2.tgz", + "integrity": "sha512-wj+6MeqCYbDcbEvKH3puHyEGdjyu51JwBoN6Ua2tz6griLufDgLM5HpSU40L5xgpbOfrYVhXZs4vRgOrMlFY2g==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-scope": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-checkpoint-policy": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-checkpoint-policy/-/dsh-session-checkpoint-policy-0.1.7-rc.2.tgz", - "integrity": "sha512-2V+o25gPkQNeBXD2E9zSTCxZzEnIKmClnQwhXEMKFWwS6Ibm99GFc51DFjIvhdu/I0/YawOS637KsrPznHILpQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-checkpoint-policy/-/dsh-session-checkpoint-policy-0.2.0-rc.2.tgz", + "integrity": "sha512-aymiGTfsQcEmlkeq8X4ybYUjKlJagjwhY7qwj7+85i/EOlU8qSzBF7clYkjJBdtN9CAKBAcAPElbgLtwzqfT4w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-format": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format/-/dsh-session-format-0.1.7-rc.2.tgz", - "integrity": "sha512-ayk2VoX3r7m8U9rVc+F70qx76Eq3Mi3ToLySi29hDZPFLy8ujjSOO5LVCC1xmon8uukfcnScvElNPoP/mKTkBg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format/-/dsh-session-format-0.2.0-rc.2.tgz", + "integrity": "sha512-qdWtsJt1cLJbUAMCgzRBZ2LyW+XRJpetnle4N/0X/pkmJ9eOM6Y+QqwRQdcEcI4pWuEbPwuq7/HrnqoanVaiwg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-session-format-catalog": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-catalog/-/dsh-session-format-catalog-0.1.7-rc.2.tgz", - "integrity": "sha512-PMwm6M713ZWMqV0NVRFGeP0eYoBBCe0n4l5k8g1sRI+e2wD5xVoTEn8ZduG0vxnrVrGneJRDPQjZ4TiMi/fgDw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-catalog/-/dsh-session-format-catalog-0.2.0-rc.2.tgz", + "integrity": "sha512-wBGYOqel01uyjVyhKjttJeWH99MyuKaaZRrrlvNa5iLDBTysqKrc5AE5MNx3UvvBFmF6Gi/N8FoycZYWOPL6Ww==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-compaction-image-offload": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v0-to-v1": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v1-to-v2": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v2-to-v3": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v3-to-v4": "0.1.7-rc.2" + "@deepseek-ai/dsh-compaction-image-offload": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v1-to-v2": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v2-to-v3": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v3-to-v4": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-format-v0-to-v1": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v0-to-v1/-/dsh-session-format-v0-to-v1-0.1.7-rc.2.tgz", - "integrity": "sha512-2JjUnl5+00N8/eda1s47VXP8wEl0HFqLRKk3MgEcRb6PEH3NH3Mvxb6jmkF6EeH0mMLLvzYHbpfDazOhECkXRg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v0-to-v1/-/dsh-session-format-v0-to-v1-0.2.0-rc.2.tgz", + "integrity": "sha512-PPcfT7txn82/sZnFNxsuxEEUSSdEfBTkNTuOCaiu5ANDMmxUaxOOW6gXt+zBKndGJZRgCR/u9SoAdKv659FSZQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-session-format-v1-to-v2": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v1-to-v2/-/dsh-session-format-v1-to-v2-0.1.7-rc.2.tgz", - "integrity": "sha512-a7Rsv7z2zeIyWpwRWkdtbi1T8r9zBGvbcoQVQEPpmpMFH9qu5hZmzYUGNFS1qRW5KW2cZoOU+qRxHwRoKI0dcQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v1-to-v2/-/dsh-session-format-v1-to-v2-0.2.0-rc.2.tgz", + "integrity": "sha512-PBIsz4OBE0wNnapaD87lz6255em24Kn53BKV4K1AqiNH9OWf1+m29TLXs/ICtZ2xigk6TK5H9q6oOVBBmbZyVw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v0-to-v1": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-session-format-v2-to-v3": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v2-to-v3/-/dsh-session-format-v2-to-v3-0.1.7-rc.2.tgz", - "integrity": "sha512-che+x4X57f4MPWYWjj3UkcDs4qU0sQspUvy0Ie8w+iMFPkH0C7f/629l6ubZXRFrGF/k6djbyLR/NYH7nArZaA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v2-to-v3/-/dsh-session-format-v2-to-v3-0.2.0-rc.2.tgz", + "integrity": "sha512-vrQQ1l3JgPIv/19mhm50FVD40hjro+tAkP3L1PNtGHrbBoYriNWXpR4QDOCQsHdPhg3vpnp9MmARMr8vZzl0Nw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v0-to-v1": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v1-to-v2": "0.1.7-rc.2" + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v1-to-v2": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-session-format-v3-to-v4": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v3-to-v4/-/dsh-session-format-v3-to-v4-0.1.7-rc.2.tgz", - "integrity": "sha512-PpGsFntVbc6HEnIlTRMluk55YPAFGmbz7SSyYMXDaz7N+jzWTa54AuMg9gUthHxPwZyj7KF2QtJAJnSQ2+GPGw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-format-v3-to-v4/-/dsh-session-format-v3-to-v4-0.2.0-rc.2.tgz", + "integrity": "sha512-UkiNDdGS8cwJKqjvHs52BKi+3NuKhoziz/l0IrDoDYpSdgDfK8HrrXkvIxOi+QaBUgIxNTQzA6tsI+TAIMDsGQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v2-to-v3": "0.1.7-rc.2" + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v2-to-v3": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-session-log-deepseek": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-log-deepseek/-/dsh-session-log-deepseek-0.1.7-rc.2.tgz", - "integrity": "sha512-DOSb50EoF9ZGojLyCf+WCgHgz98aHXjQR7fX22EN7g7jDaOF7iFkFyBxJr7cHkkCwMGXgGXqvVlVb2r/Xmsyiw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-log-deepseek/-/dsh-session-log-deepseek-0.2.0-rc.2.tgz", + "integrity": "sha512-sfQSvHI+19z1fzw6Fz8kGNHIBnuJ3Fp2HOOF1uSRAypCQaiiIvhcP+1TmDrbix7Dwh1uEcF0A3lqKX92G55ZkQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-log-export": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-log-export/-/dsh-session-log-export-0.1.7-rc.2.tgz", - "integrity": "sha512-y7Gt5ud52yFZM+v9sdmNyxUWEbGh3xIlXg5MWo9+159KBqyLyfO9yfA8MkTL8PouqNNvHwvN3Ea5ZZm9gWFthA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-log-export/-/dsh-session-log-export-0.2.0-rc.2.tgz", + "integrity": "sha512-e8Hwf6Cpnv4mWYiN7xFeSwI5qfPhyGhkDF0ln/k+gANwyQltk0hHu1D1aWQ2OTMvMhpJ9i+MlRJH06DA99n26Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "fflate": "^0.8.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2" + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-persistence": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-persistence/-/dsh-session-persistence-0.1.7-rc.2.tgz", - "integrity": "sha512-xZXMo8hYMnh96UyxpkmDqvfxpmVNWbTlXqSuJray7S2kW8AkugKDc+FMy2+/znoBHhZsi+2/uKJRPj6dwDBIsg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-persistence/-/dsh-session-persistence-0.2.0-rc.2.tgz", + "integrity": "sha512-2OoRHZYWi5Vy0+1bPU37Y/NTh6uQiZ3VdpvDmW1oCgsapQr2JS/Lbody1gXOMJ1KXglCSLmePgTMC00uKw/UIg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-persistence-jsonl": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-persistence-jsonl/-/dsh-session-persistence-jsonl-0.1.7-rc.2.tgz", - "integrity": "sha512-Dymapt+M11rJKQgsisfod2LSf0HvyUN/8QTv+g3BAXlRh5YFXvRcSVsY3XWj5NnUs3tlbU2aauBE7OXbMSP4vQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-persistence-jsonl/-/dsh-session-persistence-jsonl-0.2.0-rc.2.tgz", + "integrity": "sha512-iAzXWC8jmiLYjK+wuN/fAKXLniAfClWm0CmEIwSxZnJGVy8c0iy7j5v8UfOqUbwuGfqo5HUWfyLGgxbWH7SG3g==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-catalog": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-format-v3-to-v4": "0.1.7-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-catalog": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-format-v3-to-v4": "0.2.0-rc.2", "@deepseek-ai/node-addon-system": "~0.1.2", "@deepseek-ai/schemastery": "~3.18.4", - "koffi": "^3.1.0" + "koffi": "3.1.1" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2" + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-projection": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-projection/-/dsh-session-projection-0.1.7-rc.2.tgz", - "integrity": "sha512-s5T8oHBEh+GeOTJ+wehD4CGZkTiWgczZZA+NDbfbqUO0k5L+dk0kk3fN+/srAg77rhR7UeeDSR8ZNcpYx/VUdw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-projection/-/dsh-session-projection-0.2.0-rc.2.tgz", + "integrity": "sha512-caJ+XGjmR8ouws0LrvuXrabrzi21akB2l8CniUHdx4IpT6GkLapFYlWLbjZlDYqEWB3ktR+q32nxW2s+f27GSA==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-projection-cache": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-projection-cache/-/dsh-session-projection-cache-0.1.7-rc.2.tgz", - "integrity": "sha512-7SRuNDAzOVMbKoXyK0GAA8xMYVRAHUCoYiR56+4hHUkU7YQ5JuRjQiHxG6dEtYqibp3AI8E+oXgOJhkpB5Gl8A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-projection-cache/-/dsh-session-projection-cache-0.2.0-rc.2.tgz", + "integrity": "sha512-w6V+7Xl6drXgTjsfUAY76/dmt+B6WRnNin3Vyf+2Bo+Y2eMjyymlzc3j0+Tz0bH5oaCLD4k5zYKV9sOZEk24Yw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2" + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-query": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-query/-/dsh-session-query-0.1.7-rc.2.tgz", - "integrity": "sha512-dS9+GFdXBS0UWiSMiloD6IpSb7cDy7ig//h0LaGZAro8xcfs+rY+78Eu5JKrTObTCTL4p6x70cxAJdbRaIxzGw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-query/-/dsh-session-query-0.2.0-rc.2.tgz", + "integrity": "sha512-seZkaK6E+L2KVUYbzQ5O3S9kKkINul/1WujXNsE7/9vE4NSg97hJjZxCwqYs81qlEO0Ei3f27+W61EtXOYYoGw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-session-format-catalog": "0.1.7-rc.2" + "@deepseek-ai/dsh-session-format-catalog": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -4428,18 +4604,18 @@ } }, "node_modules/@deepseek-ai/dsh-session-query-sqlite": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-query-sqlite/-/dsh-session-query-sqlite-0.1.7-rc.2.tgz", - "integrity": "sha512-Yxer7MvfvJ6mi9Gkvl+NZyKLZkVuA8eMwhQW8O7EL6AK4I+Xb8tCJymvgD4ev/EFzuoQJHgtlwtD4x86qQp/GA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-query-sqlite/-/dsh-session-query-sqlite-0.2.0-rc.2.tgz", + "integrity": "sha512-LyR/1M40kFBJF8TtidCJLLHNQN07ANWtW8+IISBmH0/XqrfqPGXQGBlxorNEYC+JyJ+QHF8+8ltdThMpdEqdkg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2" + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-persistence": { @@ -4448,31 +4624,31 @@ } }, "node_modules/@deepseek-ai/dsh-session-reference": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-reference/-/dsh-session-reference-0.1.7-rc.2.tgz", - "integrity": "sha512-Yo+/foHDI5JitZl/+Pt76QpwytkkDjv5vwSKtMQBXXLXPRJSuXz+xtSkEqQCQ1667RbksGZz8mVzWSZWb0IpYg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-reference/-/dsh-session-reference-0.2.0-rc.2.tgz", + "integrity": "sha512-RWiFw97/ydhe9dwiLJwCVTJ78pvEQXZKVu72ZcbIcBZvoD5MUjVy+5dMjwhzVUwqOlaeRYhQZ+XaLZYt0FsEdg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-session-projection-cache": { @@ -4484,199 +4660,197 @@ } }, "node_modules/@deepseek-ai/dsh-session-stats": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-stats/-/dsh-session-stats-0.1.7-rc.2.tgz", - "integrity": "sha512-BT3X9w6REGTkc5bRH5jLiQ6Hv+jkiqhxzSQnnwJKmskowthLwsigN9cn760IBBCPZNyPNGghixAMxm9pl0/yIQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-stats/-/dsh-session-stats-0.2.0-rc.2.tgz", + "integrity": "sha512-kA5Yv/FhIbrsFuNuahOPZP28KXbbCnEO6qHAULDvKZ5iO0/MpnriLKeSXRLS657c6DETC25d0I97HBujeNRQgg==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-telemetry": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-telemetry/-/dsh-session-telemetry-0.1.7-rc.2.tgz", - "integrity": "sha512-JyCrRnTlA5tKU+8MVP3+byoA3ducZjZpSJp/2t0GofbvyAhYdvQVoR3hb4h4OxUxPiW+dPUtC95gCr+snM42Ug==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-telemetry/-/dsh-session-telemetry-0.2.0-rc.2.tgz", + "integrity": "sha512-L0ST+ZmVYdk2YMzgOZLPZNmhB2htF1HqNahuBJpID2d+XyiWYNy3vXhm/lHPs79FxHKN0XVJUR5mUv//MZK4LQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-telemetry-otel": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-telemetry-otel/-/dsh-session-telemetry-otel-0.1.7-rc.2.tgz", - "integrity": "sha512-rgWtlx4Wc+F9grOeun9tt9R0u6HSbToxapkxEeJFtkSIm4TFAUKRP7osv2I7LEleUNmc7dpQtp87aHrWpnXXKg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-telemetry-otel/-/dsh-session-telemetry-otel-0.2.0-rc.2.tgz", + "integrity": "sha512-MIxi5PWmJIkhkPro8DSycrF5TFWgCA+5y0UVHtiHqUN+tXTltAd0OWtG/wAveyaWhbJdsY/jikx0U7YSibcyrg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", - "@opentelemetry/api": "^1.9.1", "@opentelemetry/api-logs": "^0.220.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.220.0", "@opentelemetry/otlp-exporter-base": "^0.220.0", - "@opentelemetry/resources": "^2.9.0", "@opentelemetry/sdk-logs": "^0.220.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-telemetry": "0.1.7-rc.2" + "@deepseek-ai/dsh-anonymous-user-id": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-otel": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-telemetry": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-title": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title/-/dsh-session-title-0.1.7-rc.2.tgz", - "integrity": "sha512-UsbFH2ESc8lY2YgSb9OPsXOBryOc7qq0f57FYccb3yOAez27afERWwvcPGZY8D9YTJKZCf0Q3ae/NZMQU15AJA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title/-/dsh-session-title-0.2.0-rc.2.tgz", + "integrity": "sha512-602qEtmftsQfRzUu4u0sispiHXDGnRGwtS3+isaPmcEDlxETwMjWusatAaGvRIlrl6GGc27mr1IbqxjHWwI5zA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title-first-prompt-llm/-/dsh-session-title-first-prompt-llm-0.1.7-rc.2.tgz", - "integrity": "sha512-I7O64gk/HLoBjPWu1ikDd6kEz7QZKfI+njyLGaGapLITycRMYWDaSCQGKXqPvTlMPTNQL8ym/kKXbFrG61j/Vg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title-first-prompt-llm/-/dsh-session-title-first-prompt-llm-0.2.0-rc.2.tgz", + "integrity": "sha512-72eo8zMep5+okUgUcBCIFhrTVb/5EuR/Ts9W2fbVzSh3+hFC8WKkjKTFrtUMoZeIX9yv2se/R6QC/GH6q0Yjdw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title-llm": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title-llm": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-title-llm": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title-llm/-/dsh-session-title-llm-0.1.7-rc.2.tgz", - "integrity": "sha512-KmHI4hvuY5lpeMJLq2sR8vxTXvakgSA96DbqmqX3zbE8neCM+pojZBcUeDKdYwV6TfiT2oWJno1n7QGwoT9fdw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-title-llm/-/dsh-session-title-llm-0.2.0-rc.2.tgz", + "integrity": "sha512-S3WNORrtkrDI6F9NADF2cKdGO8FxS7tvSsf+cxmOu6qJktidRP0/n2O9ePmOX3azZ93Ta/mGNMbPueSs7Dta+Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-session-turn-outline": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-turn-outline/-/dsh-session-turn-outline-0.1.7-rc.2.tgz", - "integrity": "sha512-Ouag8143h3+exBd8Q7iQ4XI22VcR+0rfDgOjzsVC3WMq6ckHLeo3SrxLFLXMuLn+UpBTBnjy1b2q6uaLemQsIA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-session-turn-outline/-/dsh-session-turn-outline-0.2.0-rc.2.tgz", + "integrity": "sha512-MMh5n7FpikqC/JkH0M4v+2zO8ezrxonq0XSQ81F7A9lD+eEXGngpspdj/Fatf7l+x9OQpy+BcNqFwlst2i31DA==", "license": "MIT", "dependencies": { "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-settings": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-settings/-/dsh-settings-0.1.7-rc.2.tgz", - "integrity": "sha512-xS48//SMs3xp5qI+brj0T4BsJ1vgcv2LteZO6lW4X0YZVUOIe6H9aS2sRPh2OAWTFHrzPep4NwVkAOCD8NvBzQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-settings/-/dsh-settings-0.2.0-rc.2.tgz", + "integrity": "sha512-Py4ZbCyady6st+h8wlsPJxrAOg9VrT1+tltymnJUiAmdnZjMADZKWec9JrB2KwUuo27R+IbibxzaYQOvnZdUkg==", "license": "MIT", "dependencies": { "@deepseek-ai/cordis-plugin-loader": "~1.0.5", "@deepseek-ai/cosmokit": "~1.8.5", - "@deepseek-ai/dsh-config-editor": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-config-editor": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "yaml": "^2.8.1" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" } }, "node_modules/@deepseek-ai/dsh-shell": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-shell/-/dsh-shell-0.1.7-rc.2.tgz", - "integrity": "sha512-l/CdrpqFG3SNPKBm7/zJkqn8gODxMLcTOg57zSqyDi5VdJXb8dlRQNHH4KfhxfWM9rZSH5AC94g6Il2n3sOQ+w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-shell/-/dsh-shell-0.2.0-rc.2.tgz", + "integrity": "sha512-+3uBpxhXSzukUZx7XjdnUVfItj/w4maPQAcDXnVxF8vVt/dHa2NDJBXyYC9fzIA4PnXqVHFURdrhMfFgeD7GJA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2" + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-shell-env": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-shell-env/-/dsh-shell-env-0.1.7-rc.2.tgz", - "integrity": "sha512-Zu31yhGgnB+WMah0Qb/+adZTeUr1MQLmNMU8lV6YVt20tCnbA+HFI/akPTIoc9Ux8+Lqf6/fyv4e63OniPXaRw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-shell-env/-/dsh-shell-env-0.2.0-rc.2.tgz", + "integrity": "sha512-Cl4i32DPSLPra4mt8wBPNVDbV4+mG6UBLGF1EXsmjpj51Xg8slVqPMcs7ThkgesHBG+Fvpbvu4Y0aGhOckcXYw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill/-/dsh-skill-0.1.7-rc.2.tgz", - "integrity": "sha512-m1SFnBjx8F4upZObk13d3MC6QsiNA3kWHJ5dOZu+Z9oB5BudzNnFJWXZf2gcZclWai9lOiKxCb1ibPio1inwUg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill/-/dsh-skill-0.2.0-rc.2.tgz", + "integrity": "sha512-3QfzZ6qWfESq1TRoVjEfoBRCTONRLU9aLopKpA7hJg/LZ2GqCgMoSvOwJJL+q2Djbs3oiUyC9qJHRnnN6EacIA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill-badge": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-badge/-/dsh-skill-badge-0.1.7-rc.2.tgz", - "integrity": "sha512-l3jIjc7m9xqARMO3uGp/exH7S76T5A7y4e33dAFeFdIdJgy4D37pLWfy1UY8drIP91TgaIniqz4RO1jfWjPg1A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-badge/-/dsh-skill-badge-0.2.0-rc.2.tgz", + "integrity": "sha512-LbxiwrQIt1DJNdWDpbJxdOqW2rDAjBlMY5RaNxmQv+PPuS2cbpwlO2oFxNP0qmcodu3YPww+t1S5JK7Jsb3dhA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2" + "@deepseek-ai/dsh-skill": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill-filesystem": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-filesystem/-/dsh-skill-filesystem-0.1.7-rc.2.tgz", - "integrity": "sha512-k+I8mictkO+g8JMm8EM13yDtG4MqeES88DJq7TJNKRT4o7tD2vkDqr8Ep3KN4EYH5KDGd0h6HabIwvEqhbx37A==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-filesystem/-/dsh-skill-filesystem-0.2.0-rc.2.tgz", + "integrity": "sha512-V/88b4uEFwhCAewQhI/VE7/IvgBkDQb//3/zQjK7xieZ+D9wVpOc5AY8GCcQThZu5aGBnI1gX5ITHPlUHjKUtQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -4685,9 +4859,9 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2" + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-skill-filesystem/node_modules/chokidar": { @@ -4719,9 +4893,9 @@ } }, "node_modules/@deepseek-ai/dsh-skill-office": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-office/-/dsh-skill-office-0.1.7-rc.2.tgz", - "integrity": "sha512-kU6bggLhVzqxYYXZHS2dCVRxa3MlofoLbtT1cdLC0D8qmJ2S8juja4PEm7HI8100PH9y7WSsAkQLqcsJgVsJGA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-skill-office/-/dsh-skill-office-0.2.0-rc.2.tgz", + "integrity": "sha512-VCo/orDfkq0tvngJZ9TGfcmnZ1Xud1wrmQdXRiof6DzIu89pEV3q6lfnrnptNynBojKu4dQ1zIChl3jtofamjw==", "license": "MIT", "dependencies": { "@deepseek-ai/libreoffice-kit": "^0.1.1", @@ -4730,67 +4904,67 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2" + "@deepseek-ai/dsh-skill": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-spill": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill/-/dsh-spill-0.1.7-rc.2.tgz", - "integrity": "sha512-OV3T73WDjz9x8Zc/Qwfjui1I/bVWO7UVWNK4FjujZABJi/61PMyUYmrWMBjF22VGS4V1f2foSJ0TVzd/1mq+gQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill/-/dsh-spill-0.2.0-rc.2.tgz", + "integrity": "sha512-DWcSeURbNzlxMPOtRCzjmM6QTtEzlt7hD26fypE+9guvKPFJ9HUeCg/GQJRfpLbRQqukm4SJroHTSoZitd/t5g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-spill-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill-local/-/dsh-spill-local-0.1.7-rc.2.tgz", - "integrity": "sha512-ls6vTHb2GHUbi2Es2/sBdtS0A3k3Wrfyq2uVbMI5XNARoMnftezcIcxyGME+s/7cCtAof7Sy5LK6BnY2vOWuUQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill-local/-/dsh-spill-local-0.2.0-rc.2.tgz", + "integrity": "sha512-S6OVSa76ngIAk7lT7NymB2tXg/t0GXFodkwTuU/LGu166DmzvLTNlPqvTbxpJw3N1U1M86w5YV7q/DvSOdWCpw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-spill": "0.1.7-rc.2" + "@deepseek-ai/dsh-spill": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-spill-policy": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill-policy/-/dsh-spill-policy-0.1.7-rc.2.tgz", - "integrity": "sha512-n4CrVMlS/kK4bQMHBlhrr9V9z3UuZdynwpXKKq1j+7Wl0GbqIyimGyzfVCVd0u5L84geVbI825ltleBqirwNFg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-spill-policy/-/dsh-spill-policy-0.2.0-rc.2.tgz", + "integrity": "sha512-xuxH8VGxqJHIYlWUcDWvz4HBYswYtm+sfy1Qs31s8YG2E7ATQ58syI78UbSiaTnJqG1TAOZn+YWZyXv1G9KvHQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-storage": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage/-/dsh-storage-0.1.7-rc.2.tgz", - "integrity": "sha512-BZ5MZY44KCUoQEy8FJTpSOXfGGPQ3sJS3xrwxF9rARIqHwtsR5WR6rXY/JmsFNc3nI0djGmJ0bF81U0q7EbDLA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage/-/dsh-storage-0.2.0-rc.2.tgz", + "integrity": "sha512-tItvFJ1IAurwmZfBdrr8w+GuyLADZXZ01bos06Ma0QmD3+0NNyvo0E9qmYb54TfJ2h5yvRcFosHO1048gzuPPw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-storage-domain": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage-domain/-/dsh-storage-domain-0.1.7-rc.2.tgz", - "integrity": "sha512-Ch+k8iYvxMtmxxcVFZQ75griJMdj7RX49mbgRXLbr0s5IvCY2RYPNVDLyB1e/2wXysT1rP08FsH8nH7PoVABRg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage-domain/-/dsh-storage-domain-0.2.0-rc.2.tgz", + "integrity": "sha512-GHHphcdLUNnFBPY1QOfE3dg6yKenIxB5wpgSNghZ7iG+Ifunwj4tyRUZ6YLKvni3HO9Kog1eIdXlUa9yEux39A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -4798,57 +4972,57 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-storage-json": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage-json/-/dsh-storage-json-0.1.7-rc.2.tgz", - "integrity": "sha512-dmzUEcCPkvCppdZFv4TC9OlVNbb+oJdl20ybtENbIy967/kYVnJryyRBtAR6ajm2hQ2MmK9XyOD/XTZpZHy+Fw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-storage-json/-/dsh-storage-json-0.2.0-rc.2.tgz", + "integrity": "sha512-h7pD397LA8JUD3QMz1IUV5kAg4WD6iVSZnMFrrCnN0wBF5B0PS0BDHT+x7zojLtq3MFfyx3JwpmX7uF12S0glg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-storage": "0.1.7-rc.2" + "@deepseek-ai/dsh-storage": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-subagent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent/-/dsh-subagent-0.1.7-rc.2.tgz", - "integrity": "sha512-wIl53frMLSQI+QXfKTHBdyKT/hslFH9LT0DUDeiNyShGkiewYG1wSY1rnmv+p57Q+zS/SfDYjt0s0MGK1tUL0Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent/-/dsh-subagent-0.2.0-rc.2.tgz", + "integrity": "sha512-33izf4xhq03RzolYUjv223tKmeOBl8fMnvnRN15zZB3GWfNRcBTVUUxuu99rCN8TSRRt5A5ABTwYbObb1Isjqw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-chunked-list": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-chunked-list": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-time": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-time": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" }, "peerDependenciesMeta": { "@deepseek-ai/dsh-agent-preset-registry": { @@ -4887,161 +5061,161 @@ } }, "node_modules/@deepseek-ai/dsh-subagent-fork-in-process": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-fork-in-process/-/dsh-subagent-fork-in-process-0.1.7-rc.2.tgz", - "integrity": "sha512-tGJ06AG1JXXTLQBdskJRaggA/gg601+lr52kxvuT1sx/L404hRdw18OdPOebDh9wrj8gt2zxeVEkHA0QY6Hkhg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-fork-in-process/-/dsh-subagent-fork-in-process-0.2.0-rc.2.tgz", + "integrity": "sha512-nFsdyD8EIIkRmsEkmZbIhE5GUXa9/tPStTyTK0FM/WbJTFSyacD6Os9YkoYxgahCfcdlZ3cr/jY4eXVfr+0g2g==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-in-process-driver": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-subagent-in-process-driver": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-in-process-driver/-/dsh-subagent-in-process-driver-0.1.7-rc.2.tgz", - "integrity": "sha512-4NroGWZydU4INXIyPGFKL4Zy1XfMphGDqAJyz/bVTNdrMi6M/8XdRASzTKvsud8TP6IMklAGxcEyEw0pD+AKmg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-in-process-driver/-/dsh-subagent-in-process-driver-0.2.0-rc.2.tgz", + "integrity": "sha512-6ZYAipEyviSo4WlAesVM1DWBkLYQVZw/A8lFWOSVJjl5qOb3q4buZcW/Xy7XKw/forwNSkqaPPvJ/s0kdu1iCw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-subagent-spawn-in-process": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-spawn-in-process/-/dsh-subagent-spawn-in-process-0.1.7-rc.2.tgz", - "integrity": "sha512-xEWjgl/wMalKHGlckmTZ8B0UuwPUGAUathXaeVvs/stqLgmX5IFa1t2/KAN/guLOfeK0rHYvqQGSQhBJkCGxxg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subagent-spawn-in-process/-/dsh-subagent-spawn-in-process-0.2.0-rc.2.tgz", + "integrity": "sha512-7qOuPyeMwaZ2/bFqYnMA6oNLYP+divyV+FlD2PeScDiAcKBI6ZXEhs3wUcT7C04o4zmSXEoalHvlJGAVYUA0jw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.7-rc.2" + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-in-process-driver": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-subprocess": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subprocess/-/dsh-subprocess-0.1.7-rc.2.tgz", - "integrity": "sha512-HgELZIXAEDvlqI4ThbaJ7bJi2ytotxjcaAoXgiKstFGyyf9EAHOSmLkmJZ1G4nunF7cop2YclSEpAvGNTofBTg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subprocess/-/dsh-subprocess-0.2.0-rc.2.tgz", + "integrity": "sha512-81ULZG0xg2ZKgrs+R+JY8okUwLp8jjsboR+QsMUMf5WFaJ2PueJ+krbhODB2enLx3MUyMX/wR6msnzi14ZNSAA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-http-proxy": "0.1.7-rc.2" + "@deepseek-ai/dsh-http-proxy": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-subprocess-local": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subprocess-local/-/dsh-subprocess-local-0.1.7-rc.2.tgz", - "integrity": "sha512-1JKUC4YriYbuyNsDcOwb+WQVaxy6I8CWeTVP/UoEc6uXPSMQdS3GJArDYyFdC2NzjOEmAxpTr4awTNNrpA6Gmw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-subprocess-local/-/dsh-subprocess-local-0.2.0-rc.2.tgz", + "integrity": "sha512-RKEhReGv6bAOHNeMd9kBwY1mQSuhm0OEiK+wnXkOD8CvesYaYXNUmtoIf9VJdrRhG5DF35gVNQAN79Si9d/BHw==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-lazy-require": "0.1.7-rc.2", - "@deepseek-ai/dsh-win32-process": "0.1.7-rc.2", - "koffi": "^3.1.0", + "@deepseek-ai/dsh-lazy-require": "0.2.0-rc.2", + "@deepseek-ai/dsh-win32-process": "0.2.0-rc.2", + "koffi": "3.1.1", "node-pty": "1.2.0-beta.15" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2" + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-system-prompt": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-system-prompt/-/dsh-system-prompt-0.1.7-rc.2.tgz", - "integrity": "sha512-vxKcADh7XOuWJOfa0WeEOhvFiUbMOdoK4w6M7KVCI0S99c9ktxrgY4wKdmAxap+nQjwTEPme3QuOlY3Na+cz9w==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-system-prompt/-/dsh-system-prompt-0.2.0-rc.2.tgz", + "integrity": "sha512-ZZNk2gkXFV8CIT0IOZXS+pFaxNVJaRknYyH2vc4ZgZAiHKT+RqUYNr8e1F5Kp0AaN0DNlcTkjOGP5MCxeXfDjg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-terminal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-terminal/-/dsh-terminal-0.1.7-rc.2.tgz", - "integrity": "sha512-8C7Ua0DZY2dikN1zPthvlYcxWAmB2bPMup/LJXsnD+2CK3D1QSGEsxkjIUtpGZo0HnapJY1JixzgOU3/fab5Og==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-terminal/-/dsh-terminal-0.2.0-rc.2.tgz", + "integrity": "sha512-AwyXx3wIsn9sVPNQsxsMQnnXk6WRGeNR3WrzWmg3Arpatbh/w9YTQZbvRKeGsETFDe62lHZ3BT8HJ+echqHurw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-terminal-bash": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-terminal-bash/-/dsh-terminal-bash-0.1.7-rc.2.tgz", - "integrity": "sha512-6dlzgzSoClNcW/th0iapYjWq7gGfSQqIUTqHxZXKwvOR2g1x51uagRctQ7AamNw4iOStQzLFGQ3ctLDg8WSQfw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-terminal-bash/-/dsh-terminal-bash-0.2.0-rc.2.tgz", + "integrity": "sha512-lUavM/UyNaJOcqW6lZlKk3Yro8FO7pA7tSPmP5VTws53jx/zMgX/oKQCraQUBGjStyYPzrcYJEGjEaYx3kYxFQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-lazy-require": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-local": "0.1.7-rc.2", + "@deepseek-ai/dsh-lazy-require": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-local": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "@xterm/headless": "^6.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-time-context": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-time-context/-/dsh-time-context-0.1.7-rc.2.tgz", - "integrity": "sha512-YemKiNNbS+y7H80aHDSahYlgwlgQR1UU/8SabAbFLepWqrGH07O0HdSoZ8WVmXD3wBX+X+hAJyWw3zTT52jDMw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-time-context/-/dsh-time-context-0.2.0-rc.2.tgz", + "integrity": "sha512-BI9WBy77/NaHdfGz1UIfWQw9AqPXQYF25CCF9jWwiemdFOfERKJbrQooBtI319dQC+kjvItRHMEgWe0EuhMJ/A==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-timeout": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-timeout/-/dsh-timeout-0.1.7-rc.2.tgz", - "integrity": "sha512-YunLoLZSF8Ld9eYwyvKoBnxgy3GZrIQpw98HfFS15ZfZlqcFiZcchFhYmStLtUbtX+gjhoeXc8Xz913YbVifNA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-timeout/-/dsh-timeout-0.2.0-rc.2.tgz", + "integrity": "sha512-NDob8b8DJDB/sDPz3P7xhrkxOh1O9FbN1EZRKsxP4fuTfp4hrQU7aekYS5qZENFKoR8dBJMTh/zcEBw4m31glQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-tmux-context": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tmux-context/-/dsh-tmux-context-0.1.7-rc.2.tgz", - "integrity": "sha512-DYRsMMTgQicntevipFcV6k5LyTMm+UDmo46b9MRK0hc34y5RXCSdX9uIrC0GErDm1K8N1OufPjTXwJIgMe65MA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tmux-context/-/dsh-tmux-context-0.2.0-rc.2.tgz", + "integrity": "sha512-UbHEhxenMyd89imH9rJi02Mw5xPMgWEz2r1lOmicAIDRcYg7OTzsZWkIG9DPIbeJIglriTEKl76Gw85PhTBL4A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -5049,136 +5223,139 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-token-meter": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-token-meter/-/dsh-token-meter-0.1.7-rc.2.tgz", - "integrity": "sha512-9Ig2EI16amhKyiitkWqMzvCocTc8O7Z1bHZbHEQUMeKRlp7F0t1l3hUT/JSd9DQ7UzRcjSAhVavXGwke5lWYGQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-token-meter/-/dsh-token-meter-0.2.0-rc.2.tgz", + "integrity": "sha512-ivkxlbk/bl8t8jxPt62a60U4lE7AxlADelxq91u1dd01oSt3+Y5XBDWDKEVjfhISKyfO4qYHo3MvY6zkU7f3gw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-image-offload": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-retry": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2" + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-image-offload": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-ask-user": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-ask-user/-/dsh-tool-ask-user-0.1.7-rc.2.tgz", - "integrity": "sha512-qOdhDY9GD6ibSKFNNcRN3i/FHj1csnStK3DHg/5Gagz4W4i3YmpfK+5bOPp/wrhPgzRDCh/wLYjRo4SiyKujWA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-ask-user/-/dsh-tool-ask-user-0.2.0-rc.2.tgz", + "integrity": "sha512-fRvU7SClHhUKfHnXP7SJitZFgEO4af4Y9kVLBoG+9RpATGINl+PSGChCM6zyz2EI4v0yS0bHsYILwQk82xjsMA==", "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.4" + }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-questions": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-bash": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-bash/-/dsh-tool-bash-0.1.7-rc.2.tgz", - "integrity": "sha512-pdFYrdnX2OlMN9nI0XT5MZwMkR58x4Z5j9qyTfMYLvtbuZxHwxcdHq2PJU3vAuVQj14F7TJiFEan2EXq+X1mFg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-bash/-/dsh-tool-bash-0.2.0-rc.2.tgz", + "integrity": "sha512-0yjnxm5C7yqX/XWJYFXZVBWXrM6E/6FnjOjt7sN8Itsb5eSHXCz9e5XpKXpLSAPbzq8Kh49yFOw2ZUJRBkOHyw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-bash-persistent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-bash-persistent/-/dsh-tool-bash-persistent-0.1.7-rc.2.tgz", - "integrity": "sha512-aFNJWg2MW+cpyv7yOOl3sfpE7q4e9hE+DmODYiBxXtdTEKfDuKMnIY7Z8TT9sb/wonmUNaneG6LpNUzz6lV+og==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-bash-persistent/-/dsh-tool-bash-persistent-0.2.0-rc.2.tgz", + "integrity": "sha512-R7QzTQsYoTbS/rioRjoiXqJblhq7Noo8sWoI4Y53yYq9/1uF21mdBQzZGMTqB3v/lAYwawSfkEzfxIjzahgMHg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-call-timeout-policy": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-call-timeout-policy/-/dsh-tool-call-timeout-policy-0.1.7-rc.2.tgz", - "integrity": "sha512-k8UaAZqeeYmcY2G03o8mD6ks8LL/yy9FpxAaskcAsVF2kJxMNS3+lSajbKc2APSYExG3jJxPN2OuiZ3EOUljLw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-call-timeout-policy/-/dsh-tool-call-timeout-policy-0.2.0-rc.2.tgz", + "integrity": "sha512-rZae/XGLoK5kzJ4LYwA4SQOEp0wmxgJKIzhcYDWEfL1y4JiqHJS+GKvjbXZWyOpMeeTga+hKeHjcI5rRB99xUA==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-cordis": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-cordis/-/dsh-tool-cordis-0.1.7-rc.2.tgz", - "integrity": "sha512-hCZzHeHj2fy+fUnW9aVj4DkMao1KFuzfO249n+7Mkdo5WEEy9s9XlNAgZA6BKST6VuE6opIRbj1HqxEkMUqZuw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-cordis/-/dsh-tool-cordis-0.2.0-rc.2.tgz", + "integrity": "sha512-KVUah6qgv/mjIRcIXM33SOyy/My+3yDOt1Kb+5GlY77EG4TOIhGlH0MksQDaHXyiGbRU+y1RWDMHi0gHf3Umew==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-fs": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.1.7-rc.2.tgz", - "integrity": "sha512-/6wYrqHH1530tncA7DxC3IxLN2iI8kyhCPR/NfaugL09yGPpBwxm455bMvITSjIAvINWpJfMQvaijPui6goY2Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs/-/dsh-tool-fs-0.2.0-rc.2.tgz", + "integrity": "sha512-QDtVmZoc84iDwrM4ftMDwzuttQd5dXu93NMeas5cSsUvptnW4CiPrMOkYswRXmSry5WRWn7Gk0lSRJ1bpynwiQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-code-language": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-code-language": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "diff": "^9.0.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-fs-search": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs-search/-/dsh-tool-fs-search-0.1.7-rc.2.tgz", - "integrity": "sha512-wVxBYba8b9CgnNWUZx6Es10FrM5sP1JbAN/wq3Rv1Qgt/Z5cb3CJwubqvMg5sxpohkqM0y/bXENAgxzh/hbKIw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-fs-search/-/dsh-tool-fs-search-0.2.0-rc.2.tgz", + "integrity": "sha512-2og9HzR1w99kXJbZ4miuIVPdfE3lYXWmBETAQeTZzLmPlKU5G6H9CbGq9lPAQ/lvqHDElJdolH9EO+j+zoFfcQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -5186,165 +5363,165 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-goal": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-goal/-/dsh-tool-goal-0.1.7-rc.2.tgz", - "integrity": "sha512-Otb3HOlyZA+44nDXrMi9PW4vlurudOaRYdA7hu4MZBtqvmFEty5loJAzrtDbAhwImhA/UM9M+7Qa2ijwm68qCw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-goal/-/dsh-tool-goal-0.2.0-rc.2.tgz", + "integrity": "sha512-UeMd6NocvpXMU+jT0ujY/jU6S9SVSYY7H7oMnspBmWSPNdlh7eYHkQbQN9af7SWEhaDKBq5rsYPIOsYiSs2bZQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-jobs": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-jobs/-/dsh-tool-jobs-0.1.7-rc.2.tgz", - "integrity": "sha512-FAqhI8Hf1InawbrJF/XUjIlQHV11vRMWbX7ofrekJcX0OBk/Og/h8SUzy1knGBVULEm8m2PDLxggXoMu+HVlvg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-jobs/-/dsh-tool-jobs-0.2.0-rc.2.tgz", + "integrity": "sha512-6mqWCkYm+XExCfJbix+pcJ2qcQLNTUtNZQOmfV1IFmpT4j0pGju6b4GbiKaS26yDPegIz71ZW2/tXWzijIsjyg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-present": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-present/-/dsh-tool-present-0.1.7-rc.2.tgz", - "integrity": "sha512-9TcVuL6qaQmKA89ACmPyToorvrLYmiJRVEbMr31WmcnvTyOBYLvQjcM39HWVPS50FKuYmHqlsyh3EkVUOkhTQQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-present/-/dsh-tool-present-0.2.0-rc.2.tgz", + "integrity": "sha512-B2Qro2ji4NWqTIuBj8gsIB8rs+I84o5l/r1N7RetKN3yqaiH6sGOUOed/jBa8frvv4dx+jcXWOcfPpzEtOo2Cw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-pwsh": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-pwsh/-/dsh-tool-pwsh-0.1.7-rc.2.tgz", - "integrity": "sha512-GMFZT35QKoFOXzFV576FbohrdfcXtrMJlOPqdQvNvUdMLYPiiJEIR4WSuqQuGBoez0bLxKVwtodGzwcvPBP+dQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-pwsh/-/dsh-tool-pwsh-0.2.0-rc.2.tgz", + "integrity": "sha512-kFL84s7zQSRd2IquZl2LK7g56x4MUWSilSWLoRVwGTTQoW3RMFGjAsMZ9ZmtGjdLGrLeCnBwiXucwswTeqYCmw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-pwsh-persistent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-pwsh-persistent/-/dsh-tool-pwsh-persistent-0.1.7-rc.2.tgz", - "integrity": "sha512-Qmfs0hRjuy6UJXS5f+qyNhtVphZzINQlIbZ8vUCBnBJdByIRbHq8P2Qf97gvndv4XExKQ5vH+i3SwyR7UdK/GQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-pwsh-persistent/-/dsh-tool-pwsh-persistent-0.2.0-rc.2.tgz", + "integrity": "sha512-rfDTDgAWFH0SVPDMKtn0Cg1gTwsmNbPBw5K26S9cwtFaGxlSaGHPL+lTa2RmQwtTkZoDXdbNG4JmnvzIDxY1CQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-ralph": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-ralph/-/dsh-tool-ralph-0.1.7-rc.2.tgz", - "integrity": "sha512-D4AVzhOUVvN3GhM/grIC61acOgMzdka1dsRbPNPsSTAq2b9iocEGWlWexa4QK90fv1O0+r18RrsuLg9CHiWOLg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-ralph/-/dsh-tool-ralph-0.2.0-rc.2.tgz", + "integrity": "sha512-071tBiqv9EosR2YORosCq4guAhhEV+kB0P/JBKtejeRX4VpH2kR8TY0Y8mmKbjzWdBEncUPsmIqxPtxHbcr1Og==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-skill": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-skill/-/dsh-tool-skill-0.1.7-rc.2.tgz", - "integrity": "sha512-mAhFhl7dmP5VZGsnvr36R/tAbhv1nyWRhdWmCpkkAc/zUNjn4ItqVe8eCeho9rkCfC4d0JmqBLQxY0bR6gVgIQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-skill/-/dsh-tool-skill-0.2.0-rc.2.tgz", + "integrity": "sha512-gPD5isAk3AP8oerJ+KiEpZgZ/UAp5g/obSqDJmJrUYzWJ6TYzdY9xFZgb2k8TYDDX7nBM/K5kS7hfRxhH9aerQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-str-replace-editor": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-str-replace-editor/-/dsh-tool-str-replace-editor-0.1.7-rc.2.tgz", - "integrity": "sha512-3ul3GhzjcPYu455d7UncHYi3k3j0oNaJrOi/Xa5Nu/cu6XFD1RNS+r3oeXoKsnQhhLvamvRNUbZo4+Rf2g3WIw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-str-replace-editor/-/dsh-tool-str-replace-editor-0.2.0-rc.2.tgz", + "integrity": "sha512-NDvuS4kmHFTdYNb5j/h/KwEGl4/CIB/mgQsraYj2gMvAcLz7SKfzyLHiliWFdFP48TnSRAS1JhMmNcQ0TN+T1A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-subagent": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent/-/dsh-tool-subagent-0.1.7-rc.2.tgz", - "integrity": "sha512-tsClP3op2uxw3itf/L2EQ37QLS6LEdcKuBKUmq0XNnOvAjut4xUByDzI52W94leJ2hVbWYipmDzlGis27mo95g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent/-/dsh-tool-subagent-0.2.0-rc.2.tgz", + "integrity": "sha512-SKfjMFctni9IRFrvLAsr8V/pEBaV1gLOERGAG73fqdqbn4KoizMFCWP3WiKir9/gyDWzzQ2RQg53O9snnEo1Aw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -5352,39 +5529,39 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-subagent-control": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent-control/-/dsh-tool-subagent-control-0.1.7-rc.2.tgz", - "integrity": "sha512-GQASFI77x8ly7HSJ64Uxd281LqnPlnuQnF860Xx0z36OPHLzDzdFksFiFeT8nI1llun6FoqkZli3EUsPAXme1g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-subagent-control/-/dsh-tool-subagent-control-0.2.0-rc.2.tgz", + "integrity": "sha512-qVSnUssL+16M/PW3Vre3UFNoqLq3C14DZ9QzqOQgw6s1FAW1WvF9rzJuIYO/8MFy0g+/+f2nXWzOHD/2Gwylnw==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-todo": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-todo/-/dsh-tool-todo-0.1.7-rc.2.tgz", - "integrity": "sha512-W5H6XKw7C9MzEtq+tliiAe2cI8hkbg1QA/yJLpRnm2z0xPZwaaX3I3o76gJa6tQPY7TvkFu8WQYOwtToAI8fwA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-todo/-/dsh-tool-todo-0.2.0-rc.2.tgz", + "integrity": "sha512-B3Yu/1gyFvbzsaYCJdCXj022HEBqJZwKL7fO2Txw1xnDDLgBS79B+NVSYDwxgHGYL7LXbtCyD+8zOyvtc6iItA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -5392,93 +5569,93 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-web": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-web/-/dsh-tool-web-0.1.7-rc.2.tgz", - "integrity": "sha512-vFjWk841utlC8M9LMj+Qy1ZQF0skcbnt07vP5guH68UbL3zjDix0+LShpbd/mluQyJ3LhzRpKmqveysnna2hAg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-web/-/dsh-tool-web-0.2.0-rc.2.tgz", + "integrity": "sha512-NBH1e06QsDAPGPBpCjp8jr1rv+YX173vyXQ+ENT8IChHFN43S5uNZbzr/EoVTcJ4uAw3OamGXVtD7lU7uF46Jg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "@joplin/turndown-plugin-gfm": "^1.0.67", "turndown": "^7.2.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-web": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-web": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-workflow": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-workflow/-/dsh-tool-workflow-0.1.7-rc.2.tgz", - "integrity": "sha512-VFo7mhhUu+tHS4sLCMejWexhQPYguoiOainwYBCuxd0fCmkgIFnSEH+AmMfsWYAbtUxhMNaoktB4RNnl8QmXmQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-workflow/-/dsh-tool-workflow-0.2.0-rc.2.tgz", + "integrity": "sha512-4p4XTet7bLRj2K5ccE2w/+WT15nRvRl9iFMCPv8X9wZB9ymhd/C4DFOp7wmpDMs5NqedsPrsCK7Wi4vXxO+xKQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tool-workspace-dependencies": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-workspace-dependencies/-/dsh-tool-workspace-dependencies-0.1.7-rc.2.tgz", - "integrity": "sha512-soBNUme9Pfp/rLTM8t4tUqYe6jJHD5rUQWvAr/z3AckuhbkBu+d9BpBij8oinJoM7fRz0uUywzxGtfaFBD42mg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tool-workspace-dependencies/-/dsh-tool-workspace-dependencies-0.2.0-rc.2.tgz", + "integrity": "sha512-5YAtIlVwA3RM1/aGTmTzU4YxIPlzVlKzShvbKk/tmj3WPuZJTWFAr9mTkATMwSyP9IRZPYevWeAwVzkerIF0qQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-tools": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tools/-/dsh-tools-0.1.7-rc.2.tgz", - "integrity": "sha512-c3dTdKnslKxVTgjjPLwMKLqGUMwnZH5P8RUsucMQlWn2GViyFW/+5AIUuZHBjjE6Y7NAYl+lVVE/R4LgTp5KWA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-tools/-/dsh-tools-0.2.0-rc.2.tgz", + "integrity": "sha512-vquUz8PjHWE4zaS3wH70IpYjL441p2UlUcG8TN2yJZN1RhDkuiHum4bWCsjEPyWLS/aB1QJvzdXC2EK/PRkbsQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-typert-loader": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-loader/-/dsh-typert-loader-0.1.7-rc.2.tgz", - "integrity": "sha512-oA8oXl4tMfhJcaPfi0ZhxZjixCKirLvYpRG09yM1t3oIgm8sG9JlCLwJlNo/jEOlxnO9EDoxLZ2IW5saU7ANrA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-loader/-/dsh-typert-loader-0.2.0-rc.2.tgz", + "integrity": "sha512-A9jxiG4fuXcU54PG2yqtD9LZe5ikpW1RzWy3VrQDea4U84Lh9Eyp2Flsj2xz8l5V7UD88JqI/CfHnjAGVRsbGA==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" @@ -5486,25 +5663,25 @@ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-typert-registry": "0.1.7-rc.2" + "@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-typert-protocol": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-protocol/-/dsh-typert-protocol-0.1.7-rc.2.tgz", - "integrity": "sha512-oJm03zqMQlvt16Ejw7VWy3/gqlJGrBCZj3Z4KL8ydLJeeTToKIR49WVCxMbJTlH0F9QFljruLtHguA5B99AeUQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-protocol/-/dsh-typert-protocol-0.2.0-rc.2.tgz", + "integrity": "sha512-95RvIDcVac2BWdv1IxN6yKlRV+8eEvkofqSxV+d0r8x1kx2EIWEsbdxz6C+coYIm+8e03MiN+rwOt8J7sLfe7Q==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-typert-registry": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-registry/-/dsh-typert-registry-0.1.7-rc.2.tgz", - "integrity": "sha512-fU6+xBn1BmFeWR0TlJUrOH3Vek21Wz1XHZvC+y1Ftc/cc4VNRBEQp3tvUSTKC0n3TBELqO9yY0uQP+l0JhlAHQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-typert-registry/-/dsh-typert-registry-0.2.0-rc.2.tgz", + "integrity": "sha512-Hjepcu0cDTH4rz/SB121SVozg9ix79NBB+HNr0jW0GSHG9O24kNDyufAJD2/S4B97KVN+1nM0T8k1Dx2JSOEWQ==", "license": "MIT", "dependencies": { "zod": "^4.4.3" @@ -5514,224 +5691,231 @@ } }, "node_modules/@deepseek-ai/dsh-user-approval": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-user-approval/-/dsh-user-approval-0.1.7-rc.2.tgz", - "integrity": "sha512-RQ6GB+C4G6VY/eJrFfS89+89DfHFAJ5G1abhmutfKBhZcYSnGNZyPIzpr5mKbl2xNMIhvCJOb9WiFz2fUPW2HA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-user-approval/-/dsh-user-approval-0.2.0-rc.2.tgz", + "integrity": "sha512-fZMfDp4IeWZMwAKEQkuAYCiGRrwoVWNObvAbpdmQNUavjfYCtwwduWqYQz+5lMQq8vENdczBj7cxnO/pOQ1oZQ==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-user-questions": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-user-questions/-/dsh-user-questions-0.1.7-rc.2.tgz", - "integrity": "sha512-Z7rfQTXNRgPEt0gEcetoM7iO9CVxsUCeDwHVj59ArFmUGS4491Y2AxXg8NP6Hu5x79XAZ0N49sHh7FiJBPYUWQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-user-questions/-/dsh-user-questions-0.2.0-rc.2.tgz", + "integrity": "sha512-NrfPt/DBCbkK/+sSSaHT3kG5lA71mnpBbxTDsL9/eS/hVntT+IdthVIZy9tPiuBxCnq1N6iPO874zHlAYa6qCQ==", "license": "MIT", + "dependencies": { + "@deepseek-ai/schemastery": "~3.18.4", + "zod": "^4.4.3" + }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-util-code-language": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-code-language/-/dsh-util-code-language-0.1.7-rc.2.tgz", - "integrity": "sha512-/NcCcgFXbTfV4sse5HoYO6SyKfcn9GFHeCP/bPkFsACZSv1dhosFivnz8jkkS1esbQe97jiki+UQcZBd+O6Usw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-code-language/-/dsh-util-code-language-0.2.0-rc.2.tgz", + "integrity": "sha512-MYp8KlKWKgwxRfwwMbji4zweDZxVJ1smaneMAKjJvexDc9v+C40o1pJL5Ch/atny8a7O4aiBM1uSvC4bo7/S3g==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-util-crypto": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-crypto/-/dsh-util-crypto-0.1.7-rc.2.tgz", - "integrity": "sha512-BGc55/bSj/1LcDTQ5fpok4U24X9SFyN+TB23/hBlbe2TBUKVuwO8+X5FFKKje2MLO8PWYEDkXv/LrV6jRVKZEg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-crypto/-/dsh-util-crypto-0.2.0-rc.2.tgz", + "integrity": "sha512-5OvvmepY69uXTagUMlnoHqg7euI4ZMifLgfdV8xZO20OslWGGiRCkJbZRyDtcJG9GsXWz9UimfWmUu52zKXJ5w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-util-time": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-time/-/dsh-util-time-0.1.7-rc.2.tgz", - "integrity": "sha512-+bj6L7zdTybkmhEnIlv8ZR1pOm1S+I569CMCtIfbdIg88334hWxRyygCksvNC/VG3Lk3jeO0HzThkv3R7OIsxw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-time/-/dsh-util-time-0.2.0-rc.2.tgz", + "integrity": "sha512-x+b6PJ7BQ5HnNs0wa+eojmwkveR5X77VzhfKJ8p7ndB0TAdFGBshji30nxNjn/8aNWMdE90gsIvbtazsrGZn+w==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-util-values": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-values/-/dsh-util-values-0.1.7-rc.2.tgz", - "integrity": "sha512-UX8nh5SbtZcPVVEvjd+9PCPcbybA6OpVzJGgFxYn59ao/7QQGyYbByS8KXr+THU5JtqmDDVb9xGUSJaF2IYmeQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-values/-/dsh-util-values-0.2.0-rc.2.tgz", + "integrity": "sha512-qgpsbgiZABuE9UvgNaVo9b2HiWwLeU93CTl9PFXqE0jN8ap1ALxzQsLGvr/q2MJuWDYqnFBg60XnqnY8ZxPWEg==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-util-workspace-path": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-workspace-path/-/dsh-util-workspace-path-0.1.7-rc.2.tgz", - "integrity": "sha512-opp6TTeRvZHPi2bsXNK66TwUBh4uNECZJp/qK35ffLQRNa3L+RoPsGgOJZuRjkXdNygytM26P/CWjaBX65oKXg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-util-workspace-path/-/dsh-util-workspace-path-0.2.0-rc.2.tgz", + "integrity": "sha512-pjjpi+hN29dVf9HMitxo5gUAXKNdYcJ75vNVjKp2T6sdBy0wxcMKlfddu/bYx/xDL3teNBhh17EH7w1asYNNZQ==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-web": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web/-/dsh-web-0.1.7-rc.2.tgz", - "integrity": "sha512-iMKo3ZeF3OEl0shHmPo/k7UmRQdynPdhLyoHGuSduMj5qPSTnRzZEYCJ4OErvCaxRSY9gSlcVEiOATKhCgUwsQ==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web/-/dsh-web-0.2.0-rc.2.tgz", + "integrity": "sha512-d44eM9mMqGnQUGsjqUc6k1G9QrC0w+TWx6Cw6I1iXJkVw5LZ/hpVVzsuCqck8GGS8+GK20kqjGUJSyomfEgd1A==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2" + "@deepseek-ai/dsh-llm": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-web-app": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-app/-/dsh-web-app-0.1.7-rc.2.tgz", - "integrity": "sha512-3cMgHys6X9N063HcjhFN2a3azGoWWDtH42/io33gcBZMZxbYP5Kevc4l/erwKa5hAzXtJ2FArjJAytJmy8WSKw==", - "license": "MIT", - "dependencies": { - "@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-tool-presentation": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-account-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-job-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-settings-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-terminal-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-workspace-files": "0.1.7-rc.2", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-file-upload": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-modules": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-shortcuts": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-brand-official": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-deliverables": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-model-selection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-open-in-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-plan": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-agent-loop": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-general": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-models": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-web-search": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-shortcuts": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-browser": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-files": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-trajectory": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-user-questions": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workflow-run": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-compact": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-basic": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-auto": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-open-in-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-office-to-pdf": "0.1.7-rc.2", - "@deepseek-ai/dsh-persona": "0.1.7-rc.2", - "@deepseek-ai/dsh-plan-mode": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-export": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-stats": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-turn-outline": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-time-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ask-user": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-present": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ralph": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-frontend": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace-changes": "0.1.7-rc.2", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-app/-/dsh-web-app-0.2.0-rc.2.tgz", + "integrity": "sha512-pCIMPLfTKVfY942dP4eJSDVw7iUw86pemzfOr/e5DWP7CdCKTfvA82kP0RJAKJcyKJd8s679hqtCue/p4P20Dg==", + "license": "MIT", + "dependencies": { + "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-tool-presentation": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-account-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-job-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-settings-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-terminal-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-workspace-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-workspace-files": "0.2.0-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-file-upload": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-modules": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-product-analytics": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-shortcuts": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-brand-official": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-chat": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-deliverables": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-model-selection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-open-in-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-plan": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-agent-loop": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-general": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-models": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-session-log": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-web-search": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-shortcuts": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-browser": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-files": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-tool": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-trajectory": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-user-questions": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workflow-run": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workspace": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-client-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-auto": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-frontend-static": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-open-in-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-product-telemetry-otel": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-office-to-pdf": "0.2.0-rc.2", + "@deepseek-ai/dsh-persona": "0.2.0-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-export": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-stats": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-turn-outline": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-present": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-frontend": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace-changes": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "commander": "^15.0.0", "open": "^11.0.0" @@ -5739,14 +5923,14 @@ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", "@deepseek-ai/cordis-plugin-loader": "~1.0.5", - "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2" + "@deepseek-ai/dsh-shell-env": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-web-fetch-http": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-fetch-http/-/dsh-web-fetch-http-0.1.7-rc.2.tgz", - "integrity": "sha512-fz1aBg58oqigPDkmePUjlONK4u345fd7BF2q/sD2LGnTafrBBQqeiJ5BZQrjPLYoLywsATveRt9h/tLqU4XD3Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-fetch-http/-/dsh-web-fetch-http-0.2.0-rc.2.tgz", + "integrity": "sha512-PJLMAXv0nGdi/wdbzjcEIoaADvUNiGEXnQuF3vaeUzyplal0W1fou4r4klMsHf6aXwMZSXOdkKBocTlIk1U4uw==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -5755,147 +5939,153 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-http-proxy": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-web": "0.1.7-rc.2" + "@deepseek-ai/dsh-http-proxy": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-web": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-web-frontend": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-frontend/-/dsh-web-frontend-0.1.7-rc.2.tgz", - "integrity": "sha512-E9OgyYxFAeVaymPWzlqluWcX2KLmE107FXDB9nUrn/ADitlaEqGlReotK6g9LXqTY5m9TMp+WcTB71qbkg2U5g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-frontend/-/dsh-web-frontend-0.2.0-rc.2.tgz", + "integrity": "sha512-FpxbRvWwWyawsoP3bnErQizR5P2aOwAOwDZcc3YQX+BrQVPkQd3d06w3nLv8Fyo+zeTA+pnlBd2JFTLwlaVVzQ==", "license": "MIT" }, "node_modules/@deepseek-ai/dsh-web-search-deepseek": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-search-deepseek/-/dsh-web-search-deepseek-0.1.7-rc.2.tgz", - "integrity": "sha512-xkDMbKm8Bu/PzoUO7pc3q2ME5p8HQo0NVbT67dGY0jtdwX2klaMMCDkkkMDkPvKJi+HjpVIDLH7eMdtMqQbShw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-web-search-deepseek/-/dsh-web-search-deepseek-0.2.0-rc.2.tgz", + "integrity": "sha512-WZUPkdO80qbwPatgl5TfRvMRm02L2UELjRYhizNF8Z0RszO85UJdB04PSKXfKxOvjMKRwTPBsbG0JAdBbLpkqg==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-web": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-web": "0.2.0-rc.2" + }, + "peerDependenciesMeta": { + "@deepseek-ai/dsh-deepseek-account": { + "optional": true + } } }, "node_modules/@deepseek-ai/dsh-webhook": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-webhook/-/dsh-webhook-0.1.7-rc.2.tgz", - "integrity": "sha512-2ZIAdQBN6XxC2aN247m/3Q9qacEJiSE5KINhdYfWDVALt8c7cTMjWwqhIBjQhr8G0LdFUHp9PIUXNnRxNzKezA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-webhook/-/dsh-webhook-0.2.0-rc.2.tgz", + "integrity": "sha512-sEmiIwKh8nXbdaIOWmXRuTiOUfRDVZENWKxJ+b7r35JKZz3h8k3KuskGm9OjvVbEIAhl0Ka+s1UpvH8JwJLZNg==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2" + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-webhook-github": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-webhook-github/-/dsh-webhook-github-0.1.7-rc.2.tgz", - "integrity": "sha512-PwGhpHa4FiYErVE0Hd905Q50qXty+0WMK+1XXLevEjOHdFyj81m8F+VB5RSw3nNjDhkGzYVmBMlplLwl2drLFw==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-webhook-github/-/dsh-webhook-github-0.2.0-rc.2.tgz", + "integrity": "sha512-QK1KTS4yfWTWKgccEoI7Ei5hIJUz4jUgPXXeGwXHq0gSoyeW0JEAuK2n5HIzHbMAaj9HW2C01oXl3QSLmb7v8w==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4", "@octokit/webhooks": "^14.2.0" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook": "0.1.7-rc.2" + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-win32-process": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-win32-process/-/dsh-win32-process-0.1.7-rc.2.tgz", - "integrity": "sha512-sa3z0camBZEQsf2g5XK8SLsNqTY5OYli0nUCG8j6yzkWOb52cBpDA0hSNo5hP6IhVba5N8hT/DfjS3IbktGz1Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-win32-process/-/dsh-win32-process-0.2.0-rc.2.tgz", + "integrity": "sha512-MzzPCWqGFnLe0eiTNrdsy5qGprXV9K2U31D6W8XuyQ/5RVG4dLyI1xiXRnc+cqq8SASgxh0D/hM4wy+I6qNkRQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-lazy-require": "0.1.7-rc.2", - "koffi": "^3.1.0" + "@deepseek-ai/dsh-lazy-require": "0.2.0-rc.2", + "koffi": "3.1.1" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4" } }, "node_modules/@deepseek-ai/dsh-workflow": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workflow/-/dsh-workflow-0.1.7-rc.2.tgz", - "integrity": "sha512-PJ8IH48HKPporTG5tGHPWs8pRHADMI/tp147OY09oD5FNQw3MjrVTF38TzhZp3FCjhHCxnbdhcayCxh1QzThFg==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workflow/-/dsh-workflow-0.2.0-rc.2.tgz", + "integrity": "sha512-kvRw3d+x+clns+HrknZ6EDy32OEhKTmngS2LBuL7vjQl3XjEbM8QhnxbDW3NaRbEvZ5w2/+2GZqlo0bU/w6Cxw==", "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-workflow-ptc": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workflow-ptc/-/dsh-workflow-ptc-0.1.7-rc.2.tgz", - "integrity": "sha512-INiZ8OUrrQGYgF/YfbDi6ajwkOaFHwp0YhlSDVZQWiJY+HnG8QY9XEydCyf+wdMkayCwqLHBFSLNzHh4OsM5LA==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workflow-ptc/-/dsh-workflow-ptc-0.2.0-rc.2.tgz", + "integrity": "sha512-p/oqiVTlUiNO+qh8XJaJ0/DL7iEA4RFRHfGM2w4XiLwZycmDux9Z7RyAy2QuB2a3euDTejJuEhzkCO+v/oveHQ==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", "@deepseek-ai/schemastery": "~3.18.4" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-workspace": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workspace/-/dsh-workspace-0.1.7-rc.2.tgz", - "integrity": "sha512-RgSIGkcJnAB6stdJ73yvRT1sXbYtcrYIz9PadVrxTHvcScffaLpXGp8NUNjQgCG0n28CfnCNPdj2qHCbG4yo1g==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workspace/-/dsh-workspace-0.2.0-rc.2.tgz", + "integrity": "sha512-Dvu+lzziMr5vpz9+G+qMabg9rJxqViFdNlz8ch56/zDp4tmwY3hnk2JZ4OuuiLHYUuUeM34ic1H5758IL3YKnA==", "license": "MIT", "dependencies": { - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", "zod": "^4.4.3" }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/dsh-workspace-changes": { - "version": "0.1.7-rc.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workspace-changes/-/dsh-workspace-changes-0.1.7-rc.2.tgz", - "integrity": "sha512-5CnBghKfz/Q3bzE8hcwc02GsYpg7BnobUJO7eIrlmCG9764ja+ij5xeuotoNegP9n19+lg7+3A3HKerz2B6m/Q==", + "version": "0.2.0-rc.2", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/dsh-workspace-changes/-/dsh-workspace-changes-0.2.0-rc.2.tgz", + "integrity": "sha512-f1ukSyQSDJPt90daOSHz9S+cZ6L1Boq14ePTX0rUBbTGCMllRcyKHH74ODGzxPm7XEw1joWzQGeWOzSMEP+w0Q==", "license": "MIT", "dependencies": { "@deepseek-ai/schemastery": "~3.18.4", @@ -5903,16 +6093,16 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2" + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2" } }, "node_modules/@deepseek-ai/libreoffice-kit": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit/-/libreoffice-kit-0.1.2.tgz", - "integrity": "sha512-PM3GtAr8/nG7mY22yoYQgRTfkhzQ72v1sDME/46I/Kl7S4+yOFYC1h0hRT8JL9p9vjdEwXW9icdhUQK0QPz+YQ==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit/-/libreoffice-kit-0.1.3.tgz", + "integrity": "sha512-i85Ll6DAvwI+YGOMtVvPwBSYZso8vz26JlZ+389jxcfoLfRHMXRcW5X/bqyy932GgVNrCUP1Jd7KU/Wy5A8o1g==", "license": "MPL-2.0", "dependencies": { "fflate": "0.8.2", @@ -5920,23 +6110,23 @@ "saxes": "6.0.0" }, "bin": { - "libreoffice-kit": "lib/cli.js" + "dsoffice": "lib/cli.js" }, "engines": { "node": ">=22.19.0" }, "optionalDependencies": { - "@deepseek-ai/libreoffice-kit-darwin-arm64": "0.1.1", - "@deepseek-ai/libreoffice-kit-darwin-x64": "0.1.1", - "@deepseek-ai/libreoffice-kit-wasm": "0.1.1", - "@deepseek-ai/libreoffice-kit-win32-arm64": "0.1.2", - "@deepseek-ai/libreoffice-kit-win32-x64": "0.1.2" + "@deepseek-ai/libreoffice-kit-darwin-arm64": "0.1.3", + "@deepseek-ai/libreoffice-kit-darwin-x64": "0.1.3", + "@deepseek-ai/libreoffice-kit-wasm": "0.1.3", + "@deepseek-ai/libreoffice-kit-win32-arm64": "0.1.3", + "@deepseek-ai/libreoffice-kit-win32-x64": "0.1.3" } }, "node_modules/@deepseek-ai/libreoffice-kit-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-darwin-arm64/-/libreoffice-kit-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-D6NBvtoNpm9pOgBXGQTdxpds1tYMeiFKhGJgnXF/SE0124ZM8j0AOXI7cZ8CErHctqIoVYP+gKWCrnQl4we41A==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-darwin-arm64/-/libreoffice-kit-darwin-arm64-0.1.3.tgz", + "integrity": "sha512-HinPGEyUNZUhBceN9kL9EeiFHo6bfhuY7D1uNBEdwJOzB+QJZVwWmbtc2A6Ds//bOukg9V+7FQEcOnjbqdRTUw==", "cpu": [ "arm64" ], @@ -5950,9 +6140,9 @@ } }, "node_modules/@deepseek-ai/libreoffice-kit-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-darwin-x64/-/libreoffice-kit-darwin-x64-0.1.1.tgz", - "integrity": "sha512-VcAqzmzDbRySLBnpRNYSEd+fDmAtdgL1hQMjRf4sFnQuz7m1vipQ00DtlqFG/T+9uCc20bMIyiDWh8zfYObW3w==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-darwin-x64/-/libreoffice-kit-darwin-x64-0.1.3.tgz", + "integrity": "sha512-uzIreqN3bTYJ9HzXDkVLeKCWAOlPd5WS2H64BJ8L8WsLmLIpAaaw9RGcPkor59fr4EPA8jPNQBmevVu/xTgpTQ==", "cpu": [ "x64" ], @@ -5966,9 +6156,9 @@ } }, "node_modules/@deepseek-ai/libreoffice-kit-wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-wasm/-/libreoffice-kit-wasm-0.1.1.tgz", - "integrity": "sha512-YuKZJdDhR/0GeTZUHJsJvachJR8ZiS4lcrL+lxUF2GLRwXcMikN0zAQOA+6kD/nRI+vlHsCkX0KvHaKvfae79Q==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-wasm/-/libreoffice-kit-wasm-0.1.3.tgz", + "integrity": "sha512-qWDpBBAcqSqeGd3dk2iucjcxUfbTUGka1n3WGvqgfmL4lqvFA2PY4itopMKW2/PuRpyfoA8ab07FVouCOouECA==", "license": "MPL-2.0", "optional": true, "os": [ @@ -5979,9 +6169,9 @@ } }, "node_modules/@deepseek-ai/libreoffice-kit-win32-arm64": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-win32-arm64/-/libreoffice-kit-win32-arm64-0.1.2.tgz", - "integrity": "sha512-+JMKIDfLfpQEIeWWJBkKeAGJ8Niiv6SLQ1SFMh8K28eUOSaLLGPt4j7ywEWtyKCtXenD+VRlKo5gZlqDmCtNCg==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-win32-arm64/-/libreoffice-kit-win32-arm64-0.1.3.tgz", + "integrity": "sha512-y29v70ekrzDBGZVcwiY1DGWELjEEvY6bghpyBU5qvqGBZ8JmbS7wbyjor3w2nRUxQOGCkLCyqMefSWKFH7czWg==", "cpu": [ "arm64" ], @@ -5995,9 +6185,9 @@ } }, "node_modules/@deepseek-ai/libreoffice-kit-win32-x64": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-win32-x64/-/libreoffice-kit-win32-x64-0.1.2.tgz", - "integrity": "sha512-EUuTMnFF404uVVZz0j2oAoHY0Xhobdg0jChUUm74sudwaqxTM9rvgUYEWbeJd95oVjIParMdsb4hLdAhZ10BIw==", + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@deepseek-ai/libreoffice-kit-win32-x64/-/libreoffice-kit-win32-x64-0.1.3.tgz", + "integrity": "sha512-PrUb4ykkI6fJBJ6MX40XgctY0mOUfO4yPWdWB5QdQSw5seq3fulBv0BcrJMTGw2ZT81wwB181MQja4AfOMWg2A==", "cpu": [ "x64" ], @@ -6106,21 +6296,21 @@ } }, "node_modules/@earendil-works/pi-ai": { - "version": "0.85.1", - "resolved": "https://registry.npmmirror.com/@earendil-works/pi-ai/-/pi-ai-0.85.1.tgz", - "integrity": "sha512-+VgVIJDkDO2efYJKEEqvPTH4zmnIaXdAppGbO+vKFA9qy5PdhFiAenuFAkU+oiCSfOC4dMHDyrjdQeL4ZoC5CQ==", - "license": "MIT", - "dependencies": { - "@anthropic-ai/sdk": "0.123.0", - "@aws-sdk/client-bedrock-runtime": "3.1048.0", - "@earendil-works/pi-telemetry": "^0.85.1", - "@google/genai": "1.52.0", - "@smithy/node-http-handler": "4.7.3", - "http-proxy-agent": "7.0.2", - "https-proxy-agent": "7.0.6", + "version": "0.87.1", + "resolved": "https://registry.npmmirror.com/@earendil-works/pi-ai/-/pi-ai-0.87.1.tgz", + "integrity": "sha512-X/3PfQBnnoeVdO9Cv8zHghUMglzlgNZYGNzoPnbRoGnHl3Rw3TlA2UKSUB7BRHUOxMryHXYa8dnjWZlbRheDZA==", + "license": "MIT", + "dependencies": { + "@anthropic-ai/sdk": "0.124.0", + "@aws-sdk/client-bedrock-runtime": "3.1127.0", + "@earendil-works/pi-telemetry": "^0.87.1", + "@google/genai": "2.21.0", + "@smithy/node-http-handler": "4.12.1", + "http-proxy-agent": "9.1.0", + "https-proxy-agent": "9.1.0", "openai": "6.40.0", "partial-json": "0.1.7", - "typebox": "1.3.7" + "typebox": "1.3.27" }, "bin": { "pi-ai": "dist/cli.js" @@ -6129,10 +6319,70 @@ "node": ">=22.19.0" } }, + "node_modules/@earendil-works/pi-ai/node_modules/agent-base": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-9.0.0.tgz", + "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==", + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@earendil-works/pi-ai/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-ai/node_modules/http-proxy-agent": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-9.1.0.tgz", + "integrity": "sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==", + "license": "MIT", + "dependencies": { + "agent-base": "9.0.0", + "debug": "^4.3.4", + "proxy-agent-negotiate": "1.1.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@earendil-works/pi-ai/node_modules/https-proxy-agent": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-9.1.0.tgz", + "integrity": "sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==", + "license": "MIT", + "dependencies": { + "agent-base": "9.0.0", + "debug": "^4.3.4", + "proxy-agent-negotiate": "1.1.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@earendil-works/pi-ai/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/@earendil-works/pi-telemetry": { - "version": "0.85.1", - "resolved": "https://registry.npmmirror.com/@earendil-works/pi-telemetry/-/pi-telemetry-0.85.1.tgz", - "integrity": "sha512-Bg/YN6kA7Swja/NQxka8xFdecb4E/auIEGF2G5A25EaQXhRnPj300/7/KpgsDDMYUzHTDAv4RyUxaQPJKW81Rw==", + "version": "0.87.1", + "resolved": "https://registry.npmmirror.com/@earendil-works/pi-telemetry/-/pi-telemetry-0.87.1.tgz", + "integrity": "sha512-MC6TRQH5lgMXpcN+Vku2WMI2T8BsiUPzMQHGo81uqFZD3/9O79WWJAysEDGuzduP6R4tvtgwMLwmqIxynM10JQ==", "license": "MIT", "engines": { "node": ">=22.19.0" @@ -7028,9 +7278,9 @@ } }, "node_modules/@google/genai": { - "version": "1.52.0", - "resolved": "https://registry.npmmirror.com/@google/genai/-/genai-1.52.0.tgz", - "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", + "version": "2.21.0", + "resolved": "https://registry.npmmirror.com/@google/genai/-/genai-2.21.0.tgz", + "integrity": "sha512-+PDtco2/Z0ONdzCGekCoCT+O1VJS9xJQNN4XzQpXG/t3El/SWWMkCWlFRO1KmivOHPa4Q0VjUYu1HBKCZ/v33Q==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -7680,6 +7930,12 @@ "node": ">=12" } }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "license": "MIT" + }, "node_modules/@koromix/koffi-darwin-arm64": { "version": "3.1.5", "resolved": "https://registry.npmmirror.com/@koromix/koffi-darwin-arm64/-/koffi-darwin-arm64-3.1.5.tgz", @@ -8161,25 +8417,6 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.220.0", - "resolved": "https://registry.npmmirror.com/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.220.0.tgz", - "integrity": "sha512-8186thl+pTw64iz/qEEen5oJZoZ/gO73XruChdaGlYdWOdBIQ42r+vHLf6a7vIDqTD4b8ZOoMlyxptanECaI9A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.220.0", - "@opentelemetry/core": "2.9.0", - "@opentelemetry/otlp-exporter-base": "0.220.0", - "@opentelemetry/otlp-transformer": "0.220.0", - "@opentelemetry/sdk-logs": "0.220.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/otlp-exporter-base": { "version": "0.220.0", "resolved": "https://registry.npmmirror.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.220.0.tgz", @@ -8944,26 +9181,14 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@smithy/node-http-handler": { - "version": "4.7.3", - "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", - "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz", + "integrity": "sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.3", - "@smithy/types": "^4.14.2", + "@smithy/core": "^3.33.3", + "@smithy/types": "^4.18.0", "tslib": "^2.6.2" }, "engines": { @@ -8996,32 +9221,6 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@stablelib/base64": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/@stablelib/base64/-/base64-1.0.1.tgz", @@ -9118,7 +9317,6 @@ "version": "4.2.0", "resolved": "https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", - "dev": true, "license": "MIT" }, "node_modules/@types/js-yaml": { @@ -10123,6 +10321,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/byte-counter": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/byte-counter/-/byte-counter-0.1.0.tgz", + "integrity": "sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", @@ -11551,6 +11761,15 @@ "node": ">= 6" } }, + "node_modules/form-data-encoder": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/form-data-encoder/-/form-data-encoder-4.1.0.tgz", + "integrity": "sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==", + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, "node_modules/form-data/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", @@ -12009,13 +12228,13 @@ "version": "4.2.0", "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -12029,6 +12248,7 @@ "version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -12046,6 +12266,7 @@ "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/http2-wrapper": { @@ -13941,6 +14162,23 @@ "node": ">=12.0.0" } }, + "node_modules/proxy-agent-negotiate": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-agent-negotiate/-/proxy-agent-negotiate-1.1.0.tgz", + "integrity": "sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "kerberos": "^2.0.0" + }, + "peerDependenciesMeta": { + "kerberos": { + "optional": true + } + } + }, "node_modules/pump": { "version": "3.0.4", "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.4.tgz", @@ -14077,7 +14315,6 @@ "version": "5.1.1", "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14235,7 +14472,6 @@ "version": "1.2.1", "resolved": "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, "license": "MIT" }, "node_modules/resolve.exports": { @@ -15099,9 +15335,9 @@ } }, "node_modules/typebox": { - "version": "1.3.7", - "resolved": "https://registry.npmmirror.com/typebox/-/typebox-1.3.7.tgz", - "integrity": "sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==", + "version": "1.3.27", + "resolved": "https://registry.npmmirror.com/typebox/-/typebox-1.3.27.tgz", + "integrity": "sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA==", "license": "MIT" }, "node_modules/typescript": { @@ -16245,12 +16481,12 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" } }, "packages/dsh-desktop-hmr-fallback": { @@ -16275,7 +16511,7 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" } }, "packages/dsh-desktop-onboarding": { @@ -16283,9 +16519,9 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "react": "^18.2.0" } }, @@ -16297,7 +16533,7 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "fflate": "^0.8.2" } }, @@ -16306,7 +16542,7 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "@deepseek-ai/schemastery": "^3.18.2" } }, @@ -16319,16 +16555,16 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.2", - "@deepseek-ai/dsh-api-session-controller": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-api-session-controller": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-connection": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-credentials": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-sandbox": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-settings": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-skill": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-subprocess": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-tools": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" } }, "packages/ppt-runtime/adapter": { @@ -16341,7 +16577,7 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" } }, "packages/ppt-runtime/adapter/node_modules/@deepseek-ai/schemastery": { @@ -16377,19 +16613,19 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-session": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-agent": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-brand": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-llm": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-session": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-skill": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-tools": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "react": "^18.2.0" } }, diff --git a/package.json b/package.json index 966cd64bc..f66c55a3c 100644 --- a/package.json +++ b/package.json @@ -53,225 +53,225 @@ "@deepseek-ai/cordis-plugin-loader": "1.0.5", "@deepseek-ai/cordis-plugin-timer": "1.1.6", "@deepseek-ai/cosmokit": "1.8.5", - "@deepseek-ai/dsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-acp": "0.1.7-rc.2", - "@deepseek-ai/dsh-acp-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-instructions": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-tool-presentation": "0.1.7-rc.2", - "@deepseek-ai/dsh-anonymous-user-id": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-settings-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2", - "@deepseek-ai/dsh-app-boot": "0.1.7-rc.2", - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-authorization": "0.1.7-rc.2", - "@deepseek-ai/dsh-base": "0.1.7-rc.2", - "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-bash-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-modules": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-store": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-agent-preset": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-attachment": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-brand-official": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-deliverables": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-model-selection": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-plan": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-general": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-models": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-theme": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-trajectory": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-user-questions": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workflow-run": "0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2", - "@deepseek-ai/dsh-cmdline": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-compact": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-command-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-commands": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-basic": "0.1.7-rc.2", - "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-client-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-cordis-host-runner": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "0.1.7-rc.2", - "@deepseek-ai/dsh-credentials-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-account": "0.1.7-rc.2", - "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2", - "@deepseek-ai/dsh-deque": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-file-reference-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-goal-round-driver": "0.1.7-rc.2", - "@deepseek-ai/dsh-headless": "0.1.7-rc.2", - "@deepseek-ai/dsh-hmr": "0.1.7-rc.2", - "@deepseek-ai/dsh-home-paths": "0.1.7-rc.2", - "@deepseek-ai/dsh-hook-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-hooks-claude-code": "0.1.7-rc.2", - "@deepseek-ai/dsh-hooks-codex": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-auto": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-browse": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-directory-picker-native": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-plugin-inventory": "0.1.7-rc.2", - "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-jobs-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-launch-environment": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.2", - "@deepseek-ai/dsh-llm-retry": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-client": "0.1.7-rc.2", - "@deepseek-ai/dsh-mcp-resources": "0.1.7-rc.2", - "@deepseek-ai/dsh-message-feedback": "0.1.7-rc.2", - "@deepseek-ai/dsh-native-command": "0.1.7-rc.2", - "@deepseek-ai/dsh-output-retention": "0.1.7-rc.2", - "@deepseek-ai/dsh-permission-presets": "0.1.7-rc.2", - "@deepseek-ai/dsh-persona": "0.1.7-rc.2", - "@deepseek-ai/dsh-plan-mode": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-manager": "0.1.7-rc.2", - "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-pwsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-repeat-tool-reminder": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-windows-acl": "0.1.7-rc.2", - "@deepseek-ai/dsh-schedule": "0.1.7-rc.2", - "@deepseek-ai/dsh-scope": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-minimal": "0.1.7-rc.2", - "@deepseek-ai/dsh-sdk-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-session": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-log-export": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-query-sqlite": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-reference": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-stats": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-telemetry": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-telemetry-otel": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-title-llm": "0.1.7-rc.2", - "@deepseek-ai/dsh-session-turn-outline": "0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell": "0.1.7-rc.2", - "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-badge": "0.1.7-rc.2", - "@deepseek-ai/dsh-skill-filesystem": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-spill-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2", - "@deepseek-ai/dsh-storage-json": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.7-rc.2", - "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal": "0.1.7-rc.2", - "@deepseek-ai/dsh-terminal-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-time-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-timeout": "0.1.7-rc.2", - "@deepseek-ai/dsh-tmux-context": "0.1.7-rc.2", - "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ask-user": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-bash-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-cordis": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-fs-search": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-goal": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-pwsh-persistent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-ralph": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-skill": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-str-replace-editor": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-subagent-control": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-todo": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-tool-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-loader": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2", - "@deepseek-ai/dsh-typert-registry": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2", - "@deepseek-ai/dsh-user-questions": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-crypto": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-time": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-values": "0.1.7-rc.2", - "@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.2", - "@deepseek-ai/dsh-web": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-app": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-fetch-http": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-frontend": "0.1.7-rc.2", - "@deepseek-ai/dsh-web-search-deepseek": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook": "0.1.7-rc.2", - "@deepseek-ai/dsh-webhook-github": "0.1.7-rc.2", - "@deepseek-ai/dsh-win32-process": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow": "0.1.7-rc.2", - "@deepseek-ai/dsh-workflow-ptc": "0.1.7-rc.2", - "@deepseek-ai/dsh-workspace": "0.1.7-rc.2", + "@deepseek-ai/dsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-acp": "0.2.0-rc.2", + "@deepseek-ai/dsh-acp-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-default-model": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-instructions": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-agent-tool-presentation": "0.2.0-rc.2", + "@deepseek-ai/dsh-anonymous-user-id": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-settings-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-api-workspace-controller": "0.2.0-rc.2", + "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-attachment-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-authorization": "0.2.0-rc.2", + "@deepseek-ai/dsh-base": "0.2.0-rc.2", + "@deepseek-ai/dsh-bash-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-bash-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-brand": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-modules": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-store": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-attachment": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-brand-official": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-chat": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-deliverables": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-input-trigger": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-model-selection": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-plan": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-general": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-models": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-sidebar": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-tool": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-trajectory": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-user-questions": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workflow-run": "0.2.0-rc.2", + "@deepseek-ai/dsh-client-ui-workspace": "0.2.0-rc.2", + "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-compact": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-command-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-commands": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2", + "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-client-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-cordis-host-runner": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials": "0.2.0-rc.2", + "@deepseek-ai/dsh-credentials-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.2.0-rc.2", + "@deepseek-ai/dsh-deque": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-file-reference-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-observation-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-fs-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-goal-round-driver": "0.2.0-rc.2", + "@deepseek-ai/dsh-headless": "0.2.0-rc.2", + "@deepseek-ai/dsh-hmr": "0.2.0-rc.2", + "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2", + "@deepseek-ai/dsh-hook-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-hooks-claude-code": "0.2.0-rc.2", + "@deepseek-ai/dsh-hooks-codex": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-auto": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-browse": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-directory-picker-native": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-frontend-static": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-plugin-inventory": "0.2.0-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2", + "@deepseek-ai/dsh-invariants": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-jobs-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-launch-environment": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-pi-ai": "0.2.0-rc.2", + "@deepseek-ai/dsh-llm-retry": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-client": "0.2.0-rc.2", + "@deepseek-ai/dsh-mcp-resources": "0.2.0-rc.2", + "@deepseek-ai/dsh-message-feedback": "0.2.0-rc.2", + "@deepseek-ai/dsh-native-command": "0.2.0-rc.2", + "@deepseek-ai/dsh-output-retention": "0.2.0-rc.2", + "@deepseek-ai/dsh-permission-presets": "0.2.0-rc.2", + "@deepseek-ai/dsh-persona": "0.2.0-rc.2", + "@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-manager": "0.2.0-rc.2", + "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-ptc-runtime": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-pwsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-repeat-tool-reminder": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-sandbox-windows-acl": "0.2.0-rc.2", + "@deepseek-ai/dsh-schedule": "0.2.0-rc.2", + "@deepseek-ai/dsh-scope": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-minimal": "0.2.0-rc.2", + "@deepseek-ai/dsh-sdk-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-session": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-checkpoint-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-log-export": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-projection-cache": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-query-sqlite": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-reference": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-stats": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-telemetry": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-telemetry-otel": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-title-llm": "0.2.0-rc.2", + "@deepseek-ai/dsh-session-turn-outline": "0.2.0-rc.2", + "@deepseek-ai/dsh-settings": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell": "0.2.0-rc.2", + "@deepseek-ai/dsh-shell-env": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-badge": "0.2.0-rc.2", + "@deepseek-ai/dsh-skill-filesystem": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-spill-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2", + "@deepseek-ai/dsh-storage-json": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-fork-in-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-in-process-driver": "0.2.0-rc.2", + "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess": "0.2.0-rc.2", + "@deepseek-ai/dsh-subprocess-local": "0.2.0-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal": "0.2.0-rc.2", + "@deepseek-ai/dsh-terminal-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-time-context": "0.2.0-rc.2", + "@deepseek-ai/dsh-timeout": "0.2.0-rc.2", + "@deepseek-ai/dsh-tmux-context": "0.2.0-rc.2", + "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ask-user": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-bash-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-call-timeout-policy": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-cordis": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-fs-search": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-goal": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-jobs": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-pwsh-persistent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-ralph": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-skill": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-str-replace-editor": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-subagent-control": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-tool-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-tools": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-loader": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2", + "@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2", + "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-crypto": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-time": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-values": "0.2.0-rc.2", + "@deepseek-ai/dsh-util-workspace-path": "0.2.0-rc.2", + "@deepseek-ai/dsh-web": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-app": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-fetch-http": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-frontend": "0.2.0-rc.2", + "@deepseek-ai/dsh-web-search-deepseek": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook": "0.2.0-rc.2", + "@deepseek-ai/dsh-webhook-github": "0.2.0-rc.2", + "@deepseek-ai/dsh-win32-process": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow": "0.2.0-rc.2", + "@deepseek-ai/dsh-workflow-ptc": "0.2.0-rc.2", + "@deepseek-ai/dsh-workspace": "0.2.0-rc.2", "@deepseek-ai/schemastery": "3.18.4", "dsh-desktop-client-ui": "file:packages/dsh-desktop-client-ui", "dsh-desktop-hmr-fallback": "file:packages/dsh-desktop-hmr-fallback", diff --git a/packages/dsh-desktop-client-ui/package.json b/packages/dsh-desktop-client-ui/package.json index 9ab4df121..22ac048d0 100644 --- a/packages/dsh-desktop-client-ui/package.json +++ b/packages/dsh-desktop-client-ui/package.json @@ -26,11 +26,11 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" } } diff --git a/packages/dsh-desktop-market-installer/generations/package-backend.d.ts b/packages/dsh-desktop-market-installer/generations/package-backend.d.ts index 15652a43e..6615337b9 100644 --- a/packages/dsh-desktop-market-installer/generations/package-backend.d.ts +++ b/packages/dsh-desktop-market-installer/generations/package-backend.d.ts @@ -19,6 +19,7 @@ export interface ProfileBundleInstallRequest { } export interface ProfileBundlePackageBackend { + /** Resolves undefined for a shared-tree package (the market); pnpm installs it. */ install(request: ProfileBundleInstallRequest): Promise<{ packageResult: PackageResult bundle?: string @@ -26,12 +27,15 @@ export interface ProfileBundlePackageBackend { pendingBuilds?: string[] rollback?(): Promise commit?(): void - }> + } | undefined> + /** Resolves undefined for a package that is not an enabled generation; pnpm removes it. */ remove(request: { name: string signal?: AbortSignal onOutput?(text: string, stream: 'stdout' | 'stderr'): void - }): Promise<{ packageResult: PackageResult }> + }): Promise<{ packageResult: PackageResult } | undefined> + switched(request: { name: string; enabled: boolean; rowIds?: readonly string[] }): Promise + removed(request: { name: string }): Promise } export function createGenerationPackageBackend(options: { diff --git a/packages/dsh-desktop-market-installer/generations/package-backend.mjs b/packages/dsh-desktop-market-installer/generations/package-backend.mjs index fc8dc2ae3..f3f231a6c 100644 --- a/packages/dsh-desktop-market-installer/generations/package-backend.mjs +++ b/packages/dsh-desktop-market-installer/generations/package-backend.mjs @@ -1,16 +1,24 @@ import { randomUUID } from 'node:crypto' import { mkdir, open, readFile } from 'node:fs/promises' import { isAbsolute, join } from 'node:path' +import { forgetPlugin, recordPluginSwitch } from '../plugin-state.mjs' import { installGeneration, verifyGenerationPeers } from './installer.mjs' import { + SHARED_TREE_ONLY, listGenerations, readDesired, withRegistryLock, writeDesired } from './registry.mjs' -import { projectGenerations, publishGenerationManifest, publishInstalledGeneration } from './projection.mjs' +import { + REAL_DIRECTORY_IN_PLACE, + projectGenerations, + publishGenerationManifest, + publishInstalledGeneration +} from './projection.mjs' const PROFILE = 'web' +const profileDirectory = dshHome => join(dshHome, 'profiles', PROFILE) const MAX_OUTPUT_BYTES = 16 * 1024 function errorText(error) { @@ -67,6 +75,12 @@ async function createOperationLog(dshHome) { * Host package-mutation backend consumed by the patched Harness Plugin Manager. * Staging and promotion happen before publication; the returned rollback remains * live only until Plugin Manager has validated the bundle and begins enablement. + * + * Packages that are not the generation registry's — the market, which lives in + * the shared tree, and plugins pnpm still owns in the Profile — resolve + * `undefined`, and Plugin Manager runs its ordinary pnpm path for them. + * Enable switches from every surface land in the shared package switch + * (plugin-state.mjs), which launch reconciliation never rewrites. */ export function createGenerationPackageBackend(options) { const { @@ -117,6 +131,10 @@ export function createGenerationPackageBackend(options) { sourceDirectory = path sourceSpec = request.spec } + if (expectedPluginName !== undefined && SHARED_TREE_ONLY.has(expectedPluginName)) { + await finishLog() + return undefined + } const result = await withRegistryLock(dshHome, async () => { request.signal?.throwIfAborted() @@ -154,7 +172,7 @@ export function createGenerationPackageBackend(options) { if (!peers.ok) { return { ok: false, detail: `generation peer validation failed: ${peers.problems.join('; ')}` } } - const replaced = beforeGenerations.some(item => + const replacedGeneration = beforeGenerations.some(item => beforeDesired.includes(item.id) && item.pluginName === generation.pluginName ) const nextDesired = replaceDesiredGeneration( @@ -164,13 +182,27 @@ export function createGenerationPackageBackend(options) { generation.id ) await writeDesired(dshHome, nextDesired) + let deferredSwitch = false try { await publishInstalledGeneration(dshHome, generation.pluginName, PROFILE, { syncBundles: false }) } catch (error) { - await writeDesired(dshHome, beforeDesired) - throw error + if (error?.code !== REAL_DIRECTORY_IN_PLACE) { + await writeDesired(dshHome, beforeDesired) + throw error + } + // A pnpm-owned copy is loaded from that directory; it cannot be + // replaced while Harness runs. Launch projection swaps it for the + // generation link, so this install completes on restart. + try { + await publishGenerationManifest(dshHome, PROFILE, { syncBundles: false }) + } catch (manifestError) { + await writeDesired(dshHome, beforeDesired) + throw manifestError + } + deferredSwitch = true + void emit(`generation-install: ${generation.pluginName} replaces a Profile-owned copy on restart\n`) } let committed = false @@ -202,7 +234,7 @@ export function createGenerationPackageBackend(options) { return { ok: true, bundle: generation.pluginName, - replaced, + replaced: replacedGeneration || deferredSwitch, rollback, commit: () => { committed = true } } @@ -254,7 +286,7 @@ export function createGenerationPackageBackend(options) { } try { request.signal?.throwIfAborted() - await withRegistryLock(dshHome, async () => { + const owned = await withRegistryLock(dshHome, async () => { request.signal?.throwIfAborted() const beforeDesired = await readDesired(dshHome) const generations = await listGenerations(dshHome) @@ -262,9 +294,9 @@ export function createGenerationPackageBackend(options) { generations.filter(item => item.pluginName === request.name).map(item => item.id) ) const nextDesired = beforeDesired.filter(id => !removedIds.has(id)) - if (nextDesired.length === beforeDesired.length) { - throw new Error(`No enabled generation for ${request.name}.`) - } + // Not an enabled generation: pnpm owns this package (or the market + // does, in the shared tree), so Plugin Manager removes it with pnpm. + if (nextDesired.length === beforeDesired.length) return false await writeDesired(dshHome, nextDesired) try { await publishGenerationManifest(dshHome, PROFILE, { syncBundles: true }) @@ -273,14 +305,26 @@ export function createGenerationPackageBackend(options) { throw error } await emit(`generation-remove: staged ${request.name} for removal on restart\n`) + return true }) const captured = await log.close() + if (!owned) return undefined return { packageResult: { exitCode: 0, ...captured, logPath: log.path } } } catch (error) { await emit(`generation-remove: ${errorText(error)}\n`, 'stderr').catch(() => undefined) const captured = await log.close() return { packageResult: { exitCode: 1, ...captured, logPath: log.path } } } + }, + + async switched(request) { + await recordPluginSwitch(profileDirectory(dshHome), request.name, request.enabled, { + rowIds: request.rowIds ?? [] + }) + }, + + async removed(request) { + await forgetPlugin(profileDirectory(dshHome), request.name) } }) } diff --git a/packages/dsh-desktop-market-installer/generations/projection.d.ts b/packages/dsh-desktop-market-installer/generations/projection.d.ts index e3be54a7d..e849cfb84 100644 --- a/packages/dsh-desktop-market-installer/generations/projection.d.ts +++ b/packages/dsh-desktop-market-installer/generations/projection.d.ts @@ -9,6 +9,9 @@ export interface PublishedGenerationManifest { bundles: string[] } +/** Error code of a live switch refused because pnpm still owns a real directory. */ +export const REAL_DIRECTORY_IN_PLACE: string + export function projectGenerations(dshHome: string, profile?: string): Promise export function publishGenerationManifest( dshHome: string, diff --git a/packages/dsh-desktop-market-installer/generations/projection.mjs b/packages/dsh-desktop-market-installer/generations/projection.mjs index 20bedf917..5b0816ffa 100644 --- a/packages/dsh-desktop-market-installer/generations/projection.mjs +++ b/packages/dsh-desktop-market-installer/generations/projection.mjs @@ -40,6 +40,9 @@ const IN_BOX_BUNDLES = new Set(['@deepseek-ai/dsh-base', '@deepseek-ai/dsh-web-a /** Substring that marks a symlink target as one this projector wrote. */ const GENERATION_LINK_MARKER = join('profiles', '.generations', 'live') +/** Error code for a live switch refused because pnpm still owns a real directory there. */ +export const REAL_DIRECTORY_IN_PLACE = 'EDSH_REAL_PLUGIN_DIRECTORY' + /** Versioned marker for the manifest fields owned by this derived projection. */ const PROJECTION_VERSION = 1 @@ -267,7 +270,9 @@ export async function publishInstalledGeneration(dshHome, pluginName, profile = const info = await lstat(link) previousIsDirectory = !info.isSymbolicLink() if (previousIsDirectory && (!allowRealDirectory || !info.isDirectory())) { - throw new Error(`Cannot switch a non-link plugin directory: ${link}`) + throw Object.assign(new Error(`Cannot switch a non-link plugin directory: ${link}`), { + code: REAL_DIRECTORY_IN_PLACE + }) } if (await realpath(link) === await realpath(target)) { const bundles = await syncProfileManifest(dir, enabled, linkSpecs, manifestState, { syncBundles }) diff --git a/packages/dsh-desktop-market-installer/generations/registry.d.ts b/packages/dsh-desktop-market-installer/generations/registry.d.ts index b12461ed7..5b055abd1 100644 --- a/packages/dsh-desktop-market-installer/generations/registry.d.ts +++ b/packages/dsh-desktop-market-installer/generations/registry.d.ts @@ -15,6 +15,9 @@ export interface RegistryLayout { lockFile: string } +/** Packages that live in the shared Profile tree and are never generations. */ +export const SHARED_TREE_ONLY: ReadonlySet + export function registryLayout(dshHome: string): RegistryLayout export function ensureRegistryDirectories(dshHome: string): Promise export function generationId(pluginName: string, version: string, lockfileText: string): string diff --git a/packages/dsh-desktop-market-installer/generations/registry.mjs b/packages/dsh-desktop-market-installer/generations/registry.mjs index 367760ea9..d5c2b014d 100644 --- a/packages/dsh-desktop-market-installer/generations/registry.mjs +++ b/packages/dsh-desktop-market-installer/generations/registry.mjs @@ -55,7 +55,7 @@ const SAFE_VERSION_PATTERN = /^[0-9a-z][0-9a-z._+-]*$/iu * registry at all. Nothing keeps the two in sync — only dshmarket is ever * installable from the market, so only dshmarket needs guarding here. */ -const SHARED_TREE_ONLY = new Set(['dshmarket']) +export const SHARED_TREE_ONLY = new Set(['dshmarket']) const LOCK_OWNER_PATTERN = /^([1-9]\d*)\s+[^\r\n]+(?:\s+[^\r\n]+)?\r?\n?$/u function assertSafePackageName(pluginName, context = 'Generation plugin name') { diff --git a/packages/dsh-desktop-market-installer/index.js b/packages/dsh-desktop-market-installer/index.js index ad434fc7f..529d35409 100644 --- a/packages/dsh-desktop-market-installer/index.js +++ b/packages/dsh-desktop-market-installer/index.js @@ -20,6 +20,7 @@ import { writeDesired } from './generations/registry.mjs' import { DEFAULT_NPM_REGISTRY, resolveMarketRegistry } from './market-registry.mjs' +import { forgetPlugin } from './plugin-state.mjs' import { SIDELINE_MARKER } from './pnpm-runner.mjs' import { removeTree } from './remove-tree.mjs' @@ -725,6 +726,8 @@ export function createDesktopPnpmService(options) { const disabled = await disableGeneration(home, pluginName) if (isCancelled()) return { exitCode: 1, message: 'The package operation was aborted.' } const published = await publishGenerationManifest(home, MARKET_PROFILE, { syncBundles: true }) + // A removed package leaves no switch behind; a reinstall starts enabled. + await forgetPlugin(profileDirectory(home), pluginName) write(disabled ? `staged for next restart: ${published.plugins.join(', ')}` : `already absent from the next restart: ${pluginName}`) @@ -760,6 +763,7 @@ export function createDesktopPnpmService(options) { const published = await publishGenerationManifest(home, MARKET_PROFILE, { syncBundles: true }) + await forgetPlugin(profileDirectory(home), generationRemoval) write(`staged for next restart: ${published.plugins.join(', ')}`) return { exitCode: 0 } }) @@ -787,11 +791,22 @@ export function createDesktopPnpmService(options) { } ) const cancel = () => killProcessTree(child) + const removed = removalTarget(args) const done = new Promise((resolveDone, rejectDone) => { child.once('error', rejectDone) child.once('close', (exitCode, exitSignal) => { resolveDone({ exitCode, signal: exitSignal }) }) + }).then(async (exit) => { + // pnpm removed a Profile-owned package; its switch must not outlive it. + if (removed !== undefined && exit.exitCode === 0) { + await forgetPlugin(profileDirectory(home), removed).catch((error) => { + process.stderr.write( + `dsh-desktop: could not clear the package switch for ${removed}: ${error instanceof Error ? error.message : String(error)}\n` + ) + }) + } + return exit }) const handle = { stdout: child.stdout, diff --git a/packages/dsh-desktop-market-installer/package.json b/packages/dsh-desktop-market-installer/package.json index af46eef07..e5b33081c 100644 --- a/packages/dsh-desktop-market-installer/package.json +++ b/packages/dsh-desktop-market-installer/package.json @@ -24,6 +24,10 @@ "types": "./generations/package-backend.d.ts", "default": "./generations/package-backend.mjs" }, + "./plugin-state": { + "types": "./plugin-state.d.ts", + "default": "./plugin-state.mjs" + }, "./market-registry": { "types": "./market-registry.d.ts", "default": "./market-registry.mjs" @@ -43,7 +47,7 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" }, "dependencies": { "pnpm": "10.34.5" diff --git a/packages/dsh-desktop-market-installer/plugin-state.d.ts b/packages/dsh-desktop-market-installer/plugin-state.d.ts new file mode 100644 index 000000000..3f818509e --- /dev/null +++ b/packages/dsh-desktop-market-installer/plugin-state.d.ts @@ -0,0 +1,19 @@ +export const MARKET_STATE_FILE: string +export const USER_PATCH_FILE: string + +export function removePatchRowOverrides( + text: string, + rowIds: readonly string[], + disabled: boolean +): { text: string; changed: boolean } + +export function readMarketState(profileDir: string): Promise<{ state: Record; disabled: string[] }> +export function readDisabledPlugins(profileDir: string): Promise +export function setPluginDisabled(profileDir: string, pluginName: string, disabled: boolean): Promise +export function recordPluginSwitch( + profileDir: string, + pluginName: string, + enabled: boolean, + options?: { rowIds?: readonly string[] } +): Promise +export function forgetPlugin(profileDir: string, pluginName: string): Promise diff --git a/packages/dsh-desktop-market-installer/plugin-state.mjs b/packages/dsh-desktop-market-installer/plugin-state.mjs new file mode 100644 index 000000000..542cbfd85 --- /dev/null +++ b/packages/dsh-desktop-market-installer/plugin-state.mjs @@ -0,0 +1,150 @@ +import { randomUUID } from 'node:crypto' +import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises' +import { dirname, join } from 'node:path' + +/** + * The single package-level enable switch shared by every plugin surface. + * + * A profile plugin is effectively enabled when it is composable (listed in + * `dsh.profile.bundles`, or re-listed there by projection/healing) AND its + * package is not in `.dsh-market/state.json#disabled`. Harness boot skips a + * disabled package before resolving it, and dsh-market reads the same list, so + * this file is the switch every entry point must write: the market's own + * toggle, Desktop Recovery/Safe Mode, the official Plugin Manager and the + * workbench page. + * + * `dsh.profile.bundles` stays derived. Launch projection and bundle healing + * may re-add an installed bundle there; that never re-enables a package the + * switch keeps off. + * + * The user patch layer can additionally hold row overrides. A package switch + * only drops the overrides that would contradict it for rows the package + * inserts: `disabled: false` blocks on disable, `disabled: true` blocks on + * enable. Row IDs are not package identities, so it never adds rows. + */ + +export const MARKET_STATE_FILE = join('.dsh-market', 'state.json') +export const USER_PATCH_FILE = 'cordis.patch.yml' + +/** Row ids the market will write; anything else is left alone. */ +const ROW_ID = /^[A-Za-z0-9_.-]+$/u + +function escapeRegExp(value) { + return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&') +} + +function rowBlockPattern(rowId, disabled) { + return new RegExp( + `^- id: ['"]?${escapeRegExp(rowId)}['"]?\\r?\\n disabled: ${disabled ? 'true' : 'false'}[ \\t]*(?:\\r?\\n|$)`, + 'm' + ) +} + +function withoutComments(text) { + return text.replace(/^[ \t]*#.*$/gmu, '').trim() +} + +/** + * Remove exact `- id: \n disabled: ` override blocks, restoring + * the template's `[]` when only comments remain. + */ +export function removePatchRowOverrides(text, rowIds, disabled) { + let next = text + for (const rowId of rowIds) { + if (!ROW_ID.test(rowId)) continue + const block = rowBlockPattern(rowId, disabled) + while (block.test(next)) next = next.replace(block, '') + } + if (next === text) return { text, changed: false } + if (withoutComments(next) === '') { + const revived = next.replace(/^[ \t]*#[ \t]*\[[ \t]*\][ \t]*(?:\r?\n|$)/mu, '[]\n') + next = revived !== next ? revived : next === '' || next.endsWith('\n') ? `${next}[]\n` : `${next}\n[]\n` + } + return { text: next, changed: true } +} + +async function readTextIfPresent(path) { + try { + return await readFile(path, 'utf8') + } catch (error) { + if (error?.code === 'ENOENT') return undefined + throw error + } +} + +async function writeAtomically(path, text) { + await mkdir(dirname(path), { recursive: true }) + const temporary = `${path}.${process.pid}.${randomUUID()}.tmp` + try { + await writeFile(temporary, text, 'utf8') + await rename(temporary, path) + } finally { + await rm(temporary, { force: true }).catch(() => undefined) + } +} + +/** + * The market's state.json with only its disable list interpreted. Every other + * field belongs to the market and is carried through untouched. An + * unparseable file is an error, never an empty state to overwrite. + */ +export async function readMarketState(profileDir) { + const text = await readTextIfPresent(join(profileDir, MARKET_STATE_FILE)) + if (text === undefined) return { state: {}, disabled: [] } + const state = JSON.parse(text) + if (state === null || typeof state !== 'object' || Array.isArray(state)) { + throw new Error('market state is not a JSON object') + } + // Legacy `disabledSkins` is what the market still reads when `disabled` is absent. + const list = state.disabled !== undefined ? state.disabled : state.disabledSkins + const disabled = Array.isArray(list) ? list.filter((name) => typeof name === 'string') : [] + return { state, disabled } +} + +export async function readDisabledPlugins(profileDir) { + return (await readMarketState(profileDir)).disabled +} + +/** Add or drop one package in the disable list; returns whether the file changed. */ +export async function setPluginDisabled(profileDir, pluginName, disabled) { + const { state, disabled: current } = await readMarketState(profileDir) + const next = disabled + ? current.includes(pluginName) ? current : [...current, pluginName] + : current.filter((name) => name !== pluginName) + if (next.length === current.length) return false + await writeAtomically(join(profileDir, MARKET_STATE_FILE), JSON.stringify({ ...state, disabled: next })) + return true +} + +/** + * Record one package switch from any surface. Contradicting row overrides for + * the package's own rows are removed first; if the switch cannot be written, + * the patch layer is put back so the two never disagree. + * @param options.rowIds - loader rows the package inserts, when known. + */ +export async function recordPluginSwitch(profileDir, pluginName, enabled, { rowIds = [] } = {}) { + const patchPath = join(profileDir, USER_PATCH_FILE) + const original = rowIds.length === 0 ? undefined : await readTextIfPresent(patchPath) + let rewritten = false + if (original !== undefined) { + const result = removePatchRowOverrides(original, rowIds, enabled) + if (result.changed) { + await writeAtomically(patchPath, result.text) + rewritten = true + } + } + try { + await setPluginDisabled(profileDir, pluginName, !enabled) + } catch (error) { + if (rewritten && original !== undefined) await writeAtomically(patchPath, original) + throw error + } +} + +/** + * Forget a package that is gone: an uninstall must not leave a switch behind, + * or reinstalling it later brings it back disabled. + */ +export async function forgetPlugin(profileDir, pluginName) { + return setPluginDisabled(profileDir, pluginName, false) +} diff --git a/packages/dsh-desktop-onboarding/package.json b/packages/dsh-desktop-onboarding/package.json index 2909b154f..3660a4bc7 100644 --- a/packages/dsh-desktop-onboarding/package.json +++ b/packages/dsh-desktop-onboarding/package.json @@ -25,9 +25,9 @@ "license": "MIT", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "react": "^18.2.0" } } diff --git a/packages/dsh-desktop-preset-transfer/package.json b/packages/dsh-desktop-preset-transfer/package.json index 6b062f821..d4fb936e4 100644 --- a/packages/dsh-desktop-preset-transfer/package.json +++ b/packages/dsh-desktop-preset-transfer/package.json @@ -18,7 +18,7 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", - "@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "fflate": "^0.8.2" }, "types": "./index.d.ts" diff --git a/packages/dsh-desktop-workbenches/client.js b/packages/dsh-desktop-workbenches/client.js index ab8a6bd8a..c7d0bd912 100644 --- a/packages/dsh-desktop-workbenches/client.js +++ b/packages/dsh-desktop-workbenches/client.js @@ -70,7 +70,8 @@ window.__ModuleLoader__.load({ } const workbenchPreference = { listeners: new Set(), - enabled: (() => { try { return window.localStorage.getItem(WORKBENCH_PREF) !== 'false' } catch { return true } })(), + // Off until the user turns it on in General settings. + enabled: (() => { try { return window.localStorage.getItem(WORKBENCH_PREF) === 'true' } catch { return false } })(), subscribe(listener) { this.listeners.add(listener); return () => this.listeners.delete(listener) }, getSnapshot() { return this.enabled }, set(value) { this.enabled = !!value; try { window.localStorage.setItem(WORKBENCH_PREF, String(this.enabled)) } catch {} ; for (const listener of this.listeners) listener() } diff --git a/packages/dsh-desktop-workbenches/package.json b/packages/dsh-desktop-workbenches/package.json index 4dd0bcaa9..88be96410 100644 --- a/packages/dsh-desktop-workbenches/package.json +++ b/packages/dsh-desktop-workbenches/package.json @@ -28,7 +28,7 @@ "peerDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/schemastery": "^3.18.2", - "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" }, "license": "MIT" } diff --git a/packages/dsh-image-generation/package.json b/packages/dsh-image-generation/package.json index 6f727ec0c..6f560c002 100644 --- a/packages/dsh-image-generation/package.json +++ b/packages/dsh-image-generation/package.json @@ -56,15 +56,15 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.2", - "@deepseek-ai/dsh-client-connection": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-credentials": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox-policy": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-sandbox": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-subprocess": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-settings": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-api-session-controller": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-client-connection": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-credentials": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-sandbox-policy": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-sandbox": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-subprocess": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-settings": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-skill": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-tools": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-api-session-controller": "^0.1.2-rc.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" } } diff --git a/packages/ppt-runtime/README.md b/packages/ppt-runtime/README.md index c4a2970d5..e24bdc269 100644 --- a/packages/ppt-runtime/README.md +++ b/packages/ppt-runtime/README.md @@ -22,6 +22,8 @@ Every metadata/design record contains English and Chinese title/body fonts and p `npm run ppt:build` starts from an empty `.build/ppt-runtime/` directory, regenerates the ten Zara packs, restores the six maintained baseline packs from `scripts/ppt/base-templates/`, applies reviewed English translations, and expands all sixteen packs to twelve layouts each. It validates and renders the 192 English previews, hydrates the runtime clients/catalog, assembles both package directories, then atomically projects those directories into `node_modules` for local execution. It never writes generated templates, previews, archives or hash manifests back into tracked source paths. Every pack retains explicit English/Chinese font pairs. The two original experiments live in `scripts/ppt/rich-layouts.mjs`; the other composition plans and editable geometry live in `scripts/ppt/composition-library.mjs`. +The step is skipped when nothing it reads has changed: `scripts/ppt-build-cache.mjs` fingerprints `packages/ppt-runtime/`, `scripts/ppt/`, the pipeline scripts and `package-lock.json`, and records the result in `.build/ppt-runtime/build-inputs.json`. When only `node_modules` was reinstalled, the staged packages are projected again without regenerating them. Set `DSH_PPT_FORCE_BUILD=1` to force a full rebuild. + `npm ci` bootstraps from the tracked local package seeds, so a clean checkout does not need a pre-existing archive. The `dev`, `build` and `test` lifecycles all invoke the same preparation step; every package script delegates to `build`. Electron Builder excludes the bootstrap links and copies the current staged packages explicitly. Tests verify the generated distributions, language coverage, fonts, activation and state migration. The 23 withdrawn designs and 345 excluded images remain absent; `excluded-assets.json` is a hash-only regression list. ## Compatibility diff --git a/packages/ppt-runtime/adapter/package.json b/packages/ppt-runtime/adapter/package.json index 60f481749..6d42220b0 100644 --- a/packages/ppt-runtime/adapter/package.json +++ b/packages/ppt-runtime/adapter/package.json @@ -59,7 +59,7 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2" + "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1" }, "keywords": [ "dsh-plugin", diff --git a/packages/ppt-runtime/core/package.json b/packages/ppt-runtime/core/package.json index 2152f0832..2d729d949 100644 --- a/packages/ppt-runtime/core/package.json +++ b/packages/ppt-runtime/core/package.json @@ -75,19 +75,19 @@ }, "peerDependencies": { "@deepseek-ai/cordis": "~4.0.4", - "@deepseek-ai/dsh-agent": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-brand": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-llm": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-session": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-skill": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", - "@deepseek-ai/dsh-tools": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2", + "@deepseek-ai/dsh-agent": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-brand": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-invariants": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-llm": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-session": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-skill": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", + "@deepseek-ai/dsh-tools": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1", "react": "^18.2.0" }, "files": [ diff --git a/patches/@deepseek-ai+dsh+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh+0.2.0-rc.2.patch similarity index 67% rename from patches/@deepseek-ai+dsh+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh+0.2.0-rc.2.patch index 1ef59bd77..ea165f7a5 100644 --- a/patches/@deepseek-ai+dsh+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh+0.2.0-rc.2.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/@deepseek-ai/dsh/lib/bin.js b/node_modules/@deepseek-ai/dsh/lib/bin.js -index cfab70d..a665887 100755 +index 491719e..0f21a3d 100755 --- a/node_modules/@deepseek-ai/dsh/lib/bin.js +++ b/node_modules/@deepseek-ai/dsh/lib/bin.js -@@ -223,7 +223,8 @@ async function runCli() { +@@ -227,7 +227,8 @@ async function runCli(options = {}) { version, profile: invocation.profile }); @@ -13,16 +13,16 @@ index cfab70d..a665887 100755 break; } diff --git a/node_modules/@deepseek-ai/dsh/package.json b/node_modules/@deepseek-ai/dsh/package.json -index c2e1b4a..90986d4 100644 +index 4f16dfb..a821e87 100644 --- a/node_modules/@deepseek-ai/dsh/package.json +++ b/node_modules/@deepseek-ai/dsh/package.json -@@ -100,7 +100,18 @@ - "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.2", - "@deepseek-ai/dsh-experimental-voice-input-bundle": "0.1.7-rc.2", - "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2", -- "@deepseek-ai/dsh-experimental-auto-review": "0.1.7-rc.2" -+ "@deepseek-ai/dsh-experimental-auto-review": "0.1.7-rc.2", -+ "@deepseek-ai/dsh-deepseek-account": "0.1.7-rc.2", +@@ -101,7 +101,18 @@ + "@deepseek-ai/dsh-agent-preset": "0.2.0-rc.2", + "@deepseek-ai/dsh-atomic-write": "0.2.0-rc.2", + "@deepseek-ai/dsh-experimental-voice-input-bundle": "0.2.0-rc.2", +- "@deepseek-ai/dsh-experimental-auto-review": "0.2.0-rc.2" ++ "@deepseek-ai/dsh-experimental-auto-review": "0.2.0-rc.2", ++ "@deepseek-ai/dsh-deepseek-account": "0.2.0-rc.2", + "dsh-ppt-composer": "0.1.1-rc.2", + "dsh-desktop-client-ui": "0.1.0", + "dsh-desktop-hmr-fallback": "0.1.0", diff --git a/patches/@deepseek-ai+dsh-api-remotes+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-api-remotes+0.2.0-rc.2.patch similarity index 92% rename from patches/@deepseek-ai+dsh-api-remotes+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-api-remotes+0.2.0-rc.2.patch index b944934b4..ede7a5f63 100644 --- a/patches/@deepseek-ai+dsh-api-remotes+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-api-remotes+0.2.0-rc.2.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js b/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js -index abec6c7..d732576 100644 +index 68fe395..dd32cee 100644 --- a/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js -@@ -9879,6 +9879,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. +@@ -10301,6 +10301,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. "sessionId": intersection(string(), unknown()).readonly(), "agentPreset": string().readonly().optional() }); @@ -17,7 +17,7 @@ index abec6c7..d732576 100644 let _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value; const _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema = () => _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value ??= object({ "address": union([object({ -@@ -11431,7 +11439,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. +@@ -11943,7 +11951,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. } }, { diff --git a/patches/@deepseek-ai+dsh-api-session-controller+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-api-session-controller+0.2.0-rc.2.patch similarity index 99% rename from patches/@deepseek-ai+dsh-api-session-controller+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-api-session-controller+0.2.0-rc.2.patch index d89b2ba6d..86c874f8e 100644 --- a/patches/@deepseek-ai+dsh-api-session-controller+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-api-session-controller+0.2.0-rc.2.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/client.js b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/client.js -index 3622a98..51c8247 100644 +index 1ae21e3..b65b36b 100644 --- a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/client.js @@ -1786,6 +1786,63 @@ window.__ModuleLoader__.load({ @@ -656,10 +656,10 @@ index 3b8507e..8d84248 100644 * Fork one cold-readable exact event prefix into a new Session. An omitted * boundary selects the latest completed-turn prefix; an open cut receives diff --git a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js -index 3ee71e3..919a477 100644 +index 57b5a2b..4724a90 100644 --- a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js +++ b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js -@@ -170,6 +170,14 @@ const _deepseek_ai_dsh_api_session_controller_session_create_result$schema = () +@@ -200,6 +200,14 @@ const _deepseek_ai_dsh_api_session_controller_session_create_result$schema = () 'sessionId': z.intersection(z.string(), z.unknown()).readonly(), 'agentPreset': z.string().readonly().optional(), })) @@ -674,7 +674,7 @@ index 3ee71e3..919a477 100644 let _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value const _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value ??= z.object({ 'address': z.union([z.object({ -@@ -895,6 +903,31 @@ export const TYPERT = { +@@ -1015,6 +1023,31 @@ export const TYPERT = { }, sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":520,"column":3}, }, @@ -706,7 +706,7 @@ index 3ee71e3..919a477 100644 { id: '@deepseek-ai/dsh-api-session-controller#session/create', service: 'sessionController', -@@ -1387,6 +1420,13 @@ export const TYPERT = { +@@ -1507,6 +1540,13 @@ export const TYPERT = { "summary": "Rename one Session after explicitly resuming it.", "jsDoc": "/**\n * Rename one Session after explicitly resuming it.\n * @param request - Session identity and proposed title.\n * @returns the accepted title and durable event sequence.\n */" }, @@ -720,7 +720,7 @@ index 3ee71e3..919a477 100644 { "kind": "method", "name": "fork", -@@ -1980,6 +2020,14 @@ export const TYPERT = { +@@ -2120,6 +2160,14 @@ export const TYPERT = { "name": "SessionCreateValue", "declaration": "export interface SessionCreateValue {\n readonly sessionId: SessionId;\n readonly agentPreset?: string;\n}" }, @@ -765,10 +765,10 @@ index 853e788..e97465a 100644 'session/fork': (request: SessionForkRequest) => Promise> 'session/initializeDefaultModel': () => Promise> diff --git a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js -index 2a0d24d..ae3f6fa 100644 +index 4e6d18f..1b15a02 100644 --- a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js +++ b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js -@@ -170,6 +170,14 @@ const _deepseek_ai_dsh_api_session_controller_session_create_result$schema = () +@@ -200,6 +200,14 @@ const _deepseek_ai_dsh_api_session_controller_session_create_result$schema = () 'sessionId': z.intersection(z.string(), z.unknown()).readonly(), 'agentPreset': z.string().readonly().optional(), })) @@ -783,7 +783,7 @@ index 2a0d24d..ae3f6fa 100644 let _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value const _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value ??= z.object({ 'address': z.union([z.object({ -@@ -892,6 +900,31 @@ export const TYPERT_REMOTE = { +@@ -1012,6 +1020,31 @@ export const TYPERT_REMOTE = { }, sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":520,"column":3}, }, @@ -935,7 +935,7 @@ index 9e3657a..0490f35 100644 agentOptions() { const { provider, model } = this.ctx.agentDefaultModel.currentSelection(); diff --git a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/contract/sessions.d.ts b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/contract/sessions.d.ts -index 6eddfb2..438c8c0 100644 +index 81cc3c6..bf30fa6 100644 --- a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/contract/sessions.d.ts +++ b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/contract/sessions.d.ts @@ -82,6 +82,8 @@ export interface ISessions { @@ -981,7 +981,7 @@ index aeba315..6016fbc 100644 * Contract session.fork; on success merge the child into summaries * immediately (same synchronous-addressability guarantee as create). diff --git a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.d.ts b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.d.ts -index 4db7072..9c81aed 100644 +index f73b123..12b37fd 100644 --- a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.d.ts +++ b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.d.ts @@ -72,6 +72,13 @@ export declare class SessionForkError extends Error { @@ -1008,7 +1008,7 @@ index 4db7072..9c81aed 100644 * Fork a session from an exact inclusive prefix of the source (same * synchronous-addressability guarantee as {@link ClientSessions.create}: diff --git a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.js b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.js -index 344cb96..1554a31 100644 +index 1620c4d..4ce5659 100644 --- a/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.js +++ b/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.js @@ -34,6 +34,17 @@ export class SessionForkError extends Error { diff --git a/patches/@deepseek-ai+dsh-app-boot+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-app-boot+0.2.0-rc.2.patch similarity index 78% rename from patches/@deepseek-ai+dsh-app-boot+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-app-boot+0.2.0-rc.2.patch index 2d71caf2a..3807b9fea 100644 --- a/patches/@deepseek-ai+dsh-app-boot+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-app-boot+0.2.0-rc.2.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js b/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js -index 8f6041d..7c54a1a 100644 +index e60aac4..5f62ed3 100644 --- a/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +++ b/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js @@ -318,8 +318,17 @@ function evaluatePluginCompatibility(manifest, exemptions = {}, runtimeVersion = @@ -22,7 +22,7 @@ index 8f6041d..7c54a1a 100644 } //#endregion //#region lib/types/profile-compatibility.js -@@ -835,6 +844,17 @@ function readProfileManifest(binName, dir) { +@@ -836,6 +845,17 @@ function readProfileManifest(binName, dir) { if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error(`${binName}: profile manifest ${path} must hold a JSON object`); return parsed; } @@ -40,7 +40,7 @@ index 8f6041d..7c54a1a 100644 /** * Write a profile's manifest back (2-space JSON, trailing newline). * @param dir - the profile directory. -@@ -916,31 +936,50 @@ function resolveBundleDir(binName, packageName, installAnchor, profileDir) { +@@ -917,31 +937,50 @@ function resolveBundleDir(binName, packageName, installAnchor, profileDir) { * @param options - `userLayer: false` skips reading `cordis.patch.yml`. * @returns the successfully loaded bundle layers and optional user patch layer. */ @@ -99,7 +99,7 @@ index 8f6041d..7c54a1a 100644 } const patchPath = join(dir, PROFILE_PATCH_FILENAME); const patches = options.userLayer !== false && existsSync(patchPath) ? loadOverlayPatches(binName, patchPath) : []; -@@ -2076,7 +2115,8 @@ function preflight(ctx, entries, parentURL, report) { +@@ -2077,7 +2116,8 @@ function preflight(ctx, entries, parentURL, report) { const manifest = manifestOf(ctx, row.name, base); if (manifest === void 0) return void 0; const issue = evaluatePluginCompatibility(manifest, exemptions); @@ -109,7 +109,7 @@ index 8f6041d..7c54a1a 100644 } catch (error) { return `its declared peer dependencies cannot be validated: ${error instanceof Error ? error.message : String(error)}`; } -@@ -3869,7 +3909,10 @@ var StartupError = class extends Error { +@@ -3870,7 +3910,10 @@ var StartupError = class extends Error { * @param entries - inactive plugin metadata and original failure values. */ constructor(message, entries) { @@ -121,7 +121,7 @@ index 8f6041d..7c54a1a 100644 super(message, failures.length > 0 ? { cause: new AggregateError(failures, "Plugin activation failures") } : void 0); this.entries = entries; Object.defineProperties(this, { -@@ -3906,7 +3949,7 @@ async function inactiveEntries(ctx) { +@@ -3907,7 +3950,7 @@ async function inactiveEntries(ctx) { entry, outcome: { kind: "failed", @@ -130,7 +130,7 @@ index 8f6041d..7c54a1a 100644 } }); continue; -@@ -4007,13 +4050,22 @@ function startupDiagnostic(binName, failures, required) { +@@ -4008,13 +4051,22 @@ function startupDiagnostic(binName, failures, required) { */ async function auditStartupEntries(ctx, binName, warn = (line) => void process.stderr.write(line)) { const failures = await inactiveEntries(ctx); @@ -155,7 +155,7 @@ index 8f6041d..7c54a1a 100644 }))); if (failures.length > 0) warn(activationDiagnostic(binName, failures)); } -@@ -4085,7 +4137,11 @@ async function boot(binName, absoluteConfigPath, patches, prepare, bareModuleBas +@@ -4086,7 +4138,11 @@ async function boot(binName, absoluteConfigPath, patches, prepare, bareModuleBas await auditStartupEntries(ctx, binName); return ctx; } catch (cause) { @@ -168,14 +168,14 @@ index 8f6041d..7c54a1a 100644 if (cause instanceof StartupError) { cause.startup = { configurationPath: absoluteConfigPath, -@@ -4133,4 +4189,4 @@ function addHarnessSourceSection(ctx, sourceRoot) { +@@ -4134,4 +4190,4 @@ function addHarnessSourceSection(ctx, sourceRoot) { }); } //#endregion -export { DEFAULT_PROFILE_BUNDLES, FAIL_LOUD_RELEASE_TIMEOUT_MS, HARNESS_SOURCE_SECTION, LOADER_EXPRESSION_SCHEMA, OPTIONAL_BUNDLES, PROFILES_DIR, PROFILE_COMPATIBILITY_FILENAME, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, StartupError, addHarnessSourceSection, auditStartupEntries, boot, bundlePatchFiles, bundlePatchPaths, composeEntries, createConfigProjector, createRuntimeResolution, evaluatePluginCompatibility, generateConfigSchema, getDshRuntimeVersion, initProfile, installFailLoud, isNativeConfigSchema, loadEnv, loadLayeredEnv, loadOptionalPatches, loadOverlayPatches, loadProfile, loadProfileDirectory, mountRootInclude, pluginCompatibilityWarning, prepareProfileEntries, prepareProfilePatches, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfilePlugins, readProfileVersionExemptions, reconcileProfilePatches, reconcileProfilePlugins, removeLinkProjections, renderConfigDump, reportSkippedBundles, resolveBundleDir, resolveConfigPath, resolveProfileDir, resolveTelemetryPatch, sanitizeProfile, setProfileVersionExemption, writeProfileBundles, writeProfileManifest }; -+export { DEFAULT_PROFILE_BUNDLES, FAIL_LOUD_RELEASE_TIMEOUT_MS, HARNESS_SOURCE_SECTION, LOADER_EXPRESSION_SCHEMA, OPTIONAL_BUNDLES, PROFILES_DIR, PROFILE_COMPATIBILITY_FILENAME, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, StartupError, addHarnessSourceSection, auditStartupEntries, boot, bundlePatchFiles, bundlePatchPaths, composeEntries, createConfigProjector, createRuntimeResolution, evaluatePluginCompatibility, generateConfigSchema, getDshRuntimeVersion, reportPluginCompatibility, initProfile, installFailLoud, isNativeConfigSchema, loadEnv, loadLayeredEnv, loadOptionalPatches, loadOverlayPatches, loadProfile, loadProfileDirectory, mountRootInclude, pluginCompatibilityWarning, prepareProfileEntries, prepareProfilePatches, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfilePlugins, readProfileVersionExemptions, reconcileProfilePatches, reconcileProfilePlugins, removeLinkProjections, renderConfigDump, reportSkippedBundles, resolveBundleDir, resolveConfigPath, resolveProfileDir, resolveTelemetryPatch, sanitizeProfile, setProfileVersionExemption, writeProfileBundles, writeProfileManifest }; ++export { DEFAULT_PROFILE_BUNDLES, FAIL_LOUD_RELEASE_TIMEOUT_MS, HARNESS_SOURCE_SECTION, LOADER_EXPRESSION_SCHEMA, OPTIONAL_BUNDLES, PROFILES_DIR, PROFILE_COMPATIBILITY_FILENAME, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, StartupError, addHarnessSourceSection, auditStartupEntries, boot, bundlePatchFiles, bundlePatchPaths, composeEntries, createConfigProjector, createRuntimeResolution, evaluatePluginCompatibility, generateConfigSchema, getDshRuntimeVersion, reportPluginCompatibility, initProfile, installFailLoud, isNativeConfigSchema, loadEnv, loadLayeredEnv, loadOptionalPatches, loadOverlayPatches, loadProfile, loadProfileDirectory, mountRootInclude, pluginCompatibilityWarning, prepareProfileEntries, prepareProfilePatches, readDisabledProfileBundles, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfilePlugins, readProfileVersionExemptions, reconcileProfilePatches, reconcileProfilePlugins, removeLinkProjections, renderConfigDump, reportSkippedBundles, resolveBundleDir, resolveConfigPath, resolveProfileDir, resolveTelemetryPatch, sanitizeProfile, setProfileVersionExemption, writeProfileBundles, writeProfileManifest }; diff --git a/node_modules/@deepseek-ai/dsh-app-boot/lib/types/index.d.ts b/node_modules/@deepseek-ai/dsh-app-boot/lib/types/index.d.ts -index 5e9a393..7eb148e 100644 +index 5e9a393..906f4c7 100644 --- a/node_modules/@deepseek-ai/dsh-app-boot/lib/types/index.d.ts +++ b/node_modules/@deepseek-ai/dsh-app-boot/lib/types/index.d.ts @@ -12,7 +12,7 @@ import { dshHomePath } from '@deepseek-ai/dsh-home-paths'; @@ -187,8 +187,17 @@ index 5e9a393..7eb148e 100644 export { PROFILE_COMPATIBILITY_FILENAME, readProfileCompatibility, readProfileVersionExemptions, setProfileVersionExemption, type ProfileCompatibility, } from './profile-compatibility.ts'; export { prepareProfileEntries, prepareProfilePatches } from './compatibility-preflight.ts'; export { readPluginMeta } from './package-meta.ts'; +@@ -34,7 +34,7 @@ declare module '@deepseek-ai/cordis' { + 'app-boot/config-reload'(): void; + } + } +-export { composeEntries, createRuntimeResolution, DEFAULT_PROFILE_BUNDLES, OPTIONAL_BUNDLES, bundlePatchFiles, bundlePatchPaths, initProfile, removeLinkProjections, loadProfile, loadProfileDirectory, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PROFILES_DIR, readProfileManifest, reportSkippedBundles, resolveBundleDir, resolveProfileDir, writeProfileManifest, type Profile, type ProfileLayer, type SkippedBundle, type ProfileManifest, type LinkedRoot, type RuntimeResolutionOptions, type RuntimeResolutionEntry, type RuntimeResolution, type ProfileTemplate, } from './profile.ts'; ++export { composeEntries, createRuntimeResolution, DEFAULT_PROFILE_BUNDLES, OPTIONAL_BUNDLES, bundlePatchFiles, bundlePatchPaths, initProfile, removeLinkProjections, loadProfile, loadProfileDirectory, PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PROFILES_DIR, readDisabledProfileBundles, readProfileManifest, reportSkippedBundles, resolveBundleDir, resolveProfileDir, writeProfileManifest, type Profile, type ProfileLayer, type SkippedBundle, type ProfileManifest, type LinkedRoot, type RuntimeResolutionOptions, type RuntimeResolutionEntry, type RuntimeResolution, type ProfileTemplate, } from './profile.ts'; + export { PluginPackages, type PluginPackage, type PluginPackagesConfig, } from './profile-resolution/service.ts'; + /** + * Resolve the config to boot. Replay swaps a `cordis.yml` basename for diff --git a/node_modules/@deepseek-ai/dsh-app-boot/lib/types/plugin-compatibility.d.ts b/node_modules/@deepseek-ai/dsh-app-boot/lib/types/plugin-compatibility.d.ts -index 5e91973..32c7a63 100644 +index 5e91973..23bf288 100644 --- a/node_modules/@deepseek-ai/dsh-app-boot/lib/types/plugin-compatibility.d.ts +++ b/node_modules/@deepseek-ai/dsh-app-boot/lib/types/plugin-compatibility.d.ts @@ -33,3 +33,5 @@ export declare function evaluatePluginCompatibility(manifest: object, exemptions @@ -197,4 +206,16 @@ index 5e91973..32c7a63 100644 //# sourceMappingURL=plugin-compatibility.d.ts.map +/** Report an unverified version declaration without blocking installation or loading. */ +export declare function reportPluginCompatibility(issue: PluginCompatibility): void; -\ No newline at end of file +diff --git a/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile.d.ts b/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile.d.ts +index ea91ff8..5c1a79a 100644 +--- a/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile.d.ts ++++ b/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile.d.ts +@@ -183,6 +183,8 @@ export declare function createRuntimeResolution(options: RuntimeResolutionOption + * @returns the parsed manifest. + */ + export declare function readProfileManifest(binName: string, dir: string): ProfileManifest; ++/** Packages Desktop's market switch keeps out of composition (`.dsh-market/state.json#disabled`). */ ++export declare function readDisabledProfileBundles(dir: string): Set; + /** + * Write a profile's manifest back (2-space JSON, trailing newline). + * @param dir - the profile directory. diff --git a/patches/@deepseek-ai+dsh-client-file-upload+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-file-upload+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-file-upload+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-file-upload+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-modules+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-modules+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-modules+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-modules+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-shortcuts+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-shortcuts+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-shortcuts+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-shortcuts+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.2.0-rc.2.patch similarity index 96% rename from patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-agent-preset+0.2.0-rc.2.patch index d0ae9e749..087db3f74 100644 --- a/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.2.0-rc.2.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 7f96b5f..14780a1 100644 +index 242d8f4..6bc84c5 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 @@ -271,6 +271,7 @@ window.__ModuleLoader__.load({ @@ -10,7 +10,7 @@ index 7f96b5f..14780a1 100644 ...guideEn, builtInGroup: "Built-in", customGroup: "Custom", -@@ -299,6 +300,7 @@ window.__ModuleLoader__.load({ +@@ -297,6 +298,7 @@ window.__ModuleLoader__.load({ }; /** Simplified Chinese copy. */ const zh = { @@ -18,10 +18,10 @@ index 7f96b5f..14780a1 100644 ...guideZh, builtInGroup: "内置", customGroup: "自定义", -@@ -854,6 +856,85 @@ window.__ModuleLoader__.load({ - function AgentPresetSection({ useAgentPresetSection, load, view, closeView, makeDefault, startCreatorDraft, close: closeSettings, useDeveloperTools, t }) { +@@ -848,6 +850,85 @@ window.__ModuleLoader__.load({ + */ + function AgentPresetSection({ useAgentPresetSection, load, view, closeView, makeDefault, startCreatorDraft, close: closeSettings, t }) { const state = useAgentPresetSection((value) => value); - const developerTools = useDeveloperTools((enabled) => enabled); + const chinese = document.documentElement.lang?.toLowerCase().startsWith("zh"); + const copy = chinese ? { + import: "导入", export: "导出预设", search: "搜索预设", awesome: "Awesome preset", @@ -104,7 +104,7 @@ index 7f96b5f..14780a1 100644 const [guide, setGuide] = (0, react.useState)(null); const viewTrigger = (0, react.useRef)(null); const closeViewOnUnmount = (0, react.useRef)(closeView); -@@ -888,21 +969,53 @@ window.__ModuleLoader__.load({ +@@ -881,21 +962,53 @@ window.__ModuleLoader__.load({ return (0, react_jsx_runtime.jsxs)("section", { className: AgentPresetSection_module_css_default.section, children: [ @@ -163,7 +163,7 @@ index 7f96b5f..14780a1 100644 const entry = builtIn ? null : creatorButton; if (rows.length === 0 && entry === null) return null; return (0, react_jsx_runtime.jsxs)("section", { -@@ -1011,7 +1124,13 @@ window.__ModuleLoader__.load({ +@@ -1003,7 +1116,13 @@ window.__ModuleLoader__.load({ view(row.id); }, children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconBrowseOutlineRegular, {}) @@ -178,7 +178,7 @@ index 7f96b5f..14780a1 100644 })] }, row.id); }) -@@ -1028,6 +1147,34 @@ window.__ModuleLoader__.load({ +@@ -1020,6 +1139,34 @@ window.__ModuleLoader__.load({ setGuide(null); } }), diff --git a/patches/@deepseek-ai+dsh-client-ui-attachment+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-attachment+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-attachment+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-attachment+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-chat+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-chat+0.2.0-rc.2.patch similarity index 93% rename from patches/@deepseek-ai+dsh-client-ui-chat+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-chat+0.2.0-rc.2.patch index 6ae32ce8d..c003ad35e 100644 --- a/patches/@deepseek-ai+dsh-client-ui-chat+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-chat+0.2.0-rc.2.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js -index a99972a..1db8b66 100644 +index f997683..e59d554 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js @@ -115,6 +115,22 @@ window.__ModuleLoader__.load({ @@ -42,7 +42,7 @@ index a99972a..1db8b66 100644 "fileContent": "Sixlwa_fileContent", "fileIcon": "Sixlwa_fileIcon", "fileMeta": "Sixlwa_fileMeta", -@@ -1230,6 +1247,7 @@ window.__ModuleLoader__.load({ +@@ -1220,6 +1237,7 @@ window.__ModuleLoader__.load({ if (code === "ACCOUNT_SIGNED_OUT") return t("message.failure.accountSignedOut"); if (code === "ACCOUNT_SIGN_IN_REQUIRED") return t("message.failure.accountSignInRequired"); if (code === "QUOTA" || code === "ACCOUNT_QUOTA") return t("message.failure.quota"); @@ -50,7 +50,7 @@ index a99972a..1db8b66 100644 return code === "AUTH" ? t("message.failure.auth") : message; } function ModelRetryItem({ node, active, t }) { -@@ -1336,7 +1354,7 @@ window.__ModuleLoader__.load({ +@@ -1329,7 +1347,7 @@ window.__ModuleLoader__.load({ }); } /** Right-aligned bubble shared by user and steering rows. */ @@ -59,7 +59,7 @@ index a99972a..1db8b66 100644 const { text, attachments: contentAttachments, rest } = contentParts(content); const attachments = previewAttachments ?? contentAttachments; const compactImages = attachments.length > 1; -@@ -1356,9 +1374,13 @@ window.__ModuleLoader__.load({ +@@ -1349,9 +1367,13 @@ window.__ModuleLoader__.load({ images: [attachment.image], align: "end", compact: compactImages @@ -75,7 +75,7 @@ index a99972a..1db8b66 100644 children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, { path: attachment.file.name, className: MessageItem_module_css_default.fileIcon -@@ -1418,7 +1440,7 @@ window.__ModuleLoader__.load({ +@@ -1411,7 +1433,7 @@ window.__ModuleLoader__.load({ * @param props - the session snapshot's pending submission and render seats. * @returns the echoed user bubble. */ @@ -84,7 +84,7 @@ index a99972a..1db8b66 100644 return (0, react_jsx_runtime.jsx)(UserStyleBubble, { content: (0, react.useMemo)(() => submission.text === "" ? [] : [{ type: "text", -@@ -1437,6 +1459,7 @@ window.__ModuleLoader__.load({ +@@ -1430,6 +1452,7 @@ window.__ModuleLoader__.load({ file: attachment.value }), [submission.attachments]), renderMessageImages, @@ -92,7 +92,7 @@ index a99972a..1db8b66 100644 pending: submission.placement === "steering", echo: true, t, -@@ -1450,7 +1473,7 @@ window.__ModuleLoader__.load({ +@@ -1443,7 +1466,7 @@ window.__ModuleLoader__.load({ }); } /** User and admitted-steering keyed Chat renderer. */ @@ -101,7 +101,7 @@ index a99972a..1db8b66 100644 const data = node.data; return (0, react_jsx_runtime.jsx)(UserStyleBubble, { content: data.content, -@@ -1459,6 +1482,7 @@ window.__ModuleLoader__.load({ +@@ -1452,6 +1475,7 @@ window.__ModuleLoader__.load({ openSkill }, renderMessageImages, @@ -134,7 +134,7 @@ index a99972a..1db8b66 100644 inspectCall, forkAt, loadImage, -@@ -5021,6 +5047,7 @@ window.__ModuleLoader__.load({ +@@ -5108,6 +5134,7 @@ window.__ModuleLoader__.load({ }); const pendingRows = pendingInputs.map((item) => "requestId" in item ? (0, react_jsx_runtime.jsx)(PendingSubmissionBubble, { submission: item, @@ -142,7 +142,7 @@ index a99972a..1db8b66 100644 renderMessageImages: seatProps.renderMessageImages, t: seatProps.t }, item.requestId) : (0, react_jsx_runtime.jsx)(PendingSteeringBubble, { -@@ -5040,7 +5067,7 @@ window.__ModuleLoader__.load({ +@@ -5127,7 +5154,7 @@ window.__ModuleLoader__.load({ * The chat view slot entry: pure component over the composed props; each * ordered business Node crosses the keyed renderer seat. */ @@ -151,7 +151,7 @@ index a99972a..1db8b66 100644 const order = useChat((s) => s.order); const groupedEntries = useConversation((snapshot) => snapshot.views.grouped("chat")?.entries); const entries = (0, react.useMemo)(() => groupedEntries ?? order.map((key) => ({ -@@ -5082,11 +5109,29 @@ window.__ModuleLoader__.load({ +@@ -5174,11 +5201,29 @@ window.__ModuleLoader__.load({ if (id !== fileOpenRequest.current) return; setFileOpenError({ path, @@ -181,15 +181,15 @@ index a99972a..1db8b66 100644 const closeFileOpenError = (0, react.useCallback)(() => { fileOpenRequest.current += 1; setFileOpenError(null); -@@ -5209,6 +5254,7 @@ window.__ModuleLoader__.load({ +@@ -5301,6 +5346,7 @@ window.__ModuleLoader__.load({ renderMessageImages, fileMentions, renderSlot, + onOpenUploadedFile: requestOpenUploadedFile, t }) - }) -@@ -5231,7 +5277,7 @@ window.__ModuleLoader__.load({ + }), +@@ -5327,7 +5373,7 @@ window.__ModuleLoader__.load({ busy: fileOpenBusy, onClose: closeFileOpenError, onRetry: () => { @@ -198,7 +198,7 @@ index a99972a..1db8b66 100644 }, t }) -@@ -5426,7 +5472,8 @@ window.__ModuleLoader__.load({ +@@ -5522,7 +5568,8 @@ window.__ModuleLoader__.load({ "message.accountStopped": "任务已停止", "message.failure.accountSignedOut": "任务已因退出 DeepSeek 登录而停止。", "message.failure.accountSignInRequired": "请先登录 DeepSeek,并确认请求地址支持账号认证。", @@ -208,7 +208,7 @@ index a99972a..1db8b66 100644 "message.turnError": "本轮运行失败", "message.maxTokens": "已达到输出 token 上限", "message.maxTokens.hint": "回答被截断,已有输出保留在对话中。发送“继续”可让模型接着输出。", -@@ -5615,7 +5662,8 @@ window.__ModuleLoader__.load({ +@@ -5711,7 +5758,8 @@ window.__ModuleLoader__.load({ "message.accountStopped": "Task stopped", "message.failure.accountSignedOut": "Stopped because you signed out of DeepSeek.", "message.failure.accountSignInRequired": "Sign in to DeepSeek and ensure the request destination supports account authentication.", @@ -218,7 +218,7 @@ index a99972a..1db8b66 100644 "message.turnError": "This turn failed", "message.maxTokens": "Output token limit reached", "message.maxTokens.hint": "The reply was cut off; earlier output is preserved in the conversation. Send \"continue\" to let the model resume.", -@@ -12178,7 +12226,8 @@ window.__ModuleLoader__.load({ +@@ -12265,7 +12313,8 @@ window.__ModuleLoader__.load({ "configForms", "remote", "remote.session", @@ -228,10 +228,10 @@ index a99972a..1db8b66 100644 ]; /** * Mount all Chat-owned contributions. -@@ -12268,6 +12317,14 @@ window.__ModuleLoader__.load({ +@@ -12355,6 +12404,14 @@ window.__ModuleLoader__.load({ }, LinkOpeningRow)); }); - const transcriptView = new TranscriptViewPolicy(chatSettings); + const transcriptView = new TranscriptViewPolicy(chatSettings, "dshDesktop" in globalThis ? "standard" : DEFAULT_TRANSCRIPT_VIEW_MODE); + ctx.provide("openUploadedAttachment", { open: async (sessionId, attachmentId) => { + const binding = ctx.sessions.binding(sessionId); + if (binding === void 0) throw new Error(`ui-chat: unknown session "${sessionId}"`); @@ -243,7 +243,7 @@ index a99972a..1db8b66 100644 const presentation = derivePresentationPolicy(transcriptView.mode); const performancePolicy = new PerformanceUsagePolicy(chatSettings); ctx.effect(() => () => { -@@ -12335,10 +12392,22 @@ window.__ModuleLoader__.load({ +@@ -12422,10 +12479,22 @@ window.__ModuleLoader__.load({ fileMentions: (owner) => ctx.get("chatFileMentions")?.forClosing(owner, sessionId), openFile: async (path, options) => { const cwd = ctx.sessions.list.getSnapshot().byId[sessionId]?.cwd; diff --git a/patches/@deepseek-ai+dsh-client-ui-conversation+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-conversation+0.2.0-rc.2.patch similarity index 96% rename from patches/@deepseek-ai+dsh-client-ui-conversation+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-conversation+0.2.0-rc.2.patch index 40415d457..2d942cb30 100644 --- a/patches/@deepseek-ai+dsh-client-ui-conversation+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-conversation+0.2.0-rc.2.patch @@ -1,8 +1,8 @@ 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 2107bbb..4db62a2 100644 +index 7f3f791..a03a091 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 -@@ -15719,12 +15719,13 @@ window.__ModuleLoader__.load({ +@@ -15795,12 +15795,13 @@ window.__ModuleLoader__.load({ //#endregion //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-conversation/src/client/skeleton/ConversationRoot.module.css.mjs const css$4 = ".wSkVaW_root{background:var(--dsw-alias-bg-base);flex-direction:column;min-width:0;height:100%;display:flex;position:relative}.wSkVaW_header{box-sizing:border-box;border-bottom:.5px solid var(--dsw-alias-border-l3);flex:none;grid-template-columns:auto minmax(0,1fr);min-height:76px;padding:10px 28px 0 20px;display:grid}.wSkVaW_header:where(:not(:has(.wSkVaW_tabs))){min-height:0;padding-bottom:10px}.wSkVaW_headerBlank{border-bottom:none;min-height:0;padding-bottom:0}.wSkVaW_headerBlank .wSkVaW_headerCorner{margin-left:auto}html:not([data-platform=darwin]) .wSkVaW_headerSessionless{padding-top:0}html:not([data-platform=darwin]) .wSkVaW_headerSessionless .wSkVaW_titleRow{min-height:0}[data-platform=darwin] .wSkVaW_headerLeading,[data-platform=darwin] .wSkVaW_headerActions,[data-platform=darwin] .wSkVaW_headerUtilities,[data-platform=darwin] .wSkVaW_headerCorner{-webkit-app-region:no-drag}.wSkVaW_titleRow{min-height:30px;grid-column:2;align-items:center;gap:0;padding-inline-start:max(0px, calc(var(--dsh-frame-leading-clearance,0px) - 20px));display:flex;container-type:inline-size}.wSkVaW_titleCluster{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.wSkVaW_headerLeading{flex:none;grid-area:1/1;align-items:center;gap:8px;display:flex}.wSkVaW_crumbs{white-space:nowrap;align-items:center;gap:4px;min-width:0;display:flex;overflow:hidden}.wSkVaW_crumbSeg{align-items:center;gap:4px;min-width:0;display:inline-flex}.wSkVaW_crumbSep{color:var(--dsw-alias-label-caption);font-size:14px;line-height:20px}.wSkVaW_crumb{border-radius:var(--dsw-radius-md);max-width:220px;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:14px;line-height:20px;display:inline-block;overflow:hidden}.wSkVaW_crumbSubagent{font-size:12px;line-height:18px}button.wSkVaW_crumb:hover{background:var(--dsw-alias-interactive-bg-hover)}.wSkVaW_crumbCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:500}.wSkVaW_headerActions{flex:none;align-items:center;gap:8px;display:flex}.wSkVaW_headerUtilities{flex:none;align-items:center;gap:8px;margin-left:20px;display:flex}.wSkVaW_headerUtilities:empty{display:none}.wSkVaW_headerCorner{flex:none;align-items:center;margin-left:8px;margin-right:-16px;display:flex}.wSkVaW_headerCorner:empty{display:none}.wSkVaW_tabs{z-index:1;grid-column:1/-1;gap:36px;margin-top:10px;padding-left:8px;display:flex;position:relative}.wSkVaW_tab{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:0 0 9px;font-size:13px;font-weight:500;line-height:16px;position:relative}.wSkVaW_tab:after{content:\"\";background:0 0;border-radius:2px;height:2px;position:absolute;bottom:-1px;left:0;right:0}.wSkVaW_tabActive{color:var(--dsw-alias-state-business-primary)}.wSkVaW_tabActive:after{background:var(--dsw-alias-state-business-primary)}.wSkVaW_viewArea{flex-direction:column;flex:1;min-height:0;display:flex}.wSkVaW_widthHandle{z-index:0;width:min(10px, calc((100% - var(--dsh-chat-content-width)) / 2 - 24px - 24px));cursor:col-resize;position:absolute;top:0;bottom:0}.wSkVaW_widthHandle[data-side=left]{right:calc(50% + var(--dsh-chat-content-width) / 2 + 24px)}.wSkVaW_widthHandle[data-side=right]{left:calc(50% + var(--dsh-chat-content-width) / 2 + 24px)}.wSkVaW_widthHandle:after{content:\"\";background:linear-gradient(to bottom, transparent calc(var(--dsh-width-handle-pointer-y,50%) - 36px), var(--dsw-alias-scrollbar-bg-l1) calc(var(--dsh-width-handle-pointer-y,50%) - 8px), var(--dsw-alias-scrollbar-bg-l1) calc(var(--dsh-width-handle-pointer-y,50%) + 8px), transparent calc(var(--dsh-width-handle-pointer-y,50%) + 36px));opacity:0;pointer-events:none;border-radius:2px;width:2px;position:absolute;top:0;bottom:0}.wSkVaW_widthHandle[data-side=left]:after{right:4px}.wSkVaW_widthHandle[data-side=right]:after{left:4px}.wSkVaW_widthHandle:hover:after,.wSkVaW_widthHandle[data-dragging]:after{opacity:1}.wSkVaW_widthHandle[data-dragging]{z-index:8}.wSkVaW_root:has([data-conversation-composer-overlay]) .wSkVaW_widthHandle{display:none}.wSkVaW_composerStack{--dsh-composer-stack-gap:6px;gap:var(--dsh-composer-stack-gap);flex-direction:column;display:flex}.wSkVaW_composerSeat{--dsh-composer-text-max-height:336px;flex-direction:column;flex:none;display:flex}.wSkVaW_root[data-phase=active]{overflow:hidden}.wSkVaW_root[data-phase=active] .wSkVaW_header{flex:none}.wSkVaW_body{--dsh-chat-content-width:var(--dsh-chat-user-width,clamp(680px, calc(var(--dsh-conversation-column-width,0px) * .64), 920px));--dsh-composer-card-max-width:calc(var(--dsh-chat-content-width) + 32px);--dsh-composer-side-clearance:16px;--dsh-composer-dock-inset:8px;flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.wSkVaW_embeddedBody{--dsh-chat-content-width:min(calc(100% - 32px), 920px);--dsh-composer-card-max-width:min(calc(100% - 16px), 952px);--dsh-composer-side-clearance:8px;--dsh-composer-dock-inset:8px;overflow:hidden}.wSkVaW_scrollBody{scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;margin-right:2px;display:flex;overflow-y:auto}.wSkVaW_scrollBody::-webkit-scrollbar-track{margin:2px}.wSkVaW_root[data-phase=active] .wSkVaW_viewArea,.wSkVaW_embeddedBody[data-content-phase=active] .wSkVaW_viewArea{flex:1 0 auto;min-height:auto}.wSkVaW_root[data-phase=active] .wSkVaW_composerSeat,.wSkVaW_embeddedBody[data-content-phase=active] .wSkVaW_composerSeat{z-index:7;background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-base) 0%, transparent) 0px, var(--dsw-alias-bg-base) 36px);position:sticky;bottom:0}.wSkVaW_root[data-phase=active] .wSkVaW_composerSeat:has([data-trigger-menu]){z-index:9}.wSkVaW_scrollBody:has([data-conversation-composer-overlay]){scrollbar-gutter:auto;position:relative;overflow:hidden auto}.wSkVaW_scrollBody:has([data-conversation-composer-overlay])>[data-slot=conversation\\.session]>.wSkVaW_viewArea{flex:1 1 0;min-height:0;overflow:hidden}.wSkVaW_scrollBody:has([data-conversation-composer-overlay])>.wSkVaW_composerSeat{right:var(--dsh-scrollbar-width);position:absolute;bottom:0;left:0}.wSkVaW_composerHero{width:min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance)), 100%);z-index:1;align-self:center;gap:8px;padding-bottom:32px}.wSkVaW_heroWorkspaceRow{align-items:center;gap:2px;min-width:0;margin-top:4px;padding:0 16px 0 20px;display:flex}.wSkVaW_root[data-phase=hero] .wSkVaW_scrollBody,.wSkVaW_embeddedBody[data-content-phase=hero] .wSkVaW_scrollBody{justify-content:center;overflow-y:auto}.wSkVaW_root[data-phase=settling] .wSkVaW_composerSeat,.wSkVaW_embeddedBody[data-content-phase=settling] .wSkVaW_composerSeat{visibility:hidden}"; @@ -17,7 +17,7 @@ index 2107bbb..4db62a2 100644 document.head.appendChild(tag); } var ConversationRoot_module_css_default = { -@@ -15746,6 +15747,7 @@ window.__ModuleLoader__.load({ +@@ -15822,6 +15823,7 @@ window.__ModuleLoader__.load({ "headerLeading": "wSkVaW_headerLeading", "headerSessionless": "wSkVaW_headerSessionless", "headerUtilities": "wSkVaW_headerUtilities", @@ -25,7 +25,7 @@ index 2107bbb..4db62a2 100644 "heroWorkspaceRow": "wSkVaW_heroWorkspaceRow", "root": "wSkVaW_root", "scrollBody": "wSkVaW_scrollBody", -@@ -16203,12 +16205,17 @@ window.__ModuleLoader__.load({ +@@ -16280,12 +16282,17 @@ window.__ModuleLoader__.load({ setPickerOpen(false); } }), @@ -44,7 +44,7 @@ index 2107bbb..4db62a2 100644 ...inert ? { disabled: true, placeholder: t("placeholder.workspace"), -@@ -16230,7 +16237,8 @@ window.__ModuleLoader__.load({ +@@ -16307,7 +16314,8 @@ window.__ModuleLoader__.load({ }), hero && heroWorkspaceRow, zone !== void 0 && renderSlot("conversation.input.dock", zone), @@ -54,7 +54,7 @@ index 2107bbb..4db62a2 100644 ] }); const composer = renderSlotChain("conversation.composer", { -@@ -16274,7 +16282,8 @@ window.__ModuleLoader__.load({ +@@ -16351,7 +16359,8 @@ window.__ModuleLoader__.load({ * @returns the Conversation subtree. */ function ConversationPanel({ renderSlot }) { @@ -64,7 +64,7 @@ index 2107bbb..4db62a2 100644 } //#endregion //#region lib/types/client/skeleton/ConversationHeader.js -@@ -17092,13 +17101,16 @@ window.__ModuleLoader__.load({ +@@ -17169,13 +17178,16 @@ window.__ModuleLoader__.load({ } //#endregion //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-conversation/src/client/skeleton/InputBar.module.css.mjs @@ -82,7 +82,7 @@ index 2107bbb..4db62a2 100644 document.head.appendChild(tag); } var InputBar_module_css_default = { -@@ -17120,6 +17132,7 @@ window.__ModuleLoader__.load({ +@@ -17197,6 +17209,7 @@ window.__ModuleLoader__.load({ "pending": "uV2eYG_pending", "placeholder": "uV2eYG_placeholder", "primary": "uV2eYG_primary", @@ -90,7 +90,7 @@ index 2107bbb..4db62a2 100644 "retry": "uV2eYG_retry", "root": "uV2eYG_root", "row": "uV2eYG_row", -@@ -17146,7 +17159,7 @@ window.__ModuleLoader__.load({ +@@ -17223,7 +17236,7 @@ window.__ModuleLoader__.load({ * The no-session state renders the SAME div inert as the Workspace-picker * trigger instead of a parallel tree. */ @@ -99,7 +99,7 @@ index 2107bbb..4db62a2 100644 const input = useInput((s) => s); const notice = useNotices((s) => s); const busyEnter = useBusyEnter((s) => s); -@@ -17374,10 +17387,6 @@ window.__ModuleLoader__.load({ +@@ -17451,10 +17464,6 @@ window.__ModuleLoader__.load({ className: InputBar_module_css_default.overlayAnchor, children: renderSlot("conversation.input.overlay", {}) }), @@ -110,7 +110,7 @@ index 2107bbb..4db62a2 100644 renderSlot("conversation.input.attachments", { attachments, canAcceptDrop, -@@ -17389,25 +17398,35 @@ window.__ModuleLoader__.load({ +@@ -17466,25 +17475,35 @@ window.__ModuleLoader__.load({ onRetryFile: (id) => { retryFileUpload?.(id); }, @@ -160,7 +160,7 @@ index 2107bbb..4db62a2 100644 }), (0, react_jsx_runtime.jsxs)("div", { ref: rowRef, -@@ -17535,7 +17554,7 @@ window.__ModuleLoader__.load({ +@@ -17612,7 +17631,7 @@ window.__ModuleLoader__.load({ }), (0, react_jsx_runtime.jsxs)("div", { className: InputBar_module_css_default.dock, @@ -169,7 +169,7 @@ index 2107bbb..4db62a2 100644 useProjection, t })] -@@ -18102,6 +18121,14 @@ window.__ModuleLoader__.load({ +@@ -18179,6 +18198,14 @@ window.__ModuleLoader__.load({ "conversation.hero.agentPreset": { kind: "single", scope: "session-maybe" @@ -184,7 +184,7 @@ index 2107bbb..4db62a2 100644 } }, slots: { -@@ -18225,6 +18252,10 @@ window.__ModuleLoader__.load({ +@@ -18302,6 +18329,10 @@ window.__ModuleLoader__.load({ kind: "list", scope: "session" }, @@ -195,7 +195,7 @@ index 2107bbb..4db62a2 100644 "conversation.input.permission": { kind: "single", scope: "session" -@@ -18261,6 +18292,7 @@ window.__ModuleLoader__.load({ +@@ -18338,6 +18369,7 @@ window.__ModuleLoader__.load({ removeAttachment: void 0, resolveDraftAttachments: void 0, retryFileUpload: void 0, @@ -203,7 +203,7 @@ index 2107bbb..4db62a2 100644 toggleCommandMenu: void 0, stop: void 0, hooks: { -@@ -18327,6 +18359,11 @@ window.__ModuleLoader__.load({ +@@ -18404,6 +18436,11 @@ window.__ModuleLoader__.load({ retryFileUpload: (id) => { if (sessions.binding(sessionId) !== void 0) conversation.retryFileUpload(sessionId, id); }, @@ -215,7 +215,7 @@ index 2107bbb..4db62a2 100644 toggleCommandMenu: inputTriggers === void 0 ? void 0 : (selection) => { shell.dismissPopup(); const snapshot = shell.snapshot; -@@ -18359,10 +18396,7 @@ window.__ModuleLoader__.load({ +@@ -18436,10 +18473,7 @@ window.__ModuleLoader__.load({ yield slots.register({ name: "main", key: "conversation", diff --git a/patches/@deepseek-ai+dsh-client-ui-deliverables+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-deliverables+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-deliverables+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-deliverables+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-model-selection+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-model-selection+0.1.7-rc.2.patch deleted file mode 100644 index ef629603a..000000000 --- a/patches/@deepseek-ai+dsh-client-ui-model-selection+0.1.7-rc.2.patch +++ /dev/null @@ -1,218 +0,0 @@ -diff --git a/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js -index c904a89..e7d4297 100644 ---- a/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js -+++ b/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js -@@ -484,15 +484,71 @@ window.__ModuleLoader__.load({ - * store/verbs) + the standard locale seat. - * @returns the trigger and, while open, the two-level menu. - */ -+ const searchStyles = ` -+.dshModelSelectSearch { -+ box-sizing: border-box; -+ height: 36px; -+ color: var(--dsw-alias-label-tertiary); -+ background: var(--dsw-alias-bg-module-platform); -+ border: 1px solid transparent; -+ border-radius: 9px; -+ align-items: center; -+ gap: 7px; -+ margin: 2px 4px 4px; -+ padding: 0 9px; -+ display: flex; -+ flex: none; -+} -+.dshModelSelectSearch:focus-within { -+ border-color: var(--dsw-alias-border-l2); -+ background: var(--dsw-specific-menu); -+} -+.dshModelSelectSearchIcon { -+ flex: none; -+} -+.dshModelSelectSearchInput { -+ width: 100%; -+ min-width: 0; -+ color: var(--dsw-alias-label-primary); -+ font: inherit; -+ background: 0 0; -+ border: none; -+ outline: none; -+ padding: 0; -+ font-size: 13px; -+ line-height: 20px; -+} -+.dshModelSelectSearchInput::placeholder { -+ color: var(--dsw-alias-label-caption); -+} -+`; -+ if (typeof document !== "undefined" && document.getElementById("dsh-model-select-search-style") === null) { -+ const tag = document.createElement("style"); -+ tag.id = "dsh-model-select-search-style"; -+ tag.textContent = searchStyles; -+ document.head.appendChild(tag); -+ } -+ /** Keep provider grouping while narrowing a large model catalog. */ -+ function filterModelGroups(groups, query) { -+ const needle = query.trim().toLowerCase(); -+ if (needle.length === 0) return groups; -+ return groups.flatMap((group) => { -+ const providerMatches = [group.id, group.name].some((value) => value.toLowerCase().includes(needle)); -+ const models = providerMatches ? group.models : group.models.filter((model) => [model.id, model.name, model.description ?? ""].some((value) => value.toLowerCase().includes(needle))); -+ return models.length === 0 ? [] : [{ ...group, models }]; -+ }); -+ } - function ModelSelect({ locked, available, directory, load, select, t }) { - const state = (0, react.useSyncExternalStore)((fn) => directory.subscribe(fn), () => directory.getSnapshot()); - const [open, setOpen] = (0, react.useState)(false); - const [pane, setPane] = (0, react.useState)("root"); -+ const [modelQuery, setModelQuery] = (0, react.useState)(""); - const lastActionRef = (0, react.useRef)("load"); - const [toast, setToast] = (0, react.useState)(null); - const toastSeq = (0, react.useRef)(0); - const rootRef = (0, react.useRef)(null); - const triggerRef = (0, react.useRef)(null); -+ const searchRef = (0, react.useRef)(null); - const menuRef = (0, react.useRef)(null); - const [menuPos, setMenuPos] = (0, react.useState)(null); - const itemRefs = (0, react.useRef)([]); -@@ -507,6 +563,7 @@ window.__ModuleLoader__.load({ - ...model.reasoning?.defaultEffort === void 0 ? {} : { reasoningEffort: model.reasoning.defaultEffort } - } - }))), [groups]); -+ const filteredGroups = (0, react.useMemo)(() => filterModelGroups(groups, modelQuery), [groups, modelQuery]); - const currentChoice = choices[state.current === null ? -1 : choices.findIndex((c) => c.selection.provider === state.current?.provider && c.selection.model === state.current.model)]; - const reasoning = currentChoice?.model.reasoning; - const effectiveEffort = state.current?.reasoningEffort ?? reasoning?.defaultEffort; -@@ -583,17 +640,22 @@ window.__ModuleLoader__.load({ - pane, - state - ]); -+ (0, react.useEffect)(() => { -+ if (open && pane === "model") searchRef.current?.focus(); -+ }, [open, pane]); - if (!available) return null; - const show = () => { - triggerRef.current?.focus(); - if (state.current === null) paneFocus.current = "drill"; - setPane(state.current === null ? "model" : "root"); -+ setModelQuery(""); - setOpen(true); - reload(); - }; - const close = (restoreFocus = false) => { - setOpen(false); - setPane("root"); -+ setModelQuery(""); - if (restoreFocus) queueMicrotask(() => { - triggerRef.current?.focus(); - }); -@@ -606,17 +668,22 @@ window.__ModuleLoader__.load({ - const back = (from) => { - paneFocus.current = from; - setPane("root"); -+ setModelQuery(""); - }; - const moveFocus = (offset) => { - const items = itemRefs.current.filter((item) => item !== null); - if (items.length === 0) return; - const active = items.findIndex((item) => item === document.activeElement); -- items[active === -1 ? offset > 0 ? 0 : items.length - 1 : (active + offset + items.length) % items.length]?.focus(); -+ const next = active < 0 ? offset > 0 ? 0 : items.length - 1 : (active + offset + items.length) % items.length; -+ items[next]?.focus(); - }; - const onRootKeyDown = (event) => { - if (event.key === "Escape" && open) { - event.preventDefault(); -- if (pane !== "root" && state.current !== null) back(pane); -+ if (pane !== "root" && state.current !== null) { -+ back(pane); -+ setModelQuery(""); -+ } - else close(true); - return; - } -@@ -756,6 +823,7 @@ window.__ModuleLoader__.load({ - role: "menuitem", - className: ModelSelect_module_css_default.cell, - onClick: () => { -+ setModelQuery(""); - drill("model"); - }, - children: [ -@@ -790,6 +858,23 @@ window.__ModuleLoader__.load({ - ] - })] }), - pane === "model" && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [ -+ (0, react_jsx_runtime.jsxs)("label", { -+ className: "dshModelSelectSearch", -+ children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { className: "dshModelSelectSearchIcon" }), (0, react_jsx_runtime.jsx)("input", { -+ ref: searchRef, -+ type: "search", -+ role: "searchbox", -+ className: "dshModelSelectSearchInput", -+ value: modelQuery, -+ placeholder: t("search.placeholder"), -+ "aria-label": t("search.aria"), -+ autoComplete: "off", -+ spellCheck: false, -+ onChange: (event) => { -+ setModelQuery(event.target.value); -+ } -+ })] -+ }), - state.status === "loading" && (0, react_jsx_runtime.jsx)("div", { - className: ModelSelect_module_css_default.status, - children: t("status.loading") -@@ -817,7 +902,7 @@ window.__ModuleLoader__.load({ - }, failure.id)), - (0, react_jsx_runtime.jsx)("div", { - className: clsx(ModelSelect_module_css_default.groups, "scrollable"), -- children: groups.map((group) => { -+ children: filteredGroups.map((group) => { - const headingId = `${id}-${group.id}`; - return (0, react_jsx_runtime.jsxs)("section", { - role: "group", -@@ -861,6 +946,10 @@ window.__ModuleLoader__.load({ - state.status === "ready" && choices.length === 0 && (0, react_jsx_runtime.jsx)("div", { - className: ModelSelect_module_css_default.empty, - children: t("empty.models") -+ }), -+ state.status === "ready" && choices.length > 0 && filteredGroups.length === 0 && (0, react_jsx_runtime.jsx)("div", { -+ className: ModelSelect_module_css_default.empty, -+ children: t("empty.search") - }) - ] }), - pane === "effort" && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [state.error !== null && lastActionRef.current === "load" && (0, react_jsx_runtime.jsxs)("div", { -@@ -935,6 +1024,8 @@ window.__ModuleLoader__.load({ - "menu.aria": "模型与推理等级", - "menu.model": "模型", - "menu.effort": "推理等级", -+ "search.placeholder": "搜索模型或服务商", -+ "search.aria": "搜索模型或服务商", - "effort.providerDefault": "Default", - "status.loading": "正在刷新模型列表…", - "error.action": "模型操作失败:{message}", -@@ -942,6 +1033,7 @@ window.__ModuleLoader__.load({ - "action.reload": "重新加载", - "warning.groupLoad": "{name} 加载失败:{message}", - "empty.models": "没有可用的模型。", -+ "empty.search": "没有找到匹配的模型。", - "empty.efforts": "当前模型未提供推理等级。" - }; - /** English dictionary, checked complete against the zh key set. */ -@@ -960,6 +1052,8 @@ window.__ModuleLoader__.load({ - "menu.aria": "Model and reasoning effort", - "menu.model": "Model", - "menu.effort": "Effort", -+ "search.placeholder": "Search models or providers", -+ "search.aria": "Search models or providers", - "effort.providerDefault": "Default", - "status.loading": "Refreshing model list…", - "error.action": "Model operation failed: {message}", -@@ -967,6 +1061,7 @@ window.__ModuleLoader__.load({ - "action.reload": "Reload", - "warning.groupLoad": "{name} failed to load: {message}", - "empty.models": "No models available.", -+ "empty.search": "No matching models.", - "empty.efforts": "This model provides no reasoning effort levels." - }; - //#endregion diff --git a/patches/@deepseek-ai+dsh-client-ui-primitives+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-primitives+0.2.0-rc.2.patch similarity index 93% rename from patches/@deepseek-ai+dsh-client-ui-primitives+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-primitives+0.2.0-rc.2.patch index 03d55eedd..927800db9 100644 --- a/patches/@deepseek-ai+dsh-client-ui-primitives+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-primitives+0.2.0-rc.2.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js b/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js -index fd78084..79e4984 100644 +index 2d94c1a..633f98f 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js -@@ -11123,7 +11123,7 @@ function renderNode(node, key, context) { +@@ -11323,7 +11323,7 @@ function renderNode(node, key, context) { "aria-label": mention.label, onClick: mention.open, children: [jsx(LinkIconMedium, { diff --git a/patches/@deepseek-ai+dsh-client-ui-settings-general+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-settings-general+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-settings-general+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-settings-general+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-settings-models+0.2.0-rc.2.patch similarity index 95% rename from patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-settings-models+0.2.0-rc.2.patch index cffbc577b..a25afd3e4 100644 --- a/patches/@deepseek-ai+dsh-client-ui-settings-models+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-settings-models+0.2.0-rc.2.patch @@ -1,5 +1,5 @@ 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 5cb34cb..b2b837a 100644 +index c5252c1..efd12ce 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 @@ -64,6 +64,38 @@ window.__ModuleLoader__.load({ @@ -665,7 +665,7 @@ index 5cb34cb..b2b837a 100644 children: [(0, react_jsx_runtime.jsx)("summary", { className: ModelsSection_module_css_default["customizedSummary"], children: t("customized") -@@ -1797,8 +2140,22 @@ window.__ModuleLoader__.load({ +@@ -1797,8 +2140,23 @@ window.__ModuleLoader__.load({ })] })] }); }; @@ -680,6 +680,7 @@ index 5cb34cb..b2b837a 100644 + props.onClose(false); + }, + onSubmit: () => { ++ props.onSubmitCredential?.(); + apply(); + } + }; @@ -689,7 +690,7 @@ index 5cb34cb..b2b837a 100644 children: [ props.hideTitle === true ? null : (0, react_jsx_runtime.jsxs)("div", { className: ModelsSection_module_css_default["editorHeader"], -@@ -1822,19 +2179,15 @@ window.__ModuleLoader__.load({ +@@ -1822,20 +2180,15 @@ window.__ModuleLoader__.load({ className: ModelsSection_module_css_default["advancedHint"], children: `${t("model")} ${String(modelFailure.index + 1)}: ${t(modelFailure.key)}` }), @@ -704,6 +705,7 @@ index 5cb34cb..b2b837a 100644 - props.onClose(false); - }, - onSubmit: () => { +- props.onSubmitCredential?.(); - apply(); - } + props.credentialOnly === true || !customizedOpen || layout === "unknown" ? (0, react_jsx_runtime.jsx)(EditorFooter, { ...footerProps }) : (0, react_jsx_runtime.jsxs)("div", { @@ -718,7 +720,7 @@ index 5cb34cb..b2b837a 100644 }) ] }); -@@ -1940,6 +2293,26 @@ window.__ModuleLoader__.load({ +@@ -1941,6 +2294,26 @@ window.__ModuleLoader__.load({ function providerCopy(template, target) { return template.replace("{provider}", () => providerTargetLabel(target)); } @@ -745,7 +747,7 @@ index 5cb34cb..b2b837a 100644 /** * Render the Models section content column. * @param props - slot-delivered injected dependencies. -@@ -1986,6 +2359,7 @@ window.__ModuleLoader__.load({ +@@ -1987,6 +2360,7 @@ window.__ModuleLoader__.load({ const [deleting, setDeleting] = (0, react.useState)(false); const [deleteFailure, setDeleteFailure] = (0, react.useState)(void 0); const [savedTarget, setSavedTarget] = (0, react.useState)(void 0); @@ -753,7 +755,7 @@ index 5cb34cb..b2b837a 100644 const [dismissedSetup, setDismissedSetup] = (0, react.useState)(() => /* @__PURE__ */ new Set()); const announceSaved = (target) => { controller.load().then(() => { -@@ -2073,6 +2447,10 @@ window.__ModuleLoader__.load({ +@@ -2074,6 +2448,10 @@ window.__ModuleLoader__.load({ row, namespace }]; @@ -764,7 +766,7 @@ index 5cb34cb..b2b837a 100644 }); const piAi = state.namespaces.get("llm-pi-ai"); const protocols = protocolChoices(piAi, schema); -@@ -2483,9 +2861,24 @@ window.__ModuleLoader__.load({ +@@ -2477,9 +2855,24 @@ window.__ModuleLoader__.load({ function assertNever$1(_value) { throw new Error("unexpected DeepSeek onboarding state"); } @@ -791,7 +793,7 @@ index 5cb34cb..b2b837a 100644 * @param props - settings-shell owner state and Models feature dependencies. * @returns the onboarding modal or null when onboarding needs no intervention. */ -@@ -2494,6 +2887,16 @@ window.__ModuleLoader__.load({ +@@ -2488,6 +2881,16 @@ window.__ModuleLoader__.load({ const [apiKey, setApiKey] = (0, react.useState)(explicit); const state = useModels((snapshot) => snapshot); const readiness = onboardingReadiness(state); @@ -808,7 +810,7 @@ index 5cb34cb..b2b837a 100644 (0, react.useEffect)(() => { if ((automatic || explicit) && state.status === "idle") controller.load(); }, [ -@@ -2867,6 +3270,8 @@ window.__ModuleLoader__.load({ +@@ -2864,6 +3267,8 @@ window.__ModuleLoader__.load({ addCatalogExhausted: "Every catalog provider is already configured.", addCustomUnavailable: "No API protocol is available to declare.", provider: "Provider", @@ -817,7 +819,7 @@ index 5cb34cb..b2b837a 100644 close: "Close", cancel: "Cancel", apply: "Apply", -@@ -2904,6 +3309,14 @@ window.__ModuleLoader__.load({ +@@ -2901,6 +3306,14 @@ window.__ModuleLoader__.load({ modelInputTypes: "Input types", modelInputText: "Text", modelInputImage: "Image", @@ -832,8 +834,8 @@ index 5cb34cb..b2b837a 100644 addModel: "Add model", removeModel: "Delete model", modelsEmpty: "No models will be shown in the selector. Unlisted IDs can still be sent directly.", -@@ -2952,10 +3365,14 @@ window.__ModuleLoader__.load({ - welcomeBody: "DeepSeek Harness 0.1 remains in testing for Harness developers. Many areas need further improvement, and we welcome feedback from the developer community. DeepSeek Harness's core plugins and foundational APIs will continue to evolve rapidly over the coming months.\n\nWe look forward to exploring the limits of intelligence with developers around the world, building on open-source, open, reusable, and composable infrastructure. We welcome Harness developers everywhere to join the DSH plugin ecosystem.", +@@ -2949,10 +3362,14 @@ window.__ModuleLoader__.load({ + welcomeBody: "DeepSeek Harness 0.2 is still in preview, and many areas need continued improvement and refinement. We welcome feedback and suggestions from all developers and users. The new desktop app now targets a broad range of users, while developer-related advanced features can be enabled in the settings. DeepSeek Harness’s product features and plugin APIs are expected to continue rapid iteration and evolution, and will gradually stabilize over time.\n\nWe look forward to exploring the limits of intelligence together with users and developers around the world, building on open-source, reusable, and composable infrastructure. We welcome everyone to bring their ideas to life with DeepSeek Harness and participate in the community to enrich the plugin ecosystem.", welcomeContinue: "Continue", welcomeError: "The acknowledgement could not be saved. Please try again.", - onboardingTitle: "Add an API key to get started", @@ -850,7 +852,7 @@ index 5cb34cb..b2b837a 100644 onboardingSaving: "Saving…", keyRequired: "Enter an API key to continue." }; -@@ -3020,6 +3437,14 @@ window.__ModuleLoader__.load({ +@@ -3017,6 +3434,14 @@ window.__ModuleLoader__.load({ modelInputTypes: "输入类型", modelInputText: "文本", modelInputImage: "图片", @@ -865,8 +867,8 @@ index 5cb34cb..b2b837a 100644 addModel: "添加模型", removeModel: "删除模型", modelsEmpty: "模型选择器中将不显示任何模型;目录外 ID 仍可直接发送。", -@@ -3068,10 +3493,14 @@ window.__ModuleLoader__.load({ - welcomeBody: "DeepSeek Harness 目前的 0.1 版本仍处在面向 Harness 开发者进行测试的阶段,还有许多地方需要持续改进和打磨,希望听取广大开发者的反馈建议。预计 DeepSeek Harness 的核心插件以及基础 API 都会在接下来的一段时间内快速迭代、持续演化。\n\n我们期待与全球开发者一起,在开源、开放、可复用、可组合的基础设施之上,共同探索智能上限。欢迎全球 Harness 开发者加入 DSH 插件生态。", +@@ -3065,10 +3490,14 @@ window.__ModuleLoader__.load({ + welcomeBody: "DeepSeek Harness 目前的 0.2 版本仍处于预览阶段,还有许多地方需要持续改进和打磨,希望听取广大开发者和用户的反馈建议。现在,新的桌面端面向广泛用户,开发者相关的进阶功能可在配置中开启使用。预计 DeepSeek Harness 的产品功能以及插件 API 都会继续快速迭代、持续演化,并逐渐趋于稳定。\n\n我们期待与全球用户和开发者一起,在开源、可复用、可组合的基础设施之上,共同探索智能上限。欢迎大家用 DeepSeek Harness 将想法变成现实,与社区一起丰富插件生态。", welcomeContinue: "继续", welcomeError: "暂时无法保存确认状态,请重试。", - onboardingTitle: "添加一个 API Key 开始使用", @@ -883,7 +885,7 @@ index 5cb34cb..b2b837a 100644 onboardingSaving: "保存中…", keyRequired: "请输入 API 密钥后继续。" }; -@@ -4075,22 +4504,7 @@ window.__ModuleLoader__.load({ +@@ -4073,22 +4502,7 @@ window.__ModuleLoader__.load({ } } }, ModelsSection)); diff --git a/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-sidebar+0.2.0-rc.2.patch similarity index 94% rename from patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-sidebar+0.2.0-rc.2.patch index e6c4850fe..b0cc2dd68 100644 --- a/patches/@deepseek-ai+dsh-client-ui-sidebar+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-sidebar+0.2.0-rc.2.patch @@ -1,5 +1,5 @@ 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 1c2bc08..6840f48 100644 +index de89863..8bcecab 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 @@ -288,6 +288,8 @@ window.__ModuleLoader__.load({ @@ -11,7 +11,7 @@ index 1c2bc08..6840f48 100644 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: () => { -@@ -380,6 +382,7 @@ window.__ModuleLoader__.load({ +@@ -375,6 +377,7 @@ window.__ModuleLoader__.load({ })] }) }), @@ -19,7 +19,7 @@ index 1c2bc08..6840f48 100644 panels.length > 0 && (0, react_jsx_runtime.jsx)("nav", { className: SidebarRoot_module_css_default.panelList, "aria-label": t("panels.label"), -@@ -407,6 +410,7 @@ window.__ModuleLoader__.load({ +@@ -402,6 +405,7 @@ window.__ModuleLoader__.load({ className: SidebarRoot_module_css_default.footerActions, children: renderSlot("sidebar.footer.action", { wide }) }), (0, react_jsx_runtime.jsx)("div", { @@ -27,7 +27,7 @@ index 1c2bc08..6840f48 100644 className: SidebarRoot_module_css_default.settingsArea, children: renderSlot("sidebar.settings", { wide }) })] -@@ -504,6 +508,10 @@ window.__ModuleLoader__.load({ +@@ -500,6 +504,10 @@ window.__ModuleLoader__.load({ kind: "single", scope: "root" }, @@ -76,11 +76,10 @@ index 6c346de..62dd1ac 100644 //# sourceMappingURL=slots.d.ts.map \ No newline at end of file diff --git a/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/types/client/index.d.ts b/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/types/client/index.d.ts -index e587e9b..73f4ffc 100644 +index 59371eb..77f3607 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/types/client/index.d.ts +++ b/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/types/client/index.d.ts -@@ -1,7 +1,7 @@ - /** Registers the sidebar shell and global panel navigation. */ +@@ -1,6 +1,6 @@ import type { Context as ClientContext } from '@deepseek-ai/cordis'; import { type SidebarKey } from './locales.ts'; -export type { SidebarBrandMarkOwnerProps, SidebarBrandNameOwnerProps, SidebarFooterActionOwnerProps, SidebarPanelIconOwnerProps, SidebarPanelMetadata, SidebarRootComponentProps, SidebarRootInjected, SidebarSectionOwnerProps, SidebarSettingsOwnerProps, } from './contract/slots.ts'; diff --git a/patches/@deepseek-ai+dsh-client-ui-trajectory+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-trajectory+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-client-ui-trajectory+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-trajectory+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-client-ui-workspace+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-client-ui-workspace+0.2.0-rc.2.patch similarity index 92% rename from patches/@deepseek-ai+dsh-client-ui-workspace+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-client-ui-workspace+0.2.0-rc.2.patch index 77ad212d4..7b9f848a0 100644 --- a/patches/@deepseek-ai+dsh-client-ui-workspace+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-client-ui-workspace+0.2.0-rc.2.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js -index 76cd793..39db077 100644 +index 41a4591..89cbb27 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js -@@ -487,6 +487,7 @@ window.__ModuleLoader__.load({ +@@ -489,6 +489,7 @@ window.__ModuleLoader__.load({ const currentGroup = current === void 0 ? void 0 : owningGroupKey(workspaces, current); const groups = []; for (const g of groupByWorkspace(list, workspaces, archived, rowState.archivedFilter, view.ungroupedOrder)) { @@ -10,7 +10,7 @@ index 76cd793..39db077 100644 const expanded = expandedGroups.has(g.key); groups.push({ key: g.key, -@@ -660,10 +661,18 @@ window.__ModuleLoader__.load({ +@@ -662,10 +663,18 @@ window.__ModuleLoader__.load({ orderBy: "updated", groupExpansion: {}, sessionOrderByAccount: {}, @@ -29,7 +29,7 @@ index 76cd793..39db077 100644 setGroupBy: (d, mode) => { d.groupBy = mode; }, -@@ -758,6 +767,12 @@ window.__ModuleLoader__.load({ +@@ -760,6 +769,12 @@ window.__ModuleLoader__.load({ lifetime = new AbortController(); selection = (0, _deepseek_ai_dsh_client_store.createSnapshotStore)({}, { persist: { name: "dsh.sessions.current" } }); mainReference; @@ -42,7 +42,7 @@ index 76cd793..39db077 100644 /** * @param ctx - Client root Context. * @param directoryPicker - the directory-picking Remote namespace. -@@ -784,23 +799,23 @@ window.__ModuleLoader__.load({ +@@ -786,23 +801,23 @@ window.__ModuleLoader__.load({ }; }, "ui-workspace: Workspace navigation policy"); } @@ -71,7 +71,7 @@ index 76cd793..39db077 100644 return this.reuseBlank(workspace.workspaceId, id); } return this.sessions.create({ workspaceId: workspace.workspaceId }); -@@ -816,14 +831,53 @@ window.__ModuleLoader__.load({ +@@ -818,14 +833,53 @@ window.__ModuleLoader__.load({ return this.sessions.create({ workspaceId }); } } @@ -128,7 +128,7 @@ index 76cd793..39db077 100644 } catch (error) { if (!navigation.aborted) this.notify({ kind: "createFailed", -@@ -832,6 +886,8 @@ window.__ModuleLoader__.load({ +@@ -834,6 +888,8 @@ window.__ModuleLoader__.load({ throw error; } if (navigation.aborted) return; @@ -136,9 +136,9 @@ index 76cd793..39db077 100644 + if (this.sessionOpener?.(sessionId, "workspace", { workspaceId, created: !knownSessions.has(sessionId) }) === true) return; this.replaceMain(sessionId, navigation, "reveal", beforeOpen); } - async forkSession(sessionId) { -@@ -840,7 +896,18 @@ window.__ModuleLoader__.load({ - increaseTitle: true + async forkSession(sessionId, onCreated) { +@@ -843,7 +899,18 @@ window.__ModuleLoader__.load({ + ...onCreated === void 0 ? {} : { onCreated } }); } + registerSessionStarter(handler) { @@ -156,7 +156,7 @@ index 76cd793..39db077 100644 const workspace = this.workspaces.list.getSnapshot(); const sessions = this.sessions.list.getSnapshot(); const current = this.mainReference?.sessionId; -@@ -851,7 +918,7 @@ window.__ModuleLoader__.load({ +@@ -854,7 +921,7 @@ window.__ModuleLoader__.load({ this.clearMain(); return; } @@ -165,7 +165,7 @@ index 76cd793..39db077 100644 console.warn("new session failed:", reason); }); } -@@ -862,6 +929,24 @@ window.__ModuleLoader__.load({ +@@ -865,6 +932,24 @@ window.__ModuleLoader__.load({ async unarchiveSession(sessionId) { await this.workspaces.unarchiveSession(sessionId); } @@ -190,7 +190,7 @@ index 76cd793..39db077 100644 async pinSession(sessionId) { await this.workspaces.pinSession(sessionId); const { items, pinnedSessionIds, archivedSessionIds } = this.workspaces.list.getSnapshot(); -@@ -1490,7 +1575,7 @@ window.__ModuleLoader__.load({ +@@ -1493,7 +1578,7 @@ window.__ModuleLoader__.load({ * @param props.t - Workspace-browser translation seat. * @returns the result row. */ @@ -199,7 +199,7 @@ index 76cd793..39db077 100644 const selected = result.id === currentId; const statuses = sessionStatuses(result, t); const primaryStatus = statuses[0]; -@@ -1505,6 +1590,7 @@ window.__ModuleLoader__.load({ +@@ -1508,6 +1593,7 @@ window.__ModuleLoader__.load({ children: [(0, react_jsx_runtime.jsxs)("span", { className: Rows_module_css_default.searchResultHeading, children: [ @@ -207,7 +207,7 @@ index 76cd793..39db077 100644 (0, react_jsx_runtime.jsx)("span", { className: Rows_module_css_default.slot, children: !result.archived && primaryStatus.state !== "idle" && (0, react_jsx_runtime.jsx)(SessionStatusDots, { statuses }) -@@ -1565,7 +1651,7 @@ window.__ModuleLoader__.load({ +@@ -1568,7 +1654,7 @@ window.__ModuleLoader__.load({ * @param props.t - the browser root's locale seat. * @returns the session row. */ @@ -216,7 +216,7 @@ index 76cd793..39db077 100644 const row = node; const title = displayTitle(node, t); const selected = node.id === currentId; -@@ -1594,6 +1680,11 @@ window.__ModuleLoader__.load({ +@@ -1597,6 +1683,11 @@ window.__ModuleLoader__.load({ onClick: () => { onOpen(node.id); }, @@ -228,7 +228,7 @@ index 76cd793..39db077 100644 onPointerEnter: marquee.enter, onPointerLeave: marquee.leave, draggable, -@@ -1617,11 +1708,12 @@ window.__ModuleLoader__.load({ +@@ -1620,11 +1711,12 @@ window.__ModuleLoader__.load({ children: [ (0, react_jsx_runtime.jsx)("span", { className: Rows_module_css_default.slot, @@ -242,7 +242,7 @@ index 76cd793..39db077 100644 onDoubleClick: row.blank ? void 0 : (e) => { e.stopPropagation(); onRenameRequest(node.id, row.title); -@@ -1657,7 +1749,9 @@ window.__ModuleLoader__.load({ +@@ -1660,7 +1752,9 @@ window.__ModuleLoader__.load({ }), children: renderSlot("sidebar.workspaces.session.menu.item", { sessionId: node.id, @@ -253,7 +253,7 @@ index 76cd793..39db077 100644 }, { hookContext: menuOpenState }) }), renderSlot("sidebar.workspaces.session.row.action", { sessionId: node.id, -@@ -2310,7 +2404,7 @@ window.__ModuleLoader__.load({ +@@ -2313,7 +2407,7 @@ window.__ModuleLoader__.load({ }); } /** The scrolling session tree; unmounting drops the sessions subscription and local row limits. */ @@ -262,7 +262,7 @@ index 76cd793..39db077 100644 const panelActive = usePanelInfo((info) => info.activePanelId !== null); const statuses = useSessionStatus((s) => s); const current = panelActive ? void 0 : Object.values(list.byId).find((session) => (session.retainedBy.mainView ?? 0) > 0)?.id; -@@ -2585,6 +2679,8 @@ window.__ModuleLoader__.load({ +@@ -2588,6 +2682,8 @@ window.__ModuleLoader__.load({ onOpen: open, onRenameRequest: onSessionRenameRequest, renderSlot, @@ -271,7 +271,7 @@ index 76cd793..39db077 100644 onReveal: node.id === revealSessionId && group.key === revealGroup ? () => { onSessionRevealed(node.id); } : void 0, -@@ -2633,7 +2729,7 @@ window.__ModuleLoader__.load({ +@@ -2636,7 +2732,7 @@ window.__ModuleLoader__.load({ }); } /** The flat "In one list" body: every session is one draggable top-level row. */ @@ -280,7 +280,7 @@ index 76cd793..39db077 100644 const panelActive = usePanelInfo((info) => info.activePanelId !== null); const statuses = useSessionStatus((s) => s); const rows = (0, react.useMemo)(() => deriveFlat(list, sessionIds, rowState, statuses), [ -@@ -2674,8 +2770,10 @@ window.__ModuleLoader__.load({ +@@ -2677,8 +2773,10 @@ window.__ModuleLoader__.load({ currentId, now, onOpen: open, @@ -293,7 +293,7 @@ index 76cd793..39db077 100644 onReveal: node.id === revealSessionId ? () => { onSessionRevealed(node.id); } : void 0, -@@ -2719,9 +2817,8 @@ window.__ModuleLoader__.load({ +@@ -2722,9 +2820,8 @@ window.__ModuleLoader__.load({ }); } /** Flat search body: local metadata matches plus the current Host result page. */ @@ -304,7 +304,7 @@ index 76cd793..39db077 100644 const statuses = useSessionStatus((s) => s); const currentRemote = remote.query === query ? remote : { query, -@@ -2755,6 +2852,7 @@ window.__ModuleLoader__.load({ +@@ -2758,6 +2855,7 @@ window.__ModuleLoader__.load({ currentId, onOpen: open, onUnarchive, @@ -312,7 +312,7 @@ index 76cd793..39db077 100644 t }, result.id)) }), -@@ -2787,19 +2885,26 @@ window.__ModuleLoader__.load({ +@@ -2790,19 +2888,26 @@ window.__ModuleLoader__.load({ * @param props - composed slot props (shell owner share + store + injected actions). * @returns the region element tree. */ @@ -342,7 +342,7 @@ index 76cd793..39db077 100644 const workspacePhase = useWorkspaces((state) => state.phase); const workspaceStreamState = useWorkspaces((state) => state.state); const archivedSessionIds = useWorkspaces((state) => state.archivedSessionIds); -@@ -2810,6 +2915,11 @@ window.__ModuleLoader__.load({ +@@ -2813,6 +2918,11 @@ window.__ModuleLoader__.load({ const archivedFilter = useStore((s) => s.archivedFilter ?? "default"); const groupExpansion = useStore((s) => s.groupExpansion); const sessionOrderByAccount = useStore((s) => s.sessionOrderByAccount); @@ -354,7 +354,7 @@ index 76cd793..39db077 100644 const guardedOpen = (sessionId) => { if (archivedSessionIds.includes(sessionId)) { notifyArchivedNotOpenable(); -@@ -3245,7 +3355,7 @@ window.__ModuleLoader__.load({ +@@ -3248,7 +3358,7 @@ window.__ModuleLoader__.load({ className: WorkspaceBrowser_module_css_default.listArea, children: wide && (normalizedQuery !== "" ? (0, react_jsx_runtime.jsx)(SearchResults, { usePanelInfo, @@ -363,7 +363,7 @@ index 76cd793..39db077 100644 useSessionStatus, open: openSearchResult, onUnarchive: onSessionUnarchive, -@@ -3261,6 +3371,8 @@ window.__ModuleLoader__.load({ +@@ -3264,6 +3374,8 @@ window.__ModuleLoader__.load({ list, sessionIds: orderedFlatSessionIds, rowState, @@ -372,7 +372,7 @@ index 76cd793..39db077 100644 onLeaveArchivedOnly: leaveArchivedOnly, workspaceReady, animationResetKey: `${groupBy}/${orderBy}/${archivedFilter}`, -@@ -3288,6 +3400,8 @@ window.__ModuleLoader__.load({ +@@ -3291,6 +3403,8 @@ window.__ModuleLoader__.load({ setGroupExpanded: actions.setGroupExpanded, setSessionOrder: saveSessionOrder, rowState, @@ -381,7 +381,7 @@ index 76cd793..39db077 100644 onLeaveArchivedOnly: leaveArchivedOnly, startSession, open: guardedOpen, -@@ -3963,6 +4077,7 @@ window.__ModuleLoader__.load({ +@@ -3967,6 +4081,7 @@ window.__ModuleLoader__.load({ "status.compact.planReview": "计划待审", "status.compact.answer": "待回答", "status.completed": "已完成", @@ -389,7 +389,7 @@ index 76cd793..39db077 100644 "hover.created": "创建于 {time}", "hover.copied": "已复制", "date.ymd": "{y}年{m}月{d}日", -@@ -4077,6 +4192,7 @@ window.__ModuleLoader__.load({ +@@ -4082,6 +4197,7 @@ window.__ModuleLoader__.load({ "status.compact.planReview": "Plan review", "status.compact.answer": "Answer", "status.completed": "Completed", @@ -397,7 +397,7 @@ index 76cd793..39db077 100644 "hover.created": "Created {time}", "hover.copied": "Copied", "date.ymd": "{y}-{m}-{d}", -@@ -4246,6 +4362,7 @@ window.__ModuleLoader__.load({ +@@ -4257,6 +4373,7 @@ window.__ModuleLoader__.load({ } }); const browserInjected = () => ({ @@ -405,7 +405,7 @@ index 76cd793..39db077 100644 startSession: (workspaceId) => { uiWorkspace.startSession(workspaceId); }, -@@ -4277,6 +4394,7 @@ window.__ModuleLoader__.load({ +@@ -4288,6 +4405,7 @@ window.__ModuleLoader__.load({ hooks: { directoryFlow: browserFlowSource, hostInfo, @@ -414,7 +414,7 @@ index 76cd793..39db077 100644 shortcuts: ctx.shortcuts.catalog } diff --git a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/contract/slots.d.ts b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/contract/slots.d.ts -index c56554a..bcb2ea1 100644 +index 35c0320..7730ce8 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/contract/slots.d.ts +++ b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/contract/slots.d.ts @@ -222,6 +222,7 @@ export type WorkspaceBrowserInjected = { @@ -434,10 +434,10 @@ index c56554a..bcb2ea1 100644 requestSessionRename: (sessionId: SessionId, currentTitle: string) => void; /** Tell the user an archived row cannot be opened (a click on it). */ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts -index 26ee25b..df98396 100644 +index 4d7be4a..eea7e3f 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts +++ b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts -@@ -106,6 +106,7 @@ export declare const zh: { +@@ -107,6 +107,7 @@ export declare const zh: { 'status.compact.planReview': string; 'status.compact.answer': string; 'status.completed': string; @@ -445,7 +445,7 @@ index 26ee25b..df98396 100644 'hover.created': string; 'hover.copied': string; 'date.ymd': string; -@@ -222,6 +223,7 @@ export declare const en: { +@@ -224,6 +225,7 @@ export declare const en: { 'status.compact.planReview': string; 'status.compact.answer': string; 'status.completed': string; @@ -454,7 +454,7 @@ index 26ee25b..df98396 100644 'hover.copied': string; 'date.ymd': string; diff --git a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/navigation.d.ts b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/navigation.d.ts -index 9afabc2..efc32e9 100644 +index 0d73753..e480239 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/navigation.d.ts +++ b/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/navigation.d.ts @@ -4,6 +4,11 @@ import type { ClientRemote, DirectoryListing, RemoteFailure } from '@deepseek-ai @@ -482,7 +482,7 @@ index 9afabc2..efc32e9 100644 /** * Connect a Workspace and open its Session unless a later navigation supersedes it. * @param workspaceId - target Workspace. -@@ -22,24 +31,26 @@ export interface UiWorkspace { +@@ -22,7 +31,7 @@ export interface UiWorkspace { * @throws on failure; a refused creation is also shown through the Workspace * notice unless a later navigation or disposal superseded the request. */ @@ -491,9 +491,10 @@ index 9afabc2..efc32e9 100644 /** * Fork a Session without changing the current selection. * @param sessionId - source Session. - * @returns completion after child creation and inherited-title increment. +@@ -30,17 +39,19 @@ export interface UiWorkspace { + * @returns the child SessionId after creation and inherited-title increment. */ - forkSession(sessionId: SessionId): Promise; + forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void): Promise; + deleteSession(sessionId: SessionId): Promise; /** * Resolve the reusable or newly created blank Session for a Workspace. @@ -511,7 +512,7 @@ index 9afabc2..efc32e9 100644 startSession(workspaceId?: WorkspaceId): void; /** * Archive a Session and clear it when it is the current selection. -@@ -111,6 +122,12 @@ declare class UiWorkspaceService extends Service implements UiWorkspace { +@@ -112,6 +123,12 @@ declare class UiWorkspaceService extends Service implements UiWorkspace { private readonly lifetime; private readonly selection; private mainReference; @@ -524,7 +525,7 @@ index 9afabc2..efc32e9 100644 /** * @param ctx - Client root Context. * @param directoryPicker - the directory-picking Remote namespace. -@@ -119,13 +136,19 @@ declare class UiWorkspaceService extends Service implements UiWorkspace { +@@ -120,13 +137,19 @@ declare class UiWorkspaceService extends Service implements UiWorkspace { * @param view - the browser's viewing-store write set (one instance shared with its registration). * @param notify - show one notice through the Workspace notice channel. */ @@ -542,7 +543,7 @@ index 9afabc2..efc32e9 100644 + isSessionVisible(sessionId: SessionId): boolean; + openSession(target: SessionTarget, source?: SessionNavigationSource): void; + openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void, fresh?: boolean): Promise; - forkSession(sessionId: SessionId): Promise; + forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void): Promise; + deleteSession(sessionId: SessionId): Promise; + registerSessionStarter(handler: (workspaceId?: WorkspaceId) => boolean): () => void; startSession(workspaceId?: WorkspaceId): void; diff --git a/patches/@deepseek-ai+dsh-llm-deepseek+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-llm-deepseek+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-llm-deepseek+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-llm-deepseek+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-llm-pi-ai+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-llm-pi-ai+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-llm-pi-ai+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-llm-pi-ai+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-plugin-manager+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-plugin-manager+0.2.0-rc.2.patch similarity index 72% rename from patches/@deepseek-ai+dsh-plugin-manager+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-plugin-manager+0.2.0-rc.2.patch index d4feadb97..35b87e975 100644 --- a/patches/@deepseek-ai+dsh-plugin-manager+0.1.7-rc.2.patch +++ b/patches/@deepseek-ai+dsh-plugin-manager+0.2.0-rc.2.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@deepseek-ai/dsh-plugin-manager/lib/index.js b/node_modules/@deepseek-ai/dsh-plugin-manager/lib/index.js -index 7ebf353..b680aa5 100644 +index 7ebf353..72239bf 100644 --- a/node_modules/@deepseek-ai/dsh-plugin-manager/lib/index.js +++ b/node_modules/@deepseek-ai/dsh-plugin-manager/lib/index.js @@ -7,7 +7,7 @@ import { withFileLock, writeFileAtomic } from "@deepseek-ai/dsh-atomic-write"; @@ -7,7 +7,7 @@ index 7ebf353..b680aa5 100644 import { Remote, TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol"; import { pluginEntryId, readPluginInventory } from "@deepseek-ai/dsh-host-plugin-inventory"; -import { OPTIONAL_BUNDLES, PROFILE_COMPATIBILITY_FILENAME, bundlePatchPaths, composeEntries, evaluatePluginCompatibility, loadOptionalPatches, loadOverlayPatches, pluginCompatibilityWarning, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfileVersionExemptions, reconcileProfilePatches, resolveBundleDir, resolveProfileDir, setProfileVersionExemption } from "@deepseek-ai/dsh-app-boot"; -+import { OPTIONAL_BUNDLES, PROFILE_COMPATIBILITY_FILENAME, bundlePatchPaths, composeEntries, evaluatePluginCompatibility, reportPluginCompatibility, loadOptionalPatches, loadOverlayPatches, pluginCompatibilityWarning, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfileVersionExemptions, reconcileProfilePatches, resolveBundleDir, resolveProfileDir, setProfileVersionExemption } from "@deepseek-ai/dsh-app-boot"; ++import { OPTIONAL_BUNDLES, PROFILE_COMPATIBILITY_FILENAME, bundlePatchPaths, composeEntries, evaluatePluginCompatibility, reportPluginCompatibility, loadOptionalPatches, loadOverlayPatches, pluginCompatibilityWarning, readDisabledProfileBundles, readPluginMeta, readProfileCompatibility, readProfileManifest, readProfilePatches, readProfileVersionExemptions, reconcileProfilePatches, resolveBundleDir, resolveProfileDir, setProfileVersionExemption } from "@deepseek-ai/dsh-app-boot"; import { once } from "node:events"; import { execa } from "execa"; import { scrubbedParentEnv } from "@deepseek-ai/dsh-subprocess"; @@ -48,7 +48,24 @@ index 7ebf353..b680aa5 100644 await log.write(notice); options.onOutput?.(notice, "stderr"); } -@@ -1488,7 +1494,7 @@ let PluginManager = (() => { +@@ -1457,6 +1463,7 @@ let PluginManager = (() => { + const manifest = readProfileManifest("dsh", this.profile.dir); + const exemptions = readProfileVersionExemptions(this.profile.dir); + const selected = manifest.dsh?.profile?.bundles ?? []; ++ const switchedOff = readDisabledProfileBundles(this.profile.dir); + const dependencies = Object.keys(manifest.dependencies ?? {}); + const installation = JSON.parse(readFileSync(this.profile.installAnchor, "utf8")); + const names = [...new Set([ +@@ -1469,7 +1476,7 @@ let PluginManager = (() => { + const installed = dependencies.includes(name); + const optional = OPTIONAL_BUNDLES.includes(name); + const removable = installed && !Object.hasOwn(installation.dependencies ?? {}, name); +- const enabled = selected.includes(name); ++ const enabled = selected.includes(name) && !switchedOff.has(name); + const readOnlyReason = this.protectsManager(name) ? "management-required" : void 0; + try { + const info = bundleManifest(name, this.profile.dir, this.profile.installAnchor); +@@ -1488,7 +1495,7 @@ let PluginManager = (() => { continue; } const compatibility = evaluatePluginCompatibility(info, exemptions); @@ -57,7 +74,15 @@ index 7ebf353..b680aa5 100644 const dir = resolveBundleDir("dsh", name, this.profile.installAnchor, this.profile.dir); const meta = readPluginMeta(info.name ?? name, pathToFileURL(join(dir, "package.json")).href); bundles.push({ -@@ -1705,7 +1711,13 @@ let PluginManager = (() => { +@@ -1670,6 +1677,7 @@ let PluginManager = (() => { + setBundleEnabled(name, enabled) { + return this.change((result) => this.configure(async () => { + await this.selectBundle(name, enabled); ++ await this.recordBundleSwitch(name, enabled); + result.warnings = await this.reload(enabled ? this.bundleRows(name).map((row) => row.id) : []); + }), { + stage: "enable", +@@ -1705,7 +1713,13 @@ let PluginManager = (() => { }); }; const result = this.change(async (result) => { @@ -72,7 +97,7 @@ index 7ebf353..b680aa5 100644 if (stopped()) throw new InstallCancelledError(); if (options?.approvedBuilds !== void 0) { await approveBuilds(this.profile.dir, options.approvedBuilds); -@@ -1713,9 +1725,13 @@ let PluginManager = (() => { +@@ -1713,9 +1727,25 @@ let PluginManager = (() => { } const files = await this.readRestoredFiles(); const before = readProfileManifest("dsh", this.profile.dir).dependencies ?? {}; @@ -82,11 +107,23 @@ index 7ebf353..b680aa5 100644 try { result.registries = []; + let run; -+ if (backend === void 0) { ++ if (backend !== void 0) { ++ announce("installing"); ++ mutation = await backend.install({ ++ spec: parsed.spec, ++ kind: parsed.kind, ++ path: parsed.path, ++ registry: options?.registry, ++ expectedName: parsed.name, ++ signal: control.abort.signal, ++ onOutput: (text, stream) => this.emitPackageOutput(requestId, text, stream, ["pnpm", "add", parsed.spec]) ++ }); ++ } ++ if (mutation === void 0) { const connection = checkGithubConnection(parsedForRegistry(spec), this.profile.dir, { timeoutMs: this.githubConnectionTimeoutMs, outputBytes: this.outputBytes, -@@ -1736,7 +1752,6 @@ let PluginManager = (() => { +@@ -1736,7 +1766,6 @@ let PluginManager = (() => { throw new Error(connectionFailure.output); } const plan = registryPlan(options?.registry, await this.registries()); @@ -94,21 +131,11 @@ index 7ebf353..b680aa5 100644 for (const [index, registry] of plan.entries()) { if (index > 0) await this.restoreFiles(files); if (stopped()) throw new InstallCancelledError(); -@@ -1765,10 +1780,27 @@ let PluginManager = (() => { +@@ -1765,10 +1794,17 @@ let PluginManager = (() => { } /* v8 ignore next -- the plan is never empty, so a run always settled */ if (run === void 0) throw new Error("no registry was asked"); + } else { -+ announce("installing"); -+ mutation = await backend.install({ -+ spec: parsed.spec, -+ kind: parsed.kind, -+ path: parsed.path, -+ registry: options?.registry, -+ expectedName: parsed.name, -+ signal: control.abort.signal, -+ onOutput: (text, stream) => this.emitPackageOutput(requestId, text, stream, ["pnpm", "add", parsed.spec]) -+ }); + run = mutation.packageResult; + result.packageResult = run; + if (stopped()) throw new InstallCancelledError(); @@ -123,7 +150,7 @@ index 7ebf353..b680aa5 100644 result.pendingBuilds = await readPendingBuilds(this.profile.dir); } catch (error) { this.ownerContext.logger.warn("Could not read pending build approvals after pnpm failed", error); -@@ -1776,8 +1808,8 @@ let PluginManager = (() => { +@@ -1776,8 +1812,8 @@ let PluginManager = (() => { throw new Error(run.output); } const after = readProfileManifest("dsh", this.profile.dir).dependencies ?? {}; @@ -134,7 +161,7 @@ index 7ebf353..b680aa5 100644 const target = installed[0]; if (installed.length !== 1 || target === void 0) throw new ManagementFailure("ambiguous-install"); name = target; -@@ -1785,9 +1817,10 @@ let PluginManager = (() => { +@@ -1785,9 +1821,10 @@ let PluginManager = (() => { const manifest = bundleManifest(name, this.profile.dir, this.profile.installAnchor); if (manifest?.dsh?.bundle === void 0) throw new ManagementFailure("not-bundle"); const compatibility = evaluatePluginCompatibility(manifest, readProfileVersionExemptions(this.profile.dir)); @@ -146,7 +173,7 @@ index 7ebf353..b680aa5 100644 await this.restoreFiles(files); throw error; } -@@ -1796,11 +1829,19 @@ let PluginManager = (() => { +@@ -1796,11 +1833,22 @@ let PluginManager = (() => { result.bundle = name; result.target = name; result.stage = "enable"; @@ -157,7 +184,10 @@ index 7ebf353..b680aa5 100644 - }); + try { + const application = await this.configure(async () => { -+ if (options?.enabled !== false) await this.selectBundle(name, true); ++ if (options?.enabled !== false) { ++ await this.selectBundle(name, true); ++ await this.recordBundleSwitch(name, true); ++ } + if (mutation?.replaced === true || Object.hasOwn(before, name)) return "restart-required"; + if (options?.enabled !== false) result.warnings = await this.reload(); + }); @@ -171,7 +201,14 @@ index 7ebf353..b680aa5 100644 }, { stage: "install", target: spec, -@@ -1854,7 +1895,13 @@ let PluginManager = (() => { +@@ -1848,14 +1896,21 @@ let PluginManager = (() => { + if (bundle === void 0 || !bundle.removable) throw new ManagementFailure("not-removable"); + if (this.ownerContext.get("hmr") === void 0 && (this.profile.startedBundles.includes(name) || bundle.error === void 0 && this.bundleRows(name).some((row) => [...this.ctx.loader.entries()].some((entry) => entry.options.id === row.id && entry.fiber !== void 0)))) throw new ManagementFailure("stop-profile"); + const contributions = bundle.error === void 0 ? this.bundleRows(name) : []; +- if (bundle.enabled) { ++ if (bundle.enabled || (readProfileManifest("dsh", this.profile.dir).dsh?.profile?.bundles ?? []).includes(name)) { + await this.selectBundle(name, false); + result.warnings = await this.reload(); } if ([...this.ctx.loader.entries()].some((entry) => entry.fiber?.uid != null && contributions.some((row) => row.id === entry.options.id && row.name === entry.options.name))) throw new ManagementFailure("bundle-in-use"); }); @@ -184,12 +221,30 @@ index 7ebf353..b680aa5 100644 + }); + result.packageResult = mutation?.packageResult ?? await this.runPnpm(["remove", name]); if (result.packageResult.exitCode !== 0 || result.packageResult.timedOut === true) throw new Error(result.packageResult.output); ++ await backend?.removed?.({ name }); }, { stage: "remove", -@@ -1899,6 +1946,17 @@ let PluginManager = (() => { + target: name +@@ -1899,6 +1954,33 @@ let PluginManager = (() => { overrides: [...new Set(patches.flatMap((item) => item.insert === void 0 && typeof item.id === "string" && !declared.has(item.id) ? [item.id] : []))] }; } ++ /** Persist a bundle switch in the host's package-level state, which launch reconciliation cannot revert. */ ++ async recordBundleSwitch(name, enabled) { ++ const backend = this.ownerContext.get("profileBundlePackageBackend"); ++ if (backend?.switched === void 0) return; ++ let rowIds = []; ++ try { ++ rowIds = this.bundleRows(name).map((row) => row.id).filter((id) => typeof id === "string"); ++ } catch (_error) { ++ // An unreadable patch still has a package switch; only its row overrides stay as they are. ++ } ++ await backend.switched({ ++ name, ++ enabled, ++ rowIds ++ }); ++ } + /** Emit host backend output through the same remote event contract as pnpm. */ + emitPackageOutput(requestId, text, stream, argv) { + this.ownerContext.emit("plugin-manager/install-log", { @@ -204,7 +259,7 @@ index 7ebf353..b680aa5 100644 /** Run one pnpm command in the profile, streaming its output as install-log chunks. */ async runPnpm(args, signal, requestId) { const jobId = randomUUID(); -@@ -1984,7 +2042,7 @@ let PluginManager = (() => { +@@ -1984,7 +2066,7 @@ let PluginManager = (() => { if (metadata === void 0) throw new ManagementFailure("not-bundle"); if (enabled) { const compatibility = evaluatePluginCompatibility(metadata, readProfileVersionExemptions(this.profile.dir)); @@ -214,17 +269,22 @@ index 7ebf353..b680aa5 100644 } } diff --git a/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/index.d.ts b/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/index.d.ts -index e47ee2b..2f0abe5 100644 +index e47ee2b..15aeb40 100644 --- a/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/index.d.ts +++ b/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/index.d.ts -@@ -6,6 +6,11 @@ export type * from './types.ts'; +@@ -6,6 +6,16 @@ export type * from './types.ts'; export { classifyInstallFailure, type InstallFailureFacts } from './install-failure.ts'; export { InvalidInstallSpecError, parseInstallSpec, type ParsedInstallSpec } from './install-spec.ts'; /** The pnpm executable, registries, and limits for diagnostics, lookups and connection checks. */ +/** Host-owned package mutation backend for immutable Desktop generations. */ +export interface ProfileBundlePackageBackend { -+ install(request: { spec: string; kind: 'registry' | 'path' | 'git' | 'tarball'; path?: string; registry?: string; expectedName?: string; signal: AbortSignal; onOutput(text: string, stream: 'stdout' | 'stderr'): void; }): Promise<{ packageResult: import('./types.ts').PackageResult; bundle?: string; replaced?: boolean; pendingBuilds?: string[]; rollback?(): Promise; commit?(): void; }>; -+ remove(request: { name: string; signal: AbortSignal; onOutput(text: string, stream: 'stdout' | 'stderr'): void; }): Promise<{ packageResult: import('./types.ts').PackageResult; }>; ++ install(request: { spec: string; kind: 'registry' | 'path' | 'git' | 'tarball'; path?: string; registry?: string; expectedName?: string; signal: AbortSignal; onOutput(text: string, stream: 'stdout' | 'stderr'): void; }): Promise<{ packageResult: import('./types.ts').PackageResult; bundle?: string; replaced?: boolean; pendingBuilds?: string[]; rollback?(): Promise; commit?(): void; } | undefined>; ++ /** Resolves undefined when the package is not the backend's to remove; Plugin Manager then uses pnpm. */ ++ remove(request: { name: string; signal: AbortSignal; onOutput(text: string, stream: 'stdout' | 'stderr'): void; }): Promise<{ packageResult: import('./types.ts').PackageResult; } | undefined>; ++ /** Persist a package-level switch that launch reconciliation of `dsh.profile.bundles` cannot revert. */ ++ switched?(request: { name: string; enabled: boolean; rowIds: string[]; }): Promise; ++ /** Forget host state for a package that was removed. */ ++ removed?(request: { name: string; }): Promise; +} export interface Config { /** The pnpm executable name or path; resolved through `PATH` like the `dsh plugin` command. */ diff --git a/patches/@deepseek-ai+dsh-session-persistence+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-session-persistence+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-session-persistence+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-session-persistence+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-session-persistence-jsonl+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-session-persistence-jsonl+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-session-persistence-jsonl+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-session-persistence-jsonl+0.2.0-rc.2.patch diff --git a/patches/@deepseek-ai+dsh-workspace+0.1.7-rc.2.patch b/patches/@deepseek-ai+dsh-workspace+0.2.0-rc.2.patch similarity index 100% rename from patches/@deepseek-ai+dsh-workspace+0.1.7-rc.2.patch rename to patches/@deepseek-ai+dsh-workspace+0.2.0-rc.2.patch diff --git a/scripts/ppt-build-cache.d.mts b/scripts/ppt-build-cache.d.mts new file mode 100644 index 000000000..dd8ad8235 --- /dev/null +++ b/scripts/ppt-build-cache.d.mts @@ -0,0 +1,15 @@ +import type { PptPackageStage } from './ppt-package-projection.mjs' + +export const PPT_PACKAGES: readonly string[] +export const PPT_BUILD_INPUTS: readonly string[] + +export interface PptBuildLocation { + outputRoot: string + nodeModulesRoot: string + fingerprint: string +} + +export function fingerprintInputs(root: string, inputs?: readonly string[]): Promise +export function planPptBuild(options: PptBuildLocation): Promise<'full' | 'project' | 'fresh'> +export function recordPptBuild(options: PptBuildLocation): Promise +export function stagedPptPackages(outputRoot: string): PptPackageStage[] diff --git a/scripts/ppt-build-cache.mjs b/scripts/ppt-build-cache.mjs new file mode 100644 index 000000000..fac1e1e58 --- /dev/null +++ b/scripts/ppt-build-cache.mjs @@ -0,0 +1,120 @@ +/** + * Input fingerprint for the PPT runtime build. The pipeline is a pure function + * of these files, so dev/test/build can skip the ~6 s regeneration when none of + * them changed. `npm ci` replaces node_modules/dsh-ppt* with the unbuilt source + * packages, so the installed projection carries its own marker and is re-copied + * from the staged build when the marker is missing or stale. + */ +import crypto from 'node:crypto' +import fs from 'node:fs/promises' +import path from 'node:path' + +export const PPT_PACKAGES = ['dsh-ppt', 'dsh-ppt-composer'] + +/** Every source the pipeline reads, relative to the project root. */ +export const PPT_BUILD_INPUTS = [ + 'packages/ppt-runtime', + 'scripts/ppt', + 'scripts/prepare-ppt-runtime.mjs', + 'scripts/generate-zara-ppt-templates.mjs', + 'scripts/localize-ppt-templates.mjs', + 'scripts/enrich-ppt-templates.mjs', + 'scripts/build-ppt-runtime.mjs', + 'scripts/ppt-package-projection.mjs', + 'scripts/ppt-build-cache.mjs', + // Pins js-yaml, sharp and the runtime's own dependencies. + 'package-lock.json' +] + +const STAMP_FILE = 'build-inputs.json' +const INSTALLED_MARKER = '.dsh-ppt-build-inputs' + +function ignored(name) { + return name === 'node_modules' || name === '.DS_Store' || name.startsWith('._') +} + +async function collectFiles(root, relative, files) { + const absolute = path.join(root, relative) + let stat + try { + stat = await fs.stat(absolute) + } catch (error) { + if (error?.code === 'ENOENT') return + throw error + } + if (stat.isFile()) { + files.push(relative) + return + } + for (const entry of await fs.readdir(absolute, { withFileTypes: true })) { + if (!ignored(entry.name)) await collectFiles(root, path.join(relative, entry.name), files) + } +} + +/** + * Hash the relative path and bytes of every input file in a stable order. + * @param {string} root - project root. + * @param {readonly string[]} inputs - files or directories relative to root. + * @returns {Promise} hex sha256 fingerprint. + */ +export async function fingerprintInputs(root, inputs = PPT_BUILD_INPUTS) { + const files = [] + for (const input of inputs) await collectFiles(root, input, files) + const hash = crypto.createHash('sha256') + for (const file of files.map(file => file.split(path.sep).join('/')).sort()) { + hash.update(file).update('\0') + hash.update(await fs.readFile(path.join(root, file))).update('\0') + } + return hash.digest('hex') +} + +async function readText(file) { + try { + return await fs.readFile(file, 'utf8') + } catch (error) { + if (error?.code === 'ENOENT') return undefined + throw error + } +} + +async function exists(file) { + return (await readText(file)) !== undefined +} + +/** + * Decide how much of the pipeline must run for this fingerprint. + * @param {{ outputRoot: string, nodeModulesRoot: string, fingerprint: string }} options + * @returns {Promise<'full' | 'project' | 'fresh'>} full rebuild, re-projection only, or nothing. + */ +export async function planPptBuild({ outputRoot, nodeModulesRoot, fingerprint }) { + const stamp = await readText(path.join(outputRoot, STAMP_FILE)) + let recorded + try { + recorded = stamp === undefined ? undefined : JSON.parse(stamp).fingerprint + } catch { + recorded = undefined // A torn or hand-edited stamp only costs one rebuild. + } + if (recorded !== fingerprint) return 'full' + if (!await exists(path.join(outputRoot, 'packages', 'build.json'))) return 'full' + for (const name of PPT_PACKAGES) { + if (!await exists(path.join(outputRoot, 'packages', name, 'package.json'))) return 'full' + } + for (const name of PPT_PACKAGES) { + const marker = await readText(path.join(nodeModulesRoot, name, INSTALLED_MARKER)) + if (marker?.trim() !== fingerprint) return 'project' + } + return 'fresh' +} + +/** Record a completed build: the stamp is written last so an interrupted build never looks fresh. */ +export async function recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint }) { + for (const name of PPT_PACKAGES) { + await fs.writeFile(path.join(nodeModulesRoot, name, INSTALLED_MARKER), fingerprint + '\n') + } + await fs.writeFile(path.join(outputRoot, STAMP_FILE), JSON.stringify({ fingerprint }, null, 2) + '\n') +} + +/** Staged package directories for {@link replaceInstalledPackages}. */ +export function stagedPptPackages(outputRoot) { + return PPT_PACKAGES.map(packageName => ({ packageName, source: path.join(outputRoot, 'packages', packageName) })) +} diff --git a/scripts/prepare-ppt-runtime.mjs b/scripts/prepare-ppt-runtime.mjs index 81adcc530..163f51370 100644 --- a/scripts/prepare-ppt-runtime.mjs +++ b/scripts/prepare-ppt-runtime.mjs @@ -2,9 +2,12 @@ import { rm, mkdir } from 'node:fs/promises' import { spawn } from 'node:child_process' import path from 'node:path' +import { fingerprintInputs, planPptBuild, recordPptBuild, stagedPptPackages } from './ppt-build-cache.mjs' +import { replaceInstalledPackages } from './ppt-package-projection.mjs' const outputRoot = path.resolve('.build/ppt-runtime') const templateRoot = path.join(outputRoot, 'templates') +const nodeModulesRoot = path.resolve('node_modules') // npm prepends node_modules/.bin to PATH, which can shadow the real `node` binary // with the `node` npm package. Use npm_node_execpath (set by npm to the actual Node @@ -25,13 +28,28 @@ function run(script) { }) } -await rm(outputRoot, { recursive: true, force: true }) -await mkdir(templateRoot, { recursive: true }) -for (const script of [ - 'scripts/generate-zara-ppt-templates.mjs', - 'scripts/localize-ppt-templates.mjs', - 'scripts/enrich-ppt-templates.mjs', - 'scripts/build-ppt-runtime.mjs' -]) { - await run(script) +const fingerprint = await fingerprintInputs(process.cwd()) +// DSH_PPT_FORCE_BUILD=1 bypasses the cache, e.g. after editing a staged file by hand. +const plan = process.env.DSH_PPT_FORCE_BUILD === '1' + ? 'full' + : await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint }) + +if (plan === 'fresh') { + console.log('PPT runtime is up to date; skipping build (set DSH_PPT_FORCE_BUILD=1 to rebuild).') +} else if (plan === 'project') { + await replaceInstalledPackages(stagedPptPackages(outputRoot)) + await recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint }) + console.log('PPT runtime inputs unchanged; reinstalled the staged packages into node_modules.') +} else { + await rm(outputRoot, { recursive: true, force: true }) + await mkdir(templateRoot, { recursive: true }) + for (const script of [ + 'scripts/generate-zara-ppt-templates.mjs', + 'scripts/localize-ppt-templates.mjs', + 'scripts/enrich-ppt-templates.mjs', + 'scripts/build-ppt-runtime.mjs' + ]) { + await run(script) + } + await recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint }) } diff --git a/src/main/index.ts b/src/main/index.ts index 7bb8487d4..273373cb6 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -57,7 +57,6 @@ import { import { disableProfilePlugin, enableProfilePlugin, - forgetMarketDisable, listDisabledProfilePlugins } from './state/plugin-disable' import { @@ -92,8 +91,7 @@ import { desktopResourceUrl, installDesktopProtocol, registerDesktopScheme, SAFE import { ensureLaunchRoot } from './state/launch-root' import { listInstalledProfilePlugins, - pruneUnresolvableProfileBundles, - resetPluginProfile + pruneUnresolvableProfileBundles } from './state/plugin-recovery' import { ensureSafeModeProfile, SAFE_MODE_PROFILE } from './state/safe-mode-profile' import { migrateLegacyAgentPresets } from './state/legacy-preset-migration' @@ -1180,8 +1178,18 @@ async function showSplash(): Promise { * files, user patch rows or plugin data, and runs while Harness is stopped. */ async function reportProfileConsistency(dshHome: string): Promise { + let pendingRemovals: string[] = [] try { - const healed = await healProfileBundles(dshHome, HOST_COMPOSED_BUNDLES) + pendingRemovals = await listPendingPluginRemovals(dshHome) + } catch (error) { + // An unreadable ledger already blocks normal startup maintenance; healing + // then only has host-composed layers to reconcile. + runtime.note(`[desktop] pending plugin removals unreadable during bundle healing: ${ + error instanceof Error ? error.message : String(error) + }`) + } + try { + const healed = await healProfileBundles(dshHome, HOST_COMPOSED_BUNDLES, pendingRemovals) if (healed.removed.length > 0) { runtime.note(`[desktop] removed duplicate host-composed bundle layer(s): ${healed.removed.join(', ')}; packages and user patches kept`) } @@ -1199,7 +1207,7 @@ async function reportProfileConsistency(dshHome: string): Promise { // Defer heavy recursive inspections of the profiles directory and package store // so they run asynchronously without blocking the startup launch pipeline. void Promise.all([ - inspectProfileConsistency(dshHome, HOST_COMPOSED_BUNDLES), + inspectProfileConsistency(dshHome, HOST_COMPOSED_BUNDLES, pendingRemovals), inspectStoreConsistency(dshHome) ]) .then(([findings, store]) => { @@ -2580,11 +2588,6 @@ async function removeProfilePluginCompletely( for (const failure of result.failures) { runtime.note(`[${logPrefix}] ${pluginName} remains disabled; cleanup pending: ${failure}`) } - if (result.disabled) { - await forgetMarketDisable(dshHome, pluginName).catch((error: unknown) => { - runtime.note(`[${logPrefix}] could not clear the market disable entry for ${pluginName}: ${String(error)}`) - }) - } return result } @@ -3504,17 +3507,6 @@ async function bootstrap(): Promise { void mobileBridge.start().catch(showUnexpectedError) return { ok: true } }) - ipcMain.removeHandler('harness:reset-plugins') - ipcMain.handle('harness:reset-plugins', async (event, pluginName?: unknown) => { - assertTrustedMainWindowEvent(event) - if (pluginName !== undefined && typeof pluginName !== 'string') { - throw new Error('The failing plugin name must be a string.') - } - const dshHome = join(app.getPath('userData'), 'harness') - await resetPluginProfile(dshHome, pluginName) - await launchHarness() - return { ok: runtime.snapshot().phase === 'ready' } - }) installMenu() if (startInSafeMode) { void showSafeMode().catch(showUnexpectedError) diff --git a/src/main/state/plugin-disable.ts b/src/main/state/plugin-disable.ts index 97027474c..cfb721935 100644 --- a/src/main/state/plugin-disable.ts +++ b/src/main/state/plugin-disable.ts @@ -1,6 +1,12 @@ import { mkdir, readFile, rename, writeFile } from 'node:fs/promises' import { dirname, join, resolve } from 'node:path' import { isSeq, parse, parseDocument } from 'yaml' +import { + forgetPlugin, + readMarketState, + removePatchRowOverrides, + setPluginDisabled +} from 'dsh-desktop-market-installer/plugin-state' import { bundleEntryIds } from './patch-layer' import { profileCordisPatchPath, profilePackageJsonPath } from './plugin-recovery' @@ -21,8 +27,6 @@ import { profileCordisPatchPath, profilePackageJsonPath } from './plugin-recover * the caller decides what to do instead. */ -const MARKET_STATE = join('.dsh-market', 'state.json') - /** Row ids the market will write; anything else is refused like the market does. */ const ROW_ID = /^[A-Za-z0-9_.-]+$/ @@ -110,24 +114,9 @@ export function disablePatchRows( return { text: next, changed: next !== text } } -/** Remove exact row override blocks, restoring `[]` when only comments remain. */ -function removePatchRows(text: string, rowIds: readonly string[], disabled: boolean): { text: string; changed: boolean } { - let next = text - for (const rowId of rowIds) { - const block = rowBlockPattern(rowId, disabled) - while (block.test(next)) next = next.replace(block, '') - } - if (next === text) return { text, changed: false } - if (withoutComments(next) === '') { - const revived = next.replace(/^[ \t]*#[ \t]*\[[ \t]*\][ \t]*(?:\r?\n|$)/m, '[]\n') - next = revived !== next ? revived : next === '' || next.endsWith('\n') ? `${next}[]\n` : `${next}\n[]\n` - } - return { text: next, changed: true } -} - /** Drop `disabled: true` rows when a plugin is re-enabled. */ export function enablePatchRows(text: string, rowIds: readonly string[]): { text: string; changed: boolean } { - return removePatchRows(text, rowIds, true) + return removePatchRowOverrides(text, rowIds, true) } /** Row ids the user patch layer switches off, scanned like dsh-market's readUserPatchState. */ @@ -204,25 +193,6 @@ async function writeAtomically(path: string, text: string): Promise { await rename(temporary, path) } -/** - * The market's state.json, with only its disable list interpreted. Every - * other field is the market's and is carried through untouched. An - * unparseable file is an error, never an empty state to overwrite. - */ -async function readMarketState(profileDirectory: string): Promise<{ state: Record; disabled: string[] }> { - const text = await readTextIfPresent(join(profileDirectory, MARKET_STATE)) - if (text === undefined) return { state: {}, disabled: [] } - const state = JSON.parse(text) as unknown - if (state === null || typeof state !== 'object' || Array.isArray(state)) { - throw new Error('market state is not a JSON object') - } - const record = state as Record - // Legacy `disabledSkins` is what the market still reads when `disabled` is absent. - const list = record.disabled !== undefined ? record.disabled : record.disabledSkins - const disabled = Array.isArray(list) ? list.filter((name): name is string => typeof name === 'string') : [] - return { state: record, disabled } -} - export async function readMarketDisabledPackages(dshHome: string): Promise { return (await readMarketState(dirname(profilePackageJsonPath(dshHome)))).disabled } @@ -252,15 +222,6 @@ export async function isProfilePluginDisabledByPatch(dshHome: string, pluginName return inserted.every((id) => disabled.has(id)) } -async function setMarketDisabled(profileDirectory: string, pluginName: string, disabled: boolean): Promise { - const { state, disabled: current } = await readMarketState(profileDirectory) - const next = disabled - ? current.includes(pluginName) ? current : [...current, pluginName] - : current.filter((name) => name !== pluginName) - if (next.length === current.length) return - await writeAtomically(join(profileDirectory, MARKET_STATE), JSON.stringify({ ...state, disabled: next })) -} - function message(error: unknown): string { return error instanceof Error ? error.message : String(error) } @@ -292,7 +253,7 @@ export async function disableProfilePlugin(dshHome: string, pluginName: string): try { originalPatch = await readTextIfPresent(patchPath) if (originalPatch !== undefined && inserted.length > 0) { - const result = removePatchRows(originalPatch, inserted, false) + const result = removePatchRowOverrides(originalPatch, inserted, false) if (result.changed) { await writeAtomically(patchPath, result.text) clearedPatch = result.text @@ -303,7 +264,7 @@ export async function disableProfilePlugin(dshHome: string, pluginName: string): } try { - await setMarketDisabled(profileDirectory, pluginName, true) + await setPluginDisabled(profileDirectory, pluginName, true) } catch (error) { if (clearedPatch !== undefined && originalPatch !== undefined) { try { @@ -331,7 +292,7 @@ export async function enableProfilePlugin( const result = enablePatchRows(layer, inserted) if (result.changed) await writeAtomically(patchPath, result.text) } - await setMarketDisabled(profileDirectory, pluginName, false) + await setPluginDisabled(profileDirectory, pluginName, false) return { ok: true } } catch (error) { return { ok: false, detail: message(error) } @@ -344,7 +305,7 @@ export async function enableProfilePlugin( * Its patch rows are the removal's to prune. */ export async function forgetMarketDisable(dshHome: string, pluginName: string): Promise { - await setMarketDisabled(dirname(profilePackageJsonPath(dshHome)), pluginName, false) + await forgetPlugin(dirname(profilePackageJsonPath(dshHome)), pluginName) } /** diff --git a/src/main/state/plugin-recovery.ts b/src/main/state/plugin-recovery.ts index 51cd03d88..4927dd57f 100644 --- a/src/main/state/plugin-recovery.ts +++ b/src/main/state/plugin-recovery.ts @@ -544,136 +544,6 @@ export async function uninstallPluginFromProfile( } } -export async function resetPluginProfile( - dshHome: string, - failingPlugin?: string, - matchRelatedPackages = true -): Promise { - const manifestPath = profilePackageJsonPath(dshHome) - if (!existsSync(manifestPath)) return false - if (failingPlugin && !isThirdPartyPackageName(failingPlugin)) return false - - try { - const raw = await readFile(manifestPath, 'utf8') - const manifest = JSON.parse(raw) as ProfileManifest - let modified = false - - if (failingPlugin) { - const scope = failingPlugin.startsWith('@') ? failingPlugin.split('/')[0] : undefined - if (manifest.dependencies) { - if (failingPlugin in manifest.dependencies) { - delete manifest.dependencies[failingPlugin] - modified = true - } - for (const dep of Object.keys(manifest.dependencies)) { - if ( - matchRelatedPackages && ( - failingPlugin.includes(dep) || - dep.includes(failingPlugin) || - (scope && dep.startsWith(scope)) - ) - ) { - delete manifest.dependencies[dep] - modified = true - } - } - } - if (manifest.dsh?.profile?.bundles) { - const origLen = manifest.dsh.profile.bundles.length - manifest.dsh.profile.bundles = manifest.dsh.profile.bundles.filter( - (b) => - b !== failingPlugin && - (!matchRelatedPackages || ( - !failingPlugin.includes(b) && - !b.includes(failingPlugin) && - (!scope || !b.startsWith(scope)) - )) - ) - if (manifest.dsh.profile.bundles.length !== origLen) { - modified = true - } - } - } else { - // If no specific plugin given, reset to safe core bundles and clean all third-party dependencies - const safeBundles = ['@deepseek-ai/dsh-base', '@deepseek-ai/dsh-web-app'] - if (manifest.dependencies?.dshmarket) safeBundles.push('dshmarket') - manifest.dsh ??= {} - manifest.dsh.profile ??= {} - manifest.dsh.profile.bundles = safeBundles - modified = true - if (manifest.dependencies) { - for (const dep of Object.keys(manifest.dependencies)) { - if (!CORE_BUNDLES.has(dep)) { - delete manifest.dependencies[dep] - modified = true - } - } - } - } - - if (modified) { - await writeFile(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf8') - } - - // The user patch layer is the user's own work. Removing one plugin takes - // the rows aimed at that plugin and nothing else; only a reset with no - // plugin named — the deliberate "start over" — clears the whole layer. - const patchPath = profileCordisPatchPath(dshHome) - if (existsSync(patchPath)) { - if (failingPlugin) { - const entryIds = await pluginDeclaredEntryIds(dirname(manifestPath), failingPlugin) - const removed = await prunePluginPatchLayer(dshHome, failingPlugin, entryIds) - if (removed.length > 0) modified = true - } else { - const patchContent = await readFile(patchPath, 'utf8') - if (patchContent.trim() !== '[]') { - await writeFile(patchPath, '[]\n', 'utf8') - modified = true - } - } - } - - // Physically clean plugin files from node_modules to guarantee thorough uninstallation - const nodeModulesPath = join(dshHome, 'profiles', 'web', 'node_modules') - if (existsSync(nodeModulesPath)) { - if (failingPlugin) { - const pluginDir = join(nodeModulesPath, failingPlugin) - await removeTree(pluginDir).catch(() => undefined) - if (failingPlugin.startsWith('@')) { - const scope = failingPlugin.split('/')[0] - if (scope) { - const scopeDir = join(nodeModulesPath, scope) - try { - const files = await readdir(scopeDir) - if (files.length === 0) { - await removeTree(scopeDir).catch(() => undefined) - } - } catch { } - } - } - } - } - - const packagesDir = join(dshHome, 'profiles', 'web', 'packages') - if (failingPlugin && existsSync(packagesDir)) { - const packageSourceDir = join(packagesDir, failingPlugin) - if (existsSync(packageSourceDir)) { - await removeTree(packageSourceDir).catch(() => undefined) - } - } - - // Remove stale pnpm-lock.yaml so pnpm regenerates a clean hoisted dependency graph - const lockfilePath = join(dshHome, 'profiles', 'web', 'pnpm-lock.yaml') - if (existsSync(lockfilePath)) { - await rm(lockfilePath, { force: true }).catch(() => undefined) - } - - return modified - } catch { - return false - } -} - /** * Prune unresolvable bundle declarations and report what was removed. * diff --git a/src/main/state/plugin-removal.ts b/src/main/state/plugin-removal.ts index 5c7495aeb..1247a3d0b 100644 --- a/src/main/state/plugin-removal.ts +++ b/src/main/state/plugin-removal.ts @@ -29,6 +29,7 @@ import { } from 'dsh-desktop-market-installer/generations/registry' import { projectGenerations } from 'dsh-desktop-market-installer/generations/projection' import { verifyGenerationPeers } from 'dsh-desktop-market-installer/generations/installer' +import { forgetPlugin, setPluginDisabled } from 'dsh-desktop-market-installer/plugin-state' import { isThirdPartyPackageName, pluginDeclaredEntryIds, @@ -1981,6 +1982,9 @@ export async function removePluginSafely(options: PluginRemovalOptions): Promise generationBackups })) await disableInManifest(options.dshHome, new Set([options.pluginName])) + // The package switch keeps a half-removed plugin off even when launch + // reconciliation re-lists its bundle; it is forgotten once removal commits. + await setPluginDisabled(dirname(profilePackageJsonPath(options.dshHome)), options.pluginName, true) entry = await updateEntry(options.dshHome, entry.removalId, (current) => ({ ...(current ?? entry), status: 'disabled', @@ -2117,6 +2121,15 @@ export async function removePluginSafely(options: PluginRemovalOptions): Promise failures: [detail] } } + // A removed package must not leave its switch behind, or reinstalling it + // later brings it back disabled. The removal itself is already committed. + await forgetPlugin(dirname(profilePackageJsonPath(options.dshHome)), options.pluginName).catch((error: unknown) => { + options.note?.( + `[plugin-removal] could not clear the package switch for ${options.pluginName}: ${ + error instanceof Error ? error.message : String(error) + }` + ) + }) options.note?.( `[plugin-removal] removed ${options.pluginName}; recovery backup ${entry.removalId} kept at ${entry.backupDirectory}` ) diff --git a/src/main/state/profile-consistency.ts b/src/main/state/profile-consistency.ts index 651352af4..b7ab8ed27 100644 --- a/src/main/state/profile-consistency.ts +++ b/src/main/state/profile-consistency.ts @@ -121,7 +121,8 @@ async function undeclaredBundles( */ export async function inspectProfileConsistency( dshHome: string, - hostComposedBundles: readonly string[] = [] + hostComposedBundles: readonly string[] = [], + pendingRemovals: readonly string[] = [] ): Promise { const manifestPath = profilePackageJsonPath(dshHome) const manifest = await readManifest(manifestPath) @@ -142,6 +143,8 @@ export async function inspectProfileConsistency( for (const dependency of dependencies) { if (bundles.includes(dependency) || hostComposedBundles.includes(dependency)) continue + // A removal tombstone keeps its package out of composition on purpose. + if (pendingRemovals.includes(dependency)) continue const { installed, bundle } = await inspectPackage(nodeModulesPath, dependency) if (installed && bundle) { findings.push(`${dependency} is installed and declares a bundle, but is not composed`) @@ -169,12 +172,16 @@ export async function inspectProfileConsistency( * Reconcile bundle declarations before launch. Host-composed bundles remain * installed dependencies, but must not also load through the Profile: the * Desktop patch already mounts these plugins, whose services cannot be - * registered twice. Other installed bundles retain auto-healing. + * registered twice. Other installed bundles retain auto-healing, except + * plugins with a pending removal: re-listing those would undo the tombstone. + * Healing only restores composability; the package switch in + * `.dsh-market/state.json` still decides whether a plugin loads. * This does not edit user patch layers or remove packages or their data. */ export async function healProfileBundles( dshHome: string, - hostComposedBundles: readonly string[] = [] + hostComposedBundles: readonly string[] = [], + pendingRemovals: readonly string[] = [] ): Promise<{ added: string[]; removed: string[] }> { const manifestPath = profilePackageJsonPath(dshHome) let manifestText: string @@ -196,6 +203,7 @@ export async function healProfileBundles( for (const dependency of dependencies) { if (bundleSet.has(dependency) || hostComposedBundles.includes(dependency)) continue + if (pendingRemovals.includes(dependency)) continue const { installed, bundle } = await inspectPackage(nodeModulesPath, dependency) if (installed && bundle) { currentBundles.push(dependency) diff --git a/src/preload/host-paths.ts b/src/preload/host-paths.ts new file mode 100644 index 000000000..fadbf691d --- /dev/null +++ b/src/preload/host-paths.ts @@ -0,0 +1,21 @@ +/** + * The stock composer (`dsh-client-ui-conversation`) looks for + * `globalThis.__DSH_HOST_PATHS__` to tell the Desktop shell from a browser. + * With it, dropped, picked and pasted files and folders that have a real path + * become `@path` references instead of uploads; without it, dropping a folder + * is refused as "desktop app only". Upstream Desktop exposes the same single + * method from its preload (apps/desktop/src/preload-app.ts). + */ +export const HOST_PATHS_BRIDGE = '__DSH_HOST_PATHS__' + +export interface HostPathsBridge { + /** Host path of a File, or '' for in-memory bytes such as pasted images. */ + pathFor: (file: File) => string +} + +/** Build the bridge from Electron's `webUtils.getPathForFile`. */ +export function createHostPathsBridge(getPathForFile: (file: File) => string): HostPathsBridge { + return Object.freeze({ + pathFor: (file: File): string => getPathForFile(file) + }) +} diff --git a/src/preload/index.ts b/src/preload/index.ts index b42a34e7c..ab9bc69ed 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -1,4 +1,4 @@ -import { contextBridge, ipcRenderer } from 'electron' +import { contextBridge, ipcRenderer, webUtils } from 'electron' import type { AvailableRelease, UpdateStatus } from '../shared/contracts' import { setupDesktopStoragePersistence } from './desktop-storage' import { @@ -11,6 +11,7 @@ import { isPluginLoadError } from './plugin-error-view' import { findBootFailureText } from './boot-failure' import { markWindowsTitlebar, mountWindowsTitlebarLayout } from './windows-titlebar' import { mountMacosWindowChrome } from './macos-window-chrome' +import { createHostPathsBridge, HOST_PATHS_BRIDGE } from './host-paths' if (process.platform === 'darwin') { const dispose = mountMacosWindowChrome(document, listener => { @@ -166,6 +167,11 @@ contextBridge.exposeInMainWorld('__DSH_DIRECTORY_PICKER__', { pick: (): Promise => ipcRenderer.invoke('directory-picker:open') }) +contextBridge.exposeInMainWorld( + HOST_PATHS_BRIDGE, + createHostPathsBridge(file => webUtils.getPathForFile(file)) +) + /** * `[data-dsh-*]` lookups are attribute selectors with no index behind them, so * a miss costs a full tree walk. Caching the nodes turns the steady state into diff --git a/test/market-installer.test.js b/test/market-installer.test.js index d11e7e101..0f744e5fb 100644 --- a/test/market-installer.test.js +++ b/test/market-installer.test.js @@ -244,11 +244,16 @@ describe('desktop plugin market installer', () => { DSH_DESKTOP_TEST_DELAY_MS: '80', ELECTRON_RUN_AS_NODE: '1' } + // An isolated home: removals clear the package switch in the Profile. + const profile = join(root, 'profiles', 'web') + await mkdir(join(profile, '.dsh-market'), { recursive: true }) + await writeFile(join(profile, '.dsh-market', 'state.json'), JSON.stringify({ disabled: ['example-plugin', 'kept'] })) const service = createDesktopPnpmService({ binDirectory, dshEntryPath: fakeDshEntry, executablePath: process.execPath, - environment + environment, + home: root }) const handle = service.runPlugin(['remove', 'example-plugin'], root) expect(() => service.runPlugin(['install'], root)).toThrow( @@ -260,6 +265,7 @@ describe('desktop plugin market installer', () => { stdout += chunk.toString('utf8') }) await expect(handle.done).resolves.toEqual({ exitCode: 0, signal: null }) + expect(JSON.parse(await readFile(join(profile, '.dsh-market', 'state.json'), 'utf8'))).toEqual({ disabled: ['kept'] }) const invocation = JSON.parse(stdout) expect(invocation.args).toEqual([ 'plugin', @@ -302,6 +308,8 @@ describe('desktop plugin market installer', () => { name: 'dsh-profile-web', private: true, dependencies: { dshmarket: '1.31.1' }, dsh: { profile: { bundles: ['@deepseek-ai/dsh-base', 'dshmarket'] } } })) + await mkdir(join(profile, '.dsh-market'), { recursive: true }) + await writeFile(join(profile, '.dsh-market', 'state.json'), JSON.stringify({ disabled: ['ming-life'] })) const service = createDesktopPnpmService({ binDirectory: join(home, '.desktop-bin'), dshEntryPath: join(home, 'unused-dsh-entry.mjs'), @@ -314,6 +322,7 @@ describe('desktop plugin market installer', () => { handle.stdout.on('data', chunk => { output += chunk.toString('utf8') }) await expect(handle.done).resolves.toEqual({ exitCode: 0, signal: null }) expect(output).toContain('already absent from the next restart: ming-life') + expect(JSON.parse(await readFile(join(profile, '.dsh-market', 'state.json'), 'utf8'))).toEqual({ disabled: [] }) await service.dispose() }) diff --git a/test/model-selection-search-patch.test.ts b/test/model-selection-search-patch.test.ts deleted file mode 100644 index a1a10ec8f..000000000 --- a/test/model-selection-search-patch.test.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { readFile } from 'node:fs/promises' -import path from 'node:path' -import { describe, expect, it } from 'vitest' -import { patchPath, projectRoot } from './patch-path' - -const modelSelectionClient = path.join( - projectRoot, - 'node_modules', - '@deepseek-ai', - 'dsh-client-ui-model-selection', - 'lib', - 'client.js' -) - -interface ModelRow { - id: string - name: string - description?: string -} - -interface ModelGroup { - id: string - name: string - models: ModelRow[] -} - -async function loadFilter(): Promise< - (groups: ModelGroup[], query: string) => ModelGroup[] -> { - const client = await readFile(modelSelectionClient, 'utf8') - const source = client.match( - /function filterModelGroups\(groups, query\) \{[\s\S]*?\n\t\t\}/ - )?.[0] - - expect(source).toBeDefined() - return Function(`${source}; return filterModelGroups`)() as ( - groups: ModelGroup[], - query: string - ) => ModelGroup[] -} - -describe('composer model search', () => { - const groups: ModelGroup[] = [ - { - id: 'tokenrouter', - name: 'Token Router', - models: [ - { id: 'openai/gpt-5.6-luna', name: 'GPT-5.6 Luna' }, - { id: 'qwen/qwen3.7-max', name: 'Qwen 3.7 Max' } - ] - }, - { - id: 'deepseek', - name: 'DeepSeek', - models: [{ id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' }] - } - ] - - it('filters model names and ids without losing provider grouping', async () => { - const filter = await loadFilter() - - expect(filter(groups, 'luna')).toEqual([ - { ...groups[0]!, models: [groups[0]!.models[0]!] } - ]) - expect(filter(groups, 'deepseek-v4')).toEqual([groups[1]!]) - expect(filter(groups, 'missing')).toEqual([]) - }) - - it('matches a provider by display name or id and keeps all its models', async () => { - const filter = await loadFilter() - - expect(filter(groups, 'token router')).toEqual([groups[0]!]) - expect(filter(groups, 'DEEPSEEK')).toEqual([groups[1]!]) - }) - - it('renders an accessible localized search field and empty state', async () => { - const client = await readFile(modelSelectionClient, 'utf8') - - expect(client).toContain('type: "search"') - expect(client).toContain('role: "searchbox"') - expect(client).toContain('search.placeholder": "搜索模型或服务商"') - expect(client).toContain('empty.search": "没有找到匹配的模型。"') - expect(client).toContain('search.placeholder": "Search models or providers"') - expect(client).toContain('empty.search": "No matching models."') - }) - - it('captures the search behavior in the reproducible dependency patch', async () => { - const patch = await readFile( - patchPath('@deepseek-ai/dsh-client-ui-model-selection'), - 'utf8' - ) - - expect(patch).toContain('function filterModelGroups(groups, query)') - expect(patch).toContain('IconSearchOutlineRegular') - expect(patch).toContain('children: filteredGroups.map((group)') - }) -}) diff --git a/test/plugin-manager-generation-backend.test.js b/test/plugin-manager-generation-backend.test.js index f7a4ded37..394b6f741 100644 --- a/test/plugin-manager-generation-backend.test.js +++ b/test/plugin-manager-generation-backend.test.js @@ -1,9 +1,11 @@ -import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises' +import { lstat, mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' import { createGenerationPackageBackend } from '../packages/dsh-desktop-market-installer/generations/package-backend.mjs' +import { projectGenerations } from '../packages/dsh-desktop-market-installer/generations/projection.mjs' import { readDesired } from '../packages/dsh-desktop-market-installer/generations/registry.mjs' +import { readDisabledPlugins } from '../packages/dsh-desktop-market-installer/plugin-state.mjs' const homes = [] @@ -159,4 +161,84 @@ describe('Plugin Manager generation package backend', () => { expect(removed.packageResult.exitCode).toBe(0) expect(await readDesired(home)).toEqual([]) }) + + it('leaves a package pnpm owns to Plugin Manager instead of failing its removal', async () => { + const home = await freshHome() + const backend = createGenerationPackageBackend({ + dshHome: home, + nodeExecutablePath: process.execPath, + pnpmEntryPath: 'unused' + }) + expect(await backend.remove({ name: 'legacy-plugin', signal: new AbortController().signal })).toBeUndefined() + expect(await backend.remove({ name: 'dshmarket', signal: new AbortController().signal })).toBeUndefined() + }) + + it('declines the shared-tree market before staging a generation', async () => { + const home = await freshHome() + let staged = false + const backend = createGenerationPackageBackend({ + dshHome: home, + nodeExecutablePath: process.execPath, + pnpmEntryPath: 'unused', + runInstall: async () => { staged = true; return { code: 1, output: '' } } + }) + expect(await backend.install({ + spec: 'dshmarket@1.48.0', kind: 'registry', signal: new AbortController().signal + })).toBeUndefined() + expect(staged).toBe(false) + expect(await readDesired(home)).toEqual([]) + }) + + it('defers replacing a Profile-owned directory to launch projection', async () => { + const home = await freshHome() + const profile = join(home, 'profiles', 'web') + const legacy = join(profile, 'node_modules', 'demo-plugin') + await mkdir(legacy, { recursive: true }) + await writeFile(join(legacy, 'package.json'), JSON.stringify({ + name: 'demo-plugin', version: '0.9.0', dsh: { bundle: { patch: 'cordis.patch.yml' } } + })) + const backend = createGenerationPackageBackend({ + dshHome: home, + nodeExecutablePath: process.execPath, + pnpmEntryPath: 'unused', + runInstall: installer('demo-plugin', '1.0.0') + }) + const installed = await backend.install({ + spec: 'demo-plugin@1.0.0', kind: 'registry', expectedName: 'demo-plugin', signal: new AbortController().signal + }) + expect(installed.packageResult.exitCode).toBe(0) + expect(installed.replaced).toBe(true) + installed.commit?.() + // The running copy stays in place until Harness stops. + expect((await lstat(legacy)).isSymbolicLink()).toBe(false) + expect((await readDesired(home)).length).toBe(1) + + await projectGenerations(home) + expect((await lstat(legacy)).isSymbolicLink()).toBe(true) + const manifest = JSON.parse(await readFile(join(profile, 'package.json'), 'utf8')) + expect(manifest.dependencies['demo-plugin']).toBe('1.0.0') + expect(manifest.dsh.profile.bundles).toContain('demo-plugin') + }) + + it('records enable switches and forgets them after removal', async () => { + const home = await freshHome() + const profile = join(home, 'profiles', 'web') + await writeFile(join(profile, 'cordis.patch.yml'), '- id: demo-row\n disabled: false\n- id: other-row\n disabled: false\n') + const backend = createGenerationPackageBackend({ + dshHome: home, + nodeExecutablePath: process.execPath, + pnpmEntryPath: 'unused' + }) + await backend.switched({ name: 'demo-plugin', enabled: false, rowIds: ['demo-row'] }) + expect(await readDisabledPlugins(profile)).toEqual(['demo-plugin']) + // Only the package's own force-enable override goes; another plugin's stays. + expect(await readFile(join(profile, 'cordis.patch.yml'), 'utf8')).toBe('- id: other-row\n disabled: false\n') + + await backend.switched({ name: 'demo-plugin', enabled: true, rowIds: ['demo-row'] }) + expect(await readDisabledPlugins(profile)).toEqual([]) + + await backend.switched({ name: 'demo-plugin', enabled: false, rowIds: [] }) + await backend.removed({ name: 'demo-plugin' }) + expect(await readDisabledPlugins(profile)).toEqual([]) + }) }) diff --git a/test/plugin-manager-switch.test.mjs b/test/plugin-manager-switch.test.mjs new file mode 100644 index 000000000..833da1f41 --- /dev/null +++ b/test/plugin-manager-switch.test.mjs @@ -0,0 +1,85 @@ +import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join, resolve } from 'node:path' +import { afterEach, describe, expect, it } from 'vitest' +import { PluginManager } from '@deepseek-ai/dsh-plugin-manager' +import { createGenerationPackageBackend } from '../packages/dsh-desktop-market-installer/generations/package-backend.mjs' +import { readDisabledPlugins } from '../packages/dsh-desktop-market-installer/plugin-state.mjs' + +const roots = [] +afterEach(async () => { await Promise.all(roots.splice(0).map(root => rm(root, { recursive: true, force: true }))) }) + +/** A web Profile with one installed community bundle, as launch projection leaves it. */ +async function profileWithBundle() { + const home = await mkdtemp(join(tmpdir(), 'dsh-manager-switch-')) + roots.push(home) + const dir = join(home, 'profiles', 'web') + const plugin = join(dir, 'node_modules', 'demo-plugin') + await mkdir(plugin, { recursive: true }) + await writeFile(join(plugin, 'package.json'), JSON.stringify({ + name: 'demo-plugin', version: '1.0.0', dsh: { bundle: { patch: 'cordis.patch.yml' } } + })) + await writeFile(join(plugin, 'cordis.patch.yml'), '- insert:\n - id: demo-row\n name: demo-plugin\n') + await writeFile(join(dir, 'package.json'), JSON.stringify({ + dependencies: { 'demo-plugin': '1.0.0' }, + dsh: { profile: { bundles: ['demo-plugin'] } } + })) + return { home, dir } +} + +/** Only the manager state the exercised methods read; the rest of Harness is not needed. */ +function managerFor(home, dir) { + const backend = createGenerationPackageBackend({ + dshHome: home, + nodeExecutablePath: process.execPath, + pnpmEntryPath: 'unused' + }) + const services = new Map([['profileBundlePackageBackend', backend]]) + return { + profile: { dir, name: 'web', installAnchor: resolve('node_modules/@deepseek-ai/dsh/package.json') }, + ownerContext: { get: name => services.get(name) }, + managementBundles: new Set(), + protectsManager: () => false, + declaredRows: () => ({ rows: [], overrides: [] }), + bundleRows: () => [{ id: 'demo-row', name: 'demo-plugin' }] + } +} + +describe('Plugin Manager package switch', () => { + it('lists a bundle the market switched off as disabled although it stays composable', async () => { + const { home, dir } = await profileWithBundle() + const manager = managerFor(home, dir) + const listed = async () => (await PluginManager.prototype.listBundles.call(manager)) + .find(bundle => bundle.name === 'demo-plugin') + + expect(await listed()).toMatchObject({ enabled: true, installed: true }) + await mkdir(join(dir, '.dsh-market'), { recursive: true }) + await writeFile(join(dir, '.dsh-market', 'state.json'), JSON.stringify({ disabled: ['demo-plugin'], groups: [] })) + expect(await listed()).toMatchObject({ enabled: false, installed: true }) + }) + + it('persists its own toggle where launch reconciliation cannot revert it', async () => { + const { home, dir } = await profileWithBundle() + await writeFile(join(dir, 'cordis.patch.yml'), '- id: demo-row\n disabled: false\n') + const manager = managerFor(home, dir) + + await PluginManager.prototype.recordBundleSwitch.call(manager, 'demo-plugin', false) + expect(await readDisabledPlugins(dir)).toEqual(['demo-plugin']) + // The user's force-enable for the package's own row would contradict the switch. + expect(await readFile(join(dir, 'cordis.patch.yml'), 'utf8')).toBe('[]\n') + + await PluginManager.prototype.recordBundleSwitch.call(manager, 'demo-plugin', true) + expect(await readDisabledPlugins(dir)).toEqual([]) + const state = JSON.parse(await readFile(join(dir, '.dsh-market', 'state.json'), 'utf8')) + expect(state).toEqual({ disabled: [] }) + }) + + it('keeps market-owned fields when recording a switch', async () => { + const { home, dir } = await profileWithBundle() + await mkdir(join(dir, '.dsh-market'), { recursive: true }) + await writeFile(join(dir, '.dsh-market', 'state.json'), JSON.stringify({ disabled: [], groups: [{ id: 'g' }] })) + await PluginManager.prototype.recordBundleSwitch.call(managerFor(home, dir), 'demo-plugin', false) + expect(JSON.parse(await readFile(join(dir, '.dsh-market', 'state.json'), 'utf8'))) + .toEqual({ disabled: ['demo-plugin'], groups: [{ id: 'g' }] }) + }) +}) diff --git a/test/plugin-recovery.test.ts b/test/plugin-recovery.test.ts index 47f452ac1..9df4b0a93 100644 --- a/test/plugin-recovery.test.ts +++ b/test/plugin-recovery.test.ts @@ -10,7 +10,6 @@ import { profilePackageJsonPath, pruneMissingProfileBundles, pruneUnresolvableProfileBundles, - resetPluginProfile, resolveProfileRecoveryPlugins, uninstallPluginFromProfile } from '../src/main/state/plugin-recovery' @@ -404,88 +403,6 @@ describe('plugin-recovery', () => { ).resolves.toBe(false) }) - it('resets plugin profile by cleaning up specific failing plugin and related packages', async () => { - const pkgPath = profilePackageJsonPath(testDir) - const originalPkg = { - name: 'dsh-profile-web', - dependencies: { - '@linxin666/dsh-web-ui-all': '^0.2.2', - dshmarket: '1.9.0' - }, - dsh: { - profile: { - bundles: [ - '@deepseek-ai/dsh-base', - '@deepseek-ai/dsh-web-app', - 'dshmarket', - '@linxin666/dsh-web-ui-all' - ] - } - } - } - await writeFile(pkgPath, JSON.stringify(originalPkg, null, 2)) - - const success = await resetPluginProfile(testDir, '@linxin666/dsh-client-ui-web-ui-settings') - expect(success).toBe(true) - - const updatedPkg = JSON.parse(await readFile(pkgPath, 'utf8')) - expect(updatedPkg.dependencies).toEqual({ - dshmarket: '1.9.0' - }) - expect(updatedPkg.dsh.profile.bundles).toEqual([ - '@deepseek-ai/dsh-base', - '@deepseek-ai/dsh-web-app', - 'dshmarket' - ]) - }) - - it('removes workspace packages and stale lockfile when resetting a plugin', async () => { - const pkgPath = profilePackageJsonPath(testDir) - const profileDir = join(testDir, 'profiles', 'web') - const workspacePkgDir = join(profileDir, 'packages', 'dsh-doudizhu') - const nodeModulesPkgDir = join(profileDir, 'node_modules', 'dsh-doudizhu') - const lockfilePath = join(profileDir, 'pnpm-lock.yaml') - - await mkdir(workspacePkgDir, { recursive: true }) - await mkdir(nodeModulesPkgDir, { recursive: true }) - await writeFile(join(workspacePkgDir, 'package.json'), '{"name":"dsh-doudizhu"}') - await writeFile(join(nodeModulesPkgDir, 'package.json'), '{"name":"dsh-doudizhu"}') - await writeFile(lockfilePath, 'lockfileVersion: 9.0') - await writeFile( - pkgPath, - JSON.stringify({ - dependencies: { 'dsh-doudizhu': 'workspace:^' }, - dsh: { profile: { bundles: ['@deepseek-ai/dsh-base', 'dsh-doudizhu'] } } - }) - ) - - const success = await resetPluginProfile(testDir, 'dsh-doudizhu') - expect(success).toBe(true) - expect(existsSync(workspacePkgDir)).toBe(false) - expect(existsSync(nodeModulesPkgDir)).toBe(false) - expect(existsSync(lockfilePath)).toBe(false) - }) - - it('can remove one exact scoped plugin without touching an unselected sibling', async () => { - const pkgPath = profilePackageJsonPath(testDir) - await writeFile( - pkgPath, - JSON.stringify({ - dependencies: { - '@example/plugin-a': '1.0.0', - '@example/plugin-b': '1.0.0' - }, - dsh: { profile: { bundles: ['@example/plugin-a', '@example/plugin-b'] } } - }) - ) - - const success = await resetPluginProfile(testDir, '@example/plugin-a', false) - expect(success).toBe(true) - const manifest = JSON.parse(await readFile(pkgPath, 'utf8')) - expect(manifest.dependencies).toEqual({ '@example/plugin-b': '1.0.0' }) - expect(manifest.dsh.profile.bundles).toEqual(['@example/plugin-b']) - }) - it('resolves root package when a scoped sub-module fails', async () => { const pkgPath = profilePackageJsonPath(testDir) const rootPackageDir = join( diff --git a/test/plugin-removal.test.ts b/test/plugin-removal.test.ts index 04d8e931f..f90b31896 100644 --- a/test/plugin-removal.test.ts +++ b/test/plugin-removal.test.ts @@ -43,6 +43,7 @@ import { writeGenerationMeta } from '../packages/dsh-desktop-market-installer/generations/registry' import { projectGenerations } from '../packages/dsh-desktop-market-installer/generations/projection' +import { readDisabledPlugins } from '../packages/dsh-desktop-market-installer/plugin-state' import { prepareGenerationsForLaunch } from '../src/main/state/generation-launch' import type { PluginComponentRestoreOptions } from '../src/main/state/plugin-component-cleanup' import { @@ -317,6 +318,8 @@ describe('durable plugin removal', () => { expect(existsSync(join(profileDirectory, 'node_modules', 'plugin-one'))).toBe(true) expect(existsSync(join(result.backupDirectory as string, 'package.json'))).toBe(true) expect(await listPendingPluginRemovals(dshHome)).toEqual(['plugin-one']) + // Launch reconciliation may re-list the bundle; the package switch keeps it off. + expect(await readDisabledPlugins(profileDirectory)).toEqual(['plugin-one']) expect(await shouldDeferProfileMaintenance(dshHome)).toBe(true) await confirmPluginRemovalsBooted(dshHome) expect(await shouldDeferProfileMaintenance(dshHome)).toBe(true) @@ -329,6 +332,7 @@ describe('durable plugin removal', () => { now: () => new Date('2026-08-29T12:06:00.000Z') }) expect(retried).toMatchObject({ disabled: true, removed: true, pending: false }) + expect(await readDisabledPlugins(profileDirectory)).toEqual([]) const originalBackup = JSON.parse( await readFile(join(result.backupDirectory as string, 'package.json'), 'utf8') ) diff --git a/test/ppt-build-cache.test.ts b/test/ppt-build-cache.test.ts new file mode 100644 index 000000000..1052ed59b --- /dev/null +++ b/test/ppt-build-cache.test.ts @@ -0,0 +1,114 @@ +import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import path from 'node:path' +import { afterEach, beforeEach, describe, expect, it } from 'vitest' +import { + fingerprintInputs, + planPptBuild, + PPT_PACKAGES, + recordPptBuild +} from '../scripts/ppt-build-cache.mjs' + +let root: string +let outputRoot: string +let nodeModulesRoot: string + +async function write(file: string, contents: string): Promise { + await mkdir(path.dirname(file), { recursive: true }) + await writeFile(file, contents) +} + +async function stageCompletedBuild(): Promise { + await write(path.join(outputRoot, 'packages', 'build.json'), '{}') + for (const name of PPT_PACKAGES) { + await write(path.join(outputRoot, 'packages', name, 'package.json'), '{}') + await mkdir(path.join(nodeModulesRoot, name), { recursive: true }) + } +} + +beforeEach(async () => { + root = await mkdtemp(path.join(tmpdir(), 'dsh-ppt-cache-')) + outputRoot = path.join(root, '.build', 'ppt-runtime') + nodeModulesRoot = path.join(root, 'node_modules') + await write(path.join(root, 'src', 'a.txt'), 'a') + await write(path.join(root, 'src', 'nested', 'b.txt'), 'b') +}) + +afterEach(async () => { + await rm(root, { recursive: true, force: true }) +}) + +describe('PPT build input fingerprint', () => { + it('is stable and changes when a file changes, is added, or is renamed', async () => { + const first = await fingerprintInputs(root, ['src']) + expect(await fingerprintInputs(root, ['src'])).toBe(first) + + await writeFile(path.join(root, 'src', 'a.txt'), 'changed') + const edited = await fingerprintInputs(root, ['src']) + expect(edited).not.toBe(first) + + await write(path.join(root, 'src', 'c.txt'), '') + const added = await fingerprintInputs(root, ['src']) + expect(added).not.toBe(edited) + + await rm(path.join(root, 'src', 'c.txt')) + await write(path.join(root, 'src', 'd.txt'), '') + expect(await fingerprintInputs(root, ['src'])).not.toBe(added) + }) + + it('ignores nested node_modules and macOS metadata files', async () => { + const before = await fingerprintInputs(root, ['src']) + await write(path.join(root, 'src', 'node_modules', 'dep', 'index.js'), 'x') + await write(path.join(root, 'src', '.DS_Store'), 'x') + await write(path.join(root, 'src', '._a.txt'), 'x') + expect(await fingerprintInputs(root, ['src'])).toBe(before) + }) + + it('treats a missing input as absent rather than failing', async () => { + expect(await fingerprintInputs(root, ['src', 'missing'])).toBe(await fingerprintInputs(root, ['src'])) + }) +}) + +describe('PPT build plan', () => { + it('builds fully without a recorded stamp', async () => { + await stageCompletedBuild() + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' })).toBe('full') + }) + + it('skips a recorded build whose installed packages carry the same fingerprint', async () => { + await stageCompletedBuild() + await recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' }) + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' })).toBe('fresh') + }) + + it('rebuilds when the inputs changed', async () => { + await stageCompletedBuild() + await recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' }) + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f2' })).toBe('full') + }) + + it('only reprojects after npm replaced the installed packages', async () => { + await stageCompletedBuild() + await recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' }) + await rm(path.join(nodeModulesRoot, 'dsh-ppt-composer'), { recursive: true }) + await mkdir(path.join(nodeModulesRoot, 'dsh-ppt-composer')) + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' })).toBe('project') + }) + + it('rebuilds when a staged package or the build manifest is missing', async () => { + await stageCompletedBuild() + await recordPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' }) + await rm(path.join(outputRoot, 'packages', 'dsh-ppt'), { recursive: true }) + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' })).toBe('full') + + await stageCompletedBuild() + await rm(path.join(outputRoot, 'packages', 'build.json')) + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' })).toBe('full') + }) + + it('rebuilds instead of failing on a corrupt stamp', async () => { + await stageCompletedBuild() + await write(path.join(outputRoot, 'build-inputs.json'), '{not json') + expect(await planPptBuild({ outputRoot, nodeModulesRoot, fingerprint: 'f1' })).toBe('full') + }) +}) diff --git a/test/ppt-integration.test.ts b/test/ppt-integration.test.ts index 4dbea7169..21592337a 100644 --- a/test/ppt-integration.test.ts +++ b/test/ppt-integration.test.ts @@ -59,8 +59,8 @@ describe('DSH PPT built-in plugin', () => { } }) - it('ships Harness 0.1.7-compatible peer ranges in both generated packages', async () => { - const expected = '^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2' + it('ships Harness 0.2.0-compatible peer ranges in both generated packages', async () => { + const expected = '^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1' const core = JSON.parse((await artifact('core')).get('package/package.json')!.toString('utf8')) const adapter = JSON.parse((await artifact('adapter')).get('package/package.json')!.toString('utf8')) expect(core.peerDependencies['@deepseek-ai/cordis']).toBe('~4.0.4') diff --git a/test/preload-host-paths.test.ts b/test/preload-host-paths.test.ts new file mode 100644 index 000000000..c762f7846 --- /dev/null +++ b/test/preload-host-paths.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, it } from 'vitest' +import { createHostPathsBridge, HOST_PATHS_BRIDGE } from '../src/preload/host-paths' + +describe('preload host paths bridge', () => { + it('uses the global name the stock composer reads', () => { + expect(HOST_PATHS_BRIDGE).toBe('__DSH_HOST_PATHS__') + }) + + it('answers the host path of a dropped file or folder', () => { + const folder = new File([], 'project') + const seen: File[] = [] + const bridge = createHostPathsBridge(file => { + seen.push(file) + return '/Users/me/project' + }) + + expect(bridge.pathFor(folder)).toBe('/Users/me/project') + expect(seen).toEqual([folder]) + }) + + it('passes through an empty path so pasted bytes keep uploading', () => { + const bridge = createHostPathsBridge(() => '') + + expect(bridge.pathFor(new File(['x'], 'image.png'))).toBe('') + }) + + it('exposes only the single frozen method', () => { + const bridge = createHostPathsBridge(() => '') + + expect(Object.keys(bridge)).toEqual(['pathFor']) + expect(Object.isFrozen(bridge)).toBe(true) + }) +}) diff --git a/test/profile-consistency.test.ts b/test/profile-consistency.test.ts index c0030de7c..c8e2dc789 100644 --- a/test/profile-consistency.test.ts +++ b/test/profile-consistency.test.ts @@ -149,6 +149,23 @@ describe('profile consistency', () => { ]) }) + it('does not re-compose a plugin whose removal is still pending', async () => { + const { home, modules } = await profileHome({ + dependencies: { 'dsh-better-sidebar': '^1.0.0', 'dsh-dream-skin': '^1.0.0' }, + dsh: { profile: { bundles: ['@deepseek-ai/dsh-base'] } } + }) + await install(modules, 'dsh-better-sidebar', true) + await install(modules, 'dsh-dream-skin', true) + + await expect(healProfileBundles(home, [], ['dsh-dream-skin'])).resolves.toEqual({ + added: ['dsh-better-sidebar'], + removed: [] + }) + await expect(inspectProfileConsistency(home, [], ['dsh-dream-skin'])).resolves.toEqual([]) + const manifest = JSON.parse(await readFile(join(home, 'profiles', 'web', 'package.json'), 'utf8')) + expect(manifest.dsh.profile.bundles).toEqual(['@deepseek-ai/dsh-base', 'dsh-better-sidebar']) + }) + it.each([ [], ['dsh-ppt'], diff --git a/test/release.test.ts b/test/release.test.ts index fc5428586..dac54067c 100644 --- a/test/release.test.ts +++ b/test/release.test.ts @@ -13,7 +13,7 @@ const releaseAssets = [ ] /** The exact Harness build every `@deepseek-ai/dsh-*` production dep is pinned to. */ -const HARNESS_VERSION = '0.1.7-rc.2' +const HARNESS_VERSION = '0.2.0-rc.2' describe('GitHub release contract', () => { it('keeps the package and lockfile versions aligned', async () => { diff --git a/test/session-delete-patch.test.ts b/test/session-delete-patch.test.ts index b0be778a8..73684861d 100644 --- a/test/session-delete-patch.test.ts +++ b/test/session-delete-patch.test.ts @@ -12,43 +12,43 @@ const projectRoot = path.resolve(import.meta.dirname, '..') const patchedPackages = [ { name: 'dsh-session-persistence', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/index.js', markers: ['does not support deletion', 'delete(_id, _options)', 'Permanently remove one stored Session identity'] }, { name: 'dsh-session-persistence-jsonl', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/index.js', markers: ['async delete(id, options)', 'this.tracker.claimWrite(id)', 'this.coldLogMemo.delete(id)'] }, { name: 'dsh-workspace', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/index.js', markers: ['forgetSession(sessionId)', 'archivedSessionIds: state.archivedSessionIds.filter'] }, { name: 'dsh-api-session-controller', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/index.js', markers: ['disposeOwned(sessionId)', 'await persistence.delete(request.sessionId)', 'workspaceRegistry.forgetSession(request.sessionId)'] }, { name: 'dsh-api-session-controller', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/client.js', markers: ['SessionDeleteError', 'this.remote.session.delete({ sessionId })', 'uiWorkspace, which releases its main view before calling this method'] }, { name: 'dsh-api-session-controller', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/typert.host.js', markers: ["id: '@deepseek-ai/dsh-api-session-controller#session/delete'", "method: 'delete'"] }, { name: 'dsh-client-ui-workspace', - version: '0.1.7-rc.2', + version: '0.2.0-rc.2', file: 'lib/client.js', markers: ['async deleteSession(sessionId)', 'this.clearMain()', 'const retention = this.sessions.retainInfo(sessionId)', 'timer = setTimeout(finish, 250)', 'await this.sessions.delete(sessionId)'] } diff --git a/test/workbench-client.test.mjs b/test/workbench-client.test.mjs index 654560f8b..4cc383fa1 100644 --- a/test/workbench-client.test.mjs +++ b/test/workbench-client.test.mjs @@ -20,8 +20,16 @@ const sessionStorage = { removeItem: key => sessionValues.delete(key), clear: () => sessionValues.clear() } +// The Workbench feature is off by default; these behavior tests run as a user +// who switched it on. The default itself is covered by its own test. +const WORKBENCH_ENABLED = 'dsh-workbench-enabled' +const enabledStorage = { + getItem: key => key === WORKBENCH_ENABLED ? 'true' : null, + setItem: () => {}, + removeItem: () => {} +} const clientWindow = { sessionStorage, localStorage: { - getItem: key => sessionValues.has(key) ? sessionValues.get(key) : null, + getItem: key => sessionValues.has(key) ? sessionValues.get(key) : key === WORKBENCH_ENABLED ? 'true' : null, setItem: (key, value) => sessionValues.set(key, String(value)), removeItem: key => sessionValues.delete(key) }, __ModuleLoader__: { load({ factory }) { @@ -61,7 +69,7 @@ function marketCard(service, tab = 'market') { useLayoutEffect: () => {}, useSyncExternalStore: (_subscribe, getSnapshot) => getSnapshot() } - vm.runInNewContext(code, { window: { sessionStorage, __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { window: { sessionStorage, localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { renderMarket = factory(name => name === 'react' ? testReact : name === '@deepseek-ai/cordis' ? { Service } : { Switch: () => null }).Market } } }, document, setTimeout, clearTimeout, AbortController }) const tree = renderMarket({ service }) @@ -101,7 +109,7 @@ function interactiveMarket(service, tab = 'market') { useLayoutEffect: () => {}, useSyncExternalStore: (_subscribe, getSnapshot) => getSnapshot() } - vm.runInNewContext(code, { window: { sessionStorage, __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { window: { sessionStorage, localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { renderMarket = factory(name => name === 'react' ? testReact : name === '@deepseek-ai/cordis' ? { Service } : { Switch: () => null }).Market } } }, document, setTimeout, clearTimeout, AbortController }) const find = (node, predicate) => { @@ -705,7 +713,7 @@ describe('desktop workbench client navigation', () => { head: { appendChild: style => styles.push(style) } } let applyLocal - vm.runInNewContext(code, { window: { sessionStorage, __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { window: { sessionStorage, localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { applyLocal = factory(name => name === 'react' ? { createElement() {}, Component: class {} } : name === '@deepseek-ai/cordis' ? { Service } : { Switch: () => null }).apply } } }, document: testDocument, setTimeout, clearTimeout, AbortController }) let styleEffect @@ -724,7 +732,7 @@ describe('desktop workbench client navigation', () => { const { JSDOM } = await import('jsdom') const dom = new JSDOM('') let applyLocal - vm.runInNewContext(code, { window: { __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { applyLocal = factory(name => name === 'react' ? { createElement() {}, Component: class {} } : name === '@deepseek-ai/cordis' ? { Service } : { Switch: () => null }).apply } } }, document: dom.window.document, MutationObserver: dom.window.MutationObserver, setTimeout, clearTimeout, AbortController }) let styleEffect @@ -976,7 +984,7 @@ describe('desktop workbench client navigation', () => { useCallback: callback => callback, useState: initial => [typeof initial === 'function' ? initial() : initial, () => {}] } - vm.runInNewContext(code, { document: { createElement: () => ({ style: {} }) }, window: { __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { document: { createElement: () => ({ style: {} }) }, window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { Frame = factory((name) => name === 'react-dom' ? { createPortal: (node) => ({ children: [node] }) } : name === '@deepseek-ai/cordis' ? { Service } : react).Frame } } } }) const { service, ctx, list } = await fixture() @@ -1017,7 +1025,7 @@ describe('desktop workbench client navigation', () => { useCallback: callback => callback, useState: initial => [typeof initial === 'function' ? initial() : initial, () => {}] } - vm.runInNewContext(code, { document: { createElement: () => ({ style: {} }) }, window: { __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { document: { createElement: () => ({ style: {} }) }, window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { Frame = factory((name) => name === 'react-dom' ? { createPortal: (node) => ({ children: [node] }) } : name === '@deepseek-ai/cordis' ? { Service } : react).Frame } } } }) const initial = emptyState() @@ -1155,7 +1163,7 @@ describe('desktop workbench client navigation', () => { let root try { let Frame - vm.runInNewContext(code, { document: dom.window.document, window: { __ModuleLoader__: { load({ factory }) { + vm.runInNewContext(code, { document: dom.window.document, window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { Frame = factory(name => name === 'react-dom' ? ReactDOM : name === '@deepseek-ai/cordis' ? { Service } : React).Frame } } } }) const { service, ctx } = await fixture(boundState()) @@ -1229,7 +1237,7 @@ describe('desktop workbench client navigation', () => { ${code} `, { fetchReply: reply, - window: { __ModuleLoader__: { load({ factory }) { + window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { BrowserWorkbenches = factory(name => name === '@deepseek-ai/cordis' ? { Service } : { createElement() {}, Component: class {} }).Workbenches } } } }) @@ -1262,7 +1270,7 @@ describe('desktop workbench client navigation', () => { return getSnapshot() } } - vm.runInNewContext(code, { document: { createElement: () => ({ style: {} }) }, window: { __ModuleLoader__: { load({ factory }) { Frame = factory((name) => name === 'react-dom' ? { createPortal: (node) => ({ children: [node] }) } : name === '@deepseek-ai/cordis' ? { Service } : React).Frame } } } }) + vm.runInNewContext(code, { document: { createElement: () => ({ style: {} }) }, window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { Frame = factory((name) => name === 'react-dom' ? { createPortal: (node) => ({ children: [node] }) } : name === '@deepseek-ai/cordis' ? { Service } : React).Frame } } } }) const { service, ctx } = await fixture(boundState()) registerProvider(service, ctx, 'dock', { title: 'Dock', customFrame: true }) await service.add('dock') @@ -2667,3 +2675,38 @@ describe('sidebar central panel selection', () => { expect(home().props['aria-current']).toBe('page') }) }) + +describe('workbench feature default', () => { + function loadWorkbenches(stored) { + const values = new Map(stored === undefined ? [] : [[WORKBENCH_ENABLED, stored]]) + let FreshWorkbenches + vm.runInNewContext(code, { + window: { + sessionStorage, + localStorage: { getItem: key => values.get(key) ?? null, setItem: (key, value) => values.set(key, String(value)), removeItem: key => values.delete(key) }, + __ModuleLoader__: { load({ factory }) { + FreshWorkbenches = factory(name => name === '@deepseek-ai/cordis' ? { Service } : { createElement() {}, Component: class {}, Switch: () => null }).Workbenches + } } + }, + document, setTimeout, clearTimeout, AbortController + }) + return FreshWorkbenches + } + + async function openError(stored) { + const { ctx } = await fixture(boundState()) + const service = new (loadWorkbenches(stored))(ctx) + try { + await service.open('research') + return undefined + } catch (error) { + return error.message + } + } + + it('keeps workbenches off until the user switches the feature on', async () => { + expect(await openError(undefined)).toBe('工作台功能已关闭。') + expect(await openError('false')).toBe('工作台功能已关闭。') + expect(await openError('true')).not.toBe('工作台功能已关闭。') + }) +}) diff --git a/test/workbench-navigation.test.mjs b/test/workbench-navigation.test.mjs index fd306442a..cb1470ece 100644 --- a/test/workbench-navigation.test.mjs +++ b/test/workbench-navigation.test.mjs @@ -18,8 +18,10 @@ const UiWorkspaceService = vm.runInNewContext(`(() => { return (${source.slice(classStart, classEnd).trim().replace(/;$/, '')}) })()`, { _deepseek_ai_cordis: { Service: class {} }, AbortController, AbortSignal, console, setTimeout, clearTimeout }) let apply, Workbenches +// Workbench routing only runs once the user has switched the feature on. +const enabledStorage = { getItem: key => key === 'dsh-workbench-enabled' ? 'true' : null, setItem: () => {}, removeItem: () => {} } vm.runInNewContext(workbenchSource, { - window: { __ModuleLoader__: { load({ factory }) { + window: { localStorage: enabledStorage, __ModuleLoader__: { load({ factory }) { const client = factory((name) => { if (name === 'react') return { createElement() {}, Component: class {} } if (name === '@deepseek-ai/cordis') return { Service }