@jingyi0605/codingns4dsh 0.2.1-beta.13 → 0.2.1-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +5 -5
- package/README.md +6 -9
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts.map +1 -1
- package/data/build/dist/bootstrap/index.d.ts +1 -1
- package/data/build/dist/bootstrap/index.d.ts.map +1 -1
- package/data/build/dist/client/bundle.js +675 -106
- package/data/build/dist/client/bundle.js.map +1 -1
- package/data/build/dist/client/cli-slots.d.ts.map +1 -1
- package/data/build/dist/client/cli-slots.js +11 -3
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/client.model-catalog-cache.js +9 -1
- package/data/build/dist/client/client.model-catalog-cache.js.map +1 -1
- package/data/build/dist/client/client.native-workspace-store.js +9 -15
- package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
- package/data/build/dist/client/client.transport.js +28 -0
- package/data/build/dist/client/client.transport.js.map +1 -1
- package/data/build/dist/client/desktop-assistant.js +138 -110
- package/data/build/dist/client/features/cli-adapters.js +3 -1
- package/data/build/dist/client/features/cli-adapters.js.map +1 -1
- package/data/build/dist/client/features/mobile-access.d.ts.map +1 -1
- package/data/build/dist/client/features/mobile-access.js +7 -0
- package/data/build/dist/client/features/mobile-access.js.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement.js +6 -0
- package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
- package/data/build/dist/client/git-management.d.ts.map +1 -1
- package/data/build/dist/client/git-management.js +11 -30
- package/data/build/dist/client/git-management.js.map +1 -1
- package/data/build/dist/client/git-panel-styles.d.ts +4 -0
- package/data/build/dist/client/git-panel-styles.d.ts.map +1 -1
- package/data/build/dist/client/git-panel-styles.js +14 -0
- package/data/build/dist/client/git-panel-styles.js.map +1 -1
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +8 -0
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/cliManagement.d.ts.map +1 -1
- package/data/build/dist/client/locales/cliManagement.js +16 -0
- package/data/build/dist/client/locales/cliManagement.js.map +1 -1
- package/data/build/dist/client/locales/quickApps.d.ts +2 -0
- package/data/build/dist/client/locales/quickApps.d.ts.map +1 -1
- package/data/build/dist/client/locales/quickApps.js +4 -0
- package/data/build/dist/client/locales/quickApps.js.map +1 -1
- package/data/build/dist/client/mobile-team-panel-dom.d.ts +14 -0
- package/data/build/dist/client/mobile-team-panel-dom.d.ts.map +1 -0
- package/data/build/dist/client/mobile-team-panel-dom.js +164 -0
- package/data/build/dist/client/mobile-team-panel-dom.js.map +1 -0
- package/data/build/dist/client/provider-icons.d.ts.map +1 -1
- package/data/build/dist/client/provider-icons.js +3 -1
- package/data/build/dist/client/provider-icons.js.map +1 -1
- package/data/build/dist/client/quick-apps/browser-storage.d.ts +24 -0
- package/data/build/dist/client/quick-apps/browser-storage.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/browser-storage.js +114 -0
- package/data/build/dist/client/quick-apps/browser-storage.js.map +1 -0
- package/data/build/dist/client/quick-apps/client.d.ts +3 -1
- package/data/build/dist/client/quick-apps/client.d.ts.map +1 -1
- package/data/build/dist/client/quick-apps/client.js +2 -2
- package/data/build/dist/client/quick-apps/client.js.map +1 -1
- package/data/build/dist/client/quick-apps/launcher.js +2 -2
- package/data/build/dist/client/quick-apps/launcher.js.map +1 -1
- package/data/build/dist/client/quick-apps/viewer.d.ts.map +1 -1
- package/data/build/dist/client/quick-apps/viewer.js +12 -2
- package/data/build/dist/client/quick-apps/viewer.js.map +1 -1
- package/data/build/dist/client/style.css +219 -219
- package/data/build/dist/client/workspace-session-rightbar-dom.d.ts.map +1 -1
- package/data/build/dist/client/workspace-session-rightbar-dom.js +12 -21
- package/data/build/dist/client/workspace-session-rightbar-dom.js.map +1 -1
- package/data/build/dist/client/workspace-session-visibility-dom.d.ts +3 -0
- package/data/build/dist/client/workspace-session-visibility-dom.d.ts.map +1 -1
- package/data/build/dist/client/workspace-session-visibility-dom.js +5 -4
- package/data/build/dist/client/workspace-session-visibility-dom.js.map +1 -1
- package/data/build/dist/dsh-capabilities/host/agent-team-adapter.d.ts +52 -0
- package/data/build/dist/dsh-capabilities/host/agent-team-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/agent-team-adapter.js +109 -0
- package/data/build/dist/dsh-capabilities/host/agent-team-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.js +11 -9
- package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.js +13 -8
- package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/types.js.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js +6 -3
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +4 -0
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.js +13 -6
- package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-acp-loader.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-acp-loader.js +11 -1
- package/data/build/dist/host/cli-adapters/command-code-acp-loader.js.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-driver.js +3 -2
- package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts +3 -1
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.js +41 -4
- package/data/build/dist/host/cli-adapters/desktop-app-runtime.js.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js +2 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-virtual-providers.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js +3 -2
- package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.js +130 -29
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/gemini-driver.js +4 -2
- package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts +4 -0
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js +169 -8
- package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-performance-projection.js +2 -1
- package/data/build/dist/host/cli-adapters/grok-performance-projection.js.map +1 -1
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.js +20 -3
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.js.map +1 -1
- package/data/build/dist/host/cli-adapters/management-methods.d.ts +5 -0
- package/data/build/dist/host/cli-adapters/management-methods.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/management-methods.js +9 -0
- package/data/build/dist/host/cli-adapters/management-methods.js.map +1 -1
- package/data/build/dist/host/cli-adapters/management-process.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/management-process.js +13 -2
- package/data/build/dist/host/cli-adapters/management-process.js.map +1 -1
- package/data/build/dist/host/cli-adapters/management.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/management.js +6 -1
- package/data/build/dist/host/cli-adapters/management.js.map +1 -1
- package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/mcode-driver.js +11 -4
- package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts +1 -1
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js +11 -3
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js.map +1 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts +7 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.js +4 -2
- package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts +4 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +65 -25
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js +4 -0
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/subagent-tool.js +1 -1
- package/data/build/dist/host/cli-adapters/subagent-tool.js.map +1 -1
- package/data/build/dist/host/cli-adapters/team-input.d.ts +17 -0
- package/data/build/dist/host/cli-adapters/team-input.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/team-input.js +67 -0
- package/data/build/dist/host/cli-adapters/team-input.js.map +1 -0
- package/data/build/dist/host/cli-adapters/update-check.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/update-check.js +5 -5
- package/data/build/dist/host/cli-adapters/update-check.js.map +1 -1
- package/data/build/dist/host/cli-adapters/zcode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/zcode-driver.js +6 -1
- package/data/build/dist/host/cli-adapters/zcode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/zcode-update.d.ts +8 -0
- package/data/build/dist/host/cli-adapters/zcode-update.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/zcode-update.js +149 -0
- package/data/build/dist/host/cli-adapters/zcode-update.js.map +1 -0
- package/data/build/dist/host/cli-bridge/bridge-holder.d.ts +14 -0
- package/data/build/dist/host/cli-bridge/bridge-holder.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-holder.js +53 -6
- package/data/build/dist/host/cli-bridge/bridge-holder.js.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-server.d.ts +4 -0
- package/data/build/dist/host/cli-bridge/bridge-server.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-server.js +34 -6
- package/data/build/dist/host/cli-bridge/bridge-server.js.map +1 -1
- package/data/build/dist/host/cli-bridge/command-code-mod.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/command-code-mod.js +43 -0
- package/data/build/dist/host/cli-bridge/command-code-mod.js.map +1 -1
- package/data/build/dist/host/cli-bridge/dispatch.js +1 -1
- package/data/build/dist/host/cli-bridge/dispatch.js.map +1 -1
- package/data/build/dist/host/cli-bridge/injections.d.ts +3 -0
- package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/injections.js +23 -7
- package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
- package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js +22 -3
- package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js.map +1 -1
- package/data/build/dist/host/cli-bridge/team-adapters.d.ts +11 -0
- package/data/build/dist/host/cli-bridge/team-adapters.d.ts.map +1 -0
- package/data/build/dist/host/cli-bridge/team-adapters.js +22 -0
- package/data/build/dist/host/cli-bridge/team-adapters.js.map +1 -0
- package/data/build/dist/host/cli-bridge/team-dispatch.d.ts +28 -0
- package/data/build/dist/host/cli-bridge/team-dispatch.d.ts.map +1 -0
- package/data/build/dist/host/cli-bridge/team-dispatch.js +208 -0
- package/data/build/dist/host/cli-bridge/team-dispatch.js.map +1 -0
- package/data/build/dist/host/cli-bridge/team-tool.d.ts +3 -0
- package/data/build/dist/host/cli-bridge/team-tool.d.ts.map +1 -0
- package/data/build/dist/host/cli-bridge/team-tool.js +18 -0
- package/data/build/dist/host/cli-bridge/team-tool.js.map +1 -0
- package/data/build/dist/host/features/quick-apps.js +2 -2
- package/data/build/dist/host/features/quick-apps.js.map +1 -1
- package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -1
- package/data/build/dist/host/features/session-prompt-translation.js +11 -3
- package/data/build/dist/host/features/session-prompt-translation.js.map +1 -1
- package/data/build/dist/host/modules/quick-apps/remote.d.ts +1 -1
- package/data/build/dist/host/modules/quick-apps/remote.d.ts.map +1 -1
- package/data/build/dist/host/modules/quick-apps/remote.js +5 -4
- package/data/build/dist/host/modules/quick-apps/remote.js.map +1 -1
- package/data/build/dist/host/modules/quick-apps/service.d.ts +1 -1
- package/data/build/dist/host/modules/quick-apps/service.d.ts.map +1 -1
- package/data/build/dist/host/modules/quick-apps/service.js +8 -4
- package/data/build/dist/host/modules/quick-apps/service.js.map +1 -1
- package/data/build/dist/host/modules/quick-apps/static-handler.d.ts +1 -1
- package/data/build/dist/host/modules/quick-apps/static-handler.d.ts.map +1 -1
- package/data/build/dist/host/modules/quick-apps/static-handler.js +11 -2
- package/data/build/dist/host/modules/quick-apps/static-handler.js.map +1 -1
- package/data/build/dist/host/session-migration-repair.js +48 -35
- package/data/build/dist/host/session-migration-repair.js.map +1 -1
- package/data/build/dist/shared/cli-provider-route.d.ts +7 -0
- package/data/build/dist/shared/cli-provider-route.d.ts.map +1 -0
- package/data/build/dist/shared/cli-provider-route.js +13 -0
- package/data/build/dist/shared/cli-provider-route.js.map +1 -0
- package/data/build/dist/shared/contracts/agent-team.d.ts +14 -0
- package/data/build/dist/shared/contracts/agent-team.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/agent-team.js +48 -0
- package/data/build/dist/shared/contracts/agent-team.js.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +10 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/errors.d.ts +2 -2
- package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.d.ts +9 -15
- package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.js +8 -14
- package/data/build/dist/shared/contracts/version.js.map +1 -1
- package/data/build/dist/shared/quick-app-browser-storage.d.ts +33 -0
- package/data/build/dist/shared/quick-app-browser-storage.d.ts.map +1 -0
- package/data/build/dist/shared/quick-app-browser-storage.js +33 -0
- package/data/build/dist/shared/quick-app-browser-storage.js.map +1 -0
- package/data/build/dist/shared/quick-app-storage-bootstrap.d.ts +9 -0
- package/data/build/dist/shared/quick-app-storage-bootstrap.d.ts.map +1 -0
- package/data/build/dist/shared/quick-app-storage-bootstrap.js +186 -0
- package/data/build/dist/shared/quick-app-storage-bootstrap.js.map +1 -0
- package/package.json +32 -32
- package/profile/README.md +2 -2
- package/profile/package.json +3 -3
- package/profile/version.json +3 -3
- package/version.json +3 -3
|
@@ -7013,6 +7013,13 @@ window.__ModuleLoader__.load({
|
|
|
7013
7013
|
var exports = module.exports;
|
|
7014
7014
|
const require_transport = require("@jingyi0605/codingns4dsh/client.transport.js");
|
|
7015
7015
|
const require_primitives_adapter = require("@jingyi0605/codingns4dsh/client.primitives-adapter.js");
|
|
7016
|
+
/** A bare brand name does not establish ownership of a DSH provider. */
|
|
7017
|
+
function fromCliProviderId(provider) {
|
|
7018
|
+
if (typeof provider !== "string" || !provider.startsWith("codingns-cli-")) return void 0;
|
|
7019
|
+
const adapterId = provider.slice(13);
|
|
7020
|
+
return adapterId === "" ? void 0 : adapterId;
|
|
7021
|
+
}
|
|
7022
|
+
//#endregion
|
|
7016
7023
|
//#region src/client/provider-icons.ts
|
|
7017
7024
|
/** 未绑定和未知 Agent 使用中性灰,绝不冒充任一已知品牌色。 */
|
|
7018
7025
|
const PROVIDER_NEUTRAL_COLOR = "#71717a";
|
|
@@ -7162,7 +7169,8 @@ window.__ModuleLoader__.load({
|
|
|
7162
7169
|
}
|
|
7163
7170
|
/** 兼容旧版 CN profile 的会话快照,但不重新暴露第二个 Provider。 */
|
|
7164
7171
|
function normalizeProviderAdapterId(adapterId) {
|
|
7165
|
-
|
|
7172
|
+
const normalized = fromCliProviderId(adapterId) ?? adapterId;
|
|
7173
|
+
return normalized === "codebuddy-cn" ? "codebuddy" : normalized;
|
|
7166
7174
|
}
|
|
7167
7175
|
const CODINGNS4DSH_DEBUG_LEVEL_ENV = "CODINGNS4DSH_DEBUG_LEVEL";
|
|
7168
7176
|
const LEGACY_DEBUG_ENV = "CODINGNS4DSH_TUNNEL_DEBUG";
|
|
@@ -7971,21 +7979,15 @@ window.__ModuleLoader__.load({
|
|
|
7971
7979
|
const require_assistant_notifications = require("@jingyi0605/codingns4dsh/client.assistant-notifications.js");
|
|
7972
7980
|
const require_session_translation = require("@jingyi0605/codingns4dsh/client.session-translation.js");
|
|
7973
7981
|
//#region src/shared/contracts/version.ts
|
|
7974
|
-
/**
|
|
7975
|
-
const DSH_VERSION = "0.2.1-
|
|
7982
|
+
/** DSH verification target, synchronized with the root version.json. */
|
|
7983
|
+
const DSH_VERSION = "0.2.1-rc.2";
|
|
7976
7984
|
/**
|
|
7977
|
-
*
|
|
7978
|
-
*
|
|
7979
|
-
*
|
|
7980
|
-
*
|
|
7981
|
-
* alpha.2 用 `subagents.startActivation()` 取代 `startContinuable()`,由
|
|
7982
|
-
* `subagent.activation` / `subagent.continuable` 两条能力路由分别探测,业务侧
|
|
7983
|
-
* 经 `startNativeSubagent()` 归一化调用,因此同一个版本范围仍然成立。
|
|
7984
|
-
*
|
|
7985
|
-
* 这里保留明确上界,是为了让 npm/DSH 安装期也能识别 0.2.1-alpha.2 这个跨 patch
|
|
7986
|
-
* 预发布版本;出现新的 API 世代或结构变化时,应重新验证并更新范围与能力路由。
|
|
7985
|
+
* Supported hosts retain the 0.2.0-rc.2 floor and include 0.2.1-rc.2.
|
|
7986
|
+
* Capability adapters preserve earlier subagent, peer and message contracts.
|
|
7987
|
+
* Keep an explicit upper bound: a later prerelease requires verification before
|
|
7988
|
+
* either installation checks or runtime capability selection may accept it.
|
|
7987
7989
|
*/
|
|
7988
|
-
const DSH_COMPATIBILITY = ">=0.2.0-rc.2 <=0.2.1-
|
|
7990
|
+
const DSH_COMPATIBILITY = ">=0.2.0-rc.2 <=0.2.1-rc.2";
|
|
7989
7991
|
/**
|
|
7990
7992
|
* 兼容范围下界,即插件仍然接受的最低 DSH 版本。
|
|
7991
7993
|
*
|
|
@@ -7994,7 +7996,7 @@ window.__ModuleLoader__.load({
|
|
|
7994
7996
|
* “不支持的 DSH 版本”,把仅仅缺少启动页注入的页面误判为宿主不兼容。
|
|
7995
7997
|
*/
|
|
7996
7998
|
function minimumSupportedDshVersion() {
|
|
7997
|
-
return /^>=([^ ]+)/u.exec(">=0.2.0-rc.2 <=0.2.1-
|
|
7999
|
+
return /^>=([^ ]+)/u.exec(">=0.2.0-rc.2 <=0.2.1-rc.2")?.[1] ?? "0.2.1-rc.2";
|
|
7998
8000
|
}
|
|
7999
8001
|
/** Host 注入到浏览器页面的真实 DSH 版本全局字段。 */
|
|
8000
8002
|
const CODINGNS_DSH_VERSION_GLOBAL = "__CODINGNS_DSH_VERSION__";
|
|
@@ -8003,7 +8005,7 @@ window.__ModuleLoader__.load({
|
|
|
8003
8005
|
return /^0\.1\.5(?:-|$)/u.test(version);
|
|
8004
8006
|
}
|
|
8005
8007
|
/** Codingns4DSH 插件自身的 npm 版本。 */
|
|
8006
|
-
const CODINGNS_VERSION = "0.2.1-beta.
|
|
8008
|
+
const CODINGNS_VERSION = "0.2.1-beta.14";
|
|
8007
8009
|
/** 判断宿主版本是否落在当前插件声明的 DSH 兼容范围内;范围省略上界时不校验上限。 */
|
|
8008
8010
|
function isDshVersionCompatible(version) {
|
|
8009
8011
|
const match = /^>=([^ ]+)(?: <=([^ ]+))?$/u.exec(DSH_COMPATIBILITY);
|
|
@@ -19675,6 +19677,8 @@ window.__ModuleLoader__.load({
|
|
|
19675
19677
|
//#endregion
|
|
19676
19678
|
//#region src/client/locales/quickApps.ts
|
|
19677
19679
|
const en$2 = {
|
|
19680
|
+
"quickApps.storagePreview": "App data is saved in this browser. IndexedDB and URLs starting with / are not supported in this view.",
|
|
19681
|
+
"quickApps.storageFailed": "App data could not be saved in this browser: {message}",
|
|
19678
19682
|
"quickApps.sandboxPreview": "Workspace preview. Browser storage and URLs starting with / may not work in this view.",
|
|
19679
19683
|
"quickApps.runtime.not-configured": "This Host does not provide workspace HTML previews. Update its CodingNS plugin and reopen the shortcut.",
|
|
19680
19684
|
"quickApps.runtime.config-invalid": "The Host’s HTML hosting configuration or TLS certificate is invalid.",
|
|
@@ -19802,6 +19806,8 @@ window.__ModuleLoader__.load({
|
|
|
19802
19806
|
"quickApps.status.missing-file": "The entry file or application folder is missing or cannot be accessed."
|
|
19803
19807
|
};
|
|
19804
19808
|
const zh$2 = {
|
|
19809
|
+
"quickApps.storagePreview": "应用数据保存在当前浏览器中。此视图不支持 IndexedDB 和以 / 开头的网址。",
|
|
19810
|
+
"quickApps.storageFailed": "无法在当前浏览器中保存应用数据:{message}",
|
|
19805
19811
|
"quickApps.sandboxPreview": "工作区预览:浏览器存储和以 / 开头的网址可能无法在此视图中使用。",
|
|
19806
19812
|
"quickApps.runtime.not-configured": "此主机尚不支持工作区 HTML 预览,请更新其 CodingNS 插件后重新打开快捷方式。",
|
|
19807
19813
|
"quickApps.runtime.config-invalid": "主机的 HTML 托管配置或 TLS 证书无效。",
|
|
@@ -19931,6 +19937,14 @@ window.__ModuleLoader__.load({
|
|
|
19931
19937
|
//#endregion
|
|
19932
19938
|
//#region src/client/locales/cliManagement.ts
|
|
19933
19939
|
const en$1 = {
|
|
19940
|
+
"cli.team.label": "Team eligibility",
|
|
19941
|
+
"cli.team.leadAndMember": "Collaborator and Lead",
|
|
19942
|
+
"cli.team.member": "Collaborator",
|
|
19943
|
+
"cli.team.reason.version": "Full Team support requires a verified DSH alpha.2 or alpha.3 host.",
|
|
19944
|
+
"cli.team.reason.profile": "Enable the native DSH Team profile to use Teams.",
|
|
19945
|
+
"cli.team.reason.disabled": "Enable the CodingNS bridge and this Agent to use Teams.",
|
|
19946
|
+
"cli.team.reason.adapter": "This Agent does not provide the required Team tool transport.",
|
|
19947
|
+
"cli.team.reason.installation": "Install and enable this Agent before using Teams.",
|
|
19934
19948
|
"cli.manage.reasonLabel.application-managed": "Check in app",
|
|
19935
19949
|
"cli.manage.reasonLabel.unknown-version": "Version unknown",
|
|
19936
19950
|
"cli.manage.reasonLabel.legacy-distribution": "Legacy distribution",
|
|
@@ -20000,6 +20014,14 @@ window.__ModuleLoader__.load({
|
|
|
20000
20014
|
"cli.manage.reviewAgain": "Review another operation"
|
|
20001
20015
|
};
|
|
20002
20016
|
const zh$1 = {
|
|
20017
|
+
"cli.team.label": "团队适配能力",
|
|
20018
|
+
"cli.team.leadAndMember": "协作者和管理者",
|
|
20019
|
+
"cli.team.member": "协作者",
|
|
20020
|
+
"cli.team.reason.version": "完整团队功能需要经过验证的 DSH alpha.2 或 alpha.3 主机。",
|
|
20021
|
+
"cli.team.reason.profile": "请启用 DSH 原生团队配置后使用团队功能。",
|
|
20022
|
+
"cli.team.reason.disabled": "请启用 CodingNS 桥接和此 Agent 后使用团队功能。",
|
|
20023
|
+
"cli.team.reason.adapter": "此 Agent 尚未提供所需的团队工具通道。",
|
|
20024
|
+
"cli.team.reason.installation": "请先安装并启用此 Agent,再使用团队功能。",
|
|
20003
20025
|
"cli.manage.reasonLabel.application-managed": "在应用中检查",
|
|
20004
20026
|
"cli.manage.reasonLabel.unknown-version": "版本未知",
|
|
20005
20027
|
"cli.manage.reasonLabel.legacy-distribution": "旧版发行包",
|
|
@@ -20468,6 +20490,8 @@ window.__ModuleLoader__.load({
|
|
|
20468
20490
|
"cli.currentAgent": "Current Agent: {name}{locked}",
|
|
20469
20491
|
"cli.locked": " (locked)",
|
|
20470
20492
|
"cli.selectAgent": "Select Agent",
|
|
20493
|
+
"cli.catalogLoadFailed": "Could not load external Agents.",
|
|
20494
|
+
"cli.retryCatalog": "Retry loading Agents",
|
|
20471
20495
|
"workspace.showLogo": "Show Agent logo",
|
|
20472
20496
|
"workspace.logoDescription": "Display the selected external Agent logo in native workspace session rows.",
|
|
20473
20497
|
"workspace.optimizeSessionTitles": "Optimize DSH session title generation",
|
|
@@ -20494,6 +20518,8 @@ window.__ModuleLoader__.load({
|
|
|
20494
20518
|
"workspace.rememberConversationRightbarRatio": "Remember conversation and right sidebar width ratio",
|
|
20495
20519
|
"workspace.rememberConversationRightbarRatioDescription": "Restore the right sidebar proportion after refreshing this browser; the ratio is stored locally.",
|
|
20496
20520
|
"mobile.sidebarGestures": "Swipe to open or close sidebars",
|
|
20521
|
+
"mobile.team.title": "Agent Team",
|
|
20522
|
+
"mobile.team.close": "Close Agent Team",
|
|
20497
20523
|
"mobile.sidebarGesturesDescription": "On touch devices, swipe horizontally in the conversation area to toggle a sidebar. Cross the configured share of the viewport width, or give a quick flick to trigger it.",
|
|
20498
20524
|
"mobile.sidebarGestureMapping": "Swipe direction",
|
|
20499
20525
|
"mobile.sidebarGestureMappingInward": "Swipe right: session list; swipe left: right sidebar",
|
|
@@ -20917,6 +20943,8 @@ window.__ModuleLoader__.load({
|
|
|
20917
20943
|
"cli.currentAgent": "当前 Agent:{name}{locked}",
|
|
20918
20944
|
"cli.locked": "(已锁定)",
|
|
20919
20945
|
"cli.selectAgent": "选择 Agent",
|
|
20946
|
+
"cli.catalogLoadFailed": "无法加载外部 Agent。",
|
|
20947
|
+
"cli.retryCatalog": "重新加载 Agent",
|
|
20920
20948
|
"workspace.showLogo": "显示 Agent Logo",
|
|
20921
20949
|
"workspace.logoDescription": "在原生工作区会话行显示所选外部 Agent 的 Logo。",
|
|
20922
20950
|
"workspace.optimizeSessionTitles": "优化DSH会话标题生成逻辑",
|
|
@@ -20943,6 +20971,8 @@ window.__ModuleLoader__.load({
|
|
|
20943
20971
|
"workspace.rememberConversationRightbarRatio": "记忆对话窗口与右侧栏的宽度比例",
|
|
20944
20972
|
"workspace.rememberConversationRightbarRatioDescription": "刷新后恢复右侧栏比例;比例仅保存在当前浏览器中。",
|
|
20945
20973
|
"mobile.sidebarGestures": "横滑开合侧栏",
|
|
20974
|
+
"mobile.team.title": "智能体团队",
|
|
20975
|
+
"mobile.team.close": "关闭智能体团队",
|
|
20946
20976
|
"mobile.sidebarGesturesDescription": "触摸设备上在对话区横滑即可开合侧栏;跨过设定的视口宽度比例即触发,快速轻甩同样有效。",
|
|
20947
20977
|
"mobile.sidebarGestureMapping": "方向映射",
|
|
20948
20978
|
"mobile.sidebarGestureMappingInward": "右滑开合会话列表,左滑开合右边栏",
|
|
@@ -24532,15 +24562,15 @@ window.__ModuleLoader__.load({
|
|
|
24532
24562
|
sendHello() {
|
|
24533
24563
|
this.send(this.createEnvelope("session.hello", "session", {
|
|
24534
24564
|
protocol: this.options.protocol ?? "dsh-transport-v1",
|
|
24535
|
-
dshVersion: this.options.dshVersion ?? "0.2.1-
|
|
24565
|
+
dshVersion: this.options.dshVersion ?? "0.2.1-rc.2",
|
|
24536
24566
|
capabilities: [...this.options.capabilities ?? []]
|
|
24537
24567
|
}));
|
|
24538
24568
|
}
|
|
24539
24569
|
sendReady(capabilities, peerDshVersion) {
|
|
24540
24570
|
this.send(this.createEnvelope("session.ready", "session", {
|
|
24541
24571
|
protocol: this.options.protocol ?? "dsh-transport-v1",
|
|
24542
|
-
dshVersion: peerDshVersion ?? this.options.dshVersion ?? "0.2.1-
|
|
24543
|
-
hostDshVersion: this.options.dshVersion ?? "0.2.1-
|
|
24572
|
+
dshVersion: peerDshVersion ?? this.options.dshVersion ?? "0.2.1-rc.2",
|
|
24573
|
+
hostDshVersion: this.options.dshVersion ?? "0.2.1-rc.2",
|
|
24544
24574
|
capabilities: [...capabilities],
|
|
24545
24575
|
byteCredit: 65536,
|
|
24546
24576
|
messageCredit: 32
|
|
@@ -29173,6 +29203,141 @@ window.__ModuleLoader__.load({
|
|
|
29173
29203
|
});
|
|
29174
29204
|
}
|
|
29175
29205
|
//#endregion
|
|
29206
|
+
//#region src/dsh-capabilities/host/agent-team-adapter.ts
|
|
29207
|
+
const MEMBER_METHODS = [
|
|
29208
|
+
"membership",
|
|
29209
|
+
"listMembers",
|
|
29210
|
+
"sendMessage",
|
|
29211
|
+
"listTasks",
|
|
29212
|
+
"getTask",
|
|
29213
|
+
"createTask",
|
|
29214
|
+
"updateTask",
|
|
29215
|
+
"waitForChange"
|
|
29216
|
+
];
|
|
29217
|
+
function supportsExternalAgentTeam(context, lead = false) {
|
|
29218
|
+
return hasMethods$1(read$1(context, "agentTeams"), [...MEMBER_METHODS, ...lead ? ["spawnTeammate", "interrupt"] : []]) && hasMethods$1(read$1(context, "agents"), ["get", "list"]) && hasMethods$1(read$1(context, "subagents"), [
|
|
29219
|
+
"registerProvider",
|
|
29220
|
+
"startActivation",
|
|
29221
|
+
"sendMessage"
|
|
29222
|
+
]);
|
|
29223
|
+
}
|
|
29224
|
+
function createAgentTeamAdapter(context) {
|
|
29225
|
+
return new DshAgentTeamAdapter(read$1(context, "agentTeams"), read$1(context, "agents"), () => read$1(context, "sessionController"));
|
|
29226
|
+
}
|
|
29227
|
+
/** Exact Agent identity and all DSH-specific calls stay at this boundary. */
|
|
29228
|
+
var DshAgentTeamAdapter = class {
|
|
29229
|
+
service;
|
|
29230
|
+
agents;
|
|
29231
|
+
controller;
|
|
29232
|
+
lifetime = new AbortController();
|
|
29233
|
+
supportsLead;
|
|
29234
|
+
constructor(service, agents, controller) {
|
|
29235
|
+
this.service = service;
|
|
29236
|
+
this.agents = agents;
|
|
29237
|
+
this.controller = controller;
|
|
29238
|
+
this.supportsLead = hasMethods$1(service, ["spawnTeammate", "interrupt"]);
|
|
29239
|
+
}
|
|
29240
|
+
get signal() {
|
|
29241
|
+
return this.lifetime.signal;
|
|
29242
|
+
}
|
|
29243
|
+
async nativeRoute(model, effort, provider) {
|
|
29244
|
+
const controller = typeof this.controller === "function" ? this.controller() : this.controller;
|
|
29245
|
+
if (!controller?.modelCatalog) throw teamError("TEAM_NATIVE_ROUTE_UNAVAILABLE", "A native DSH model catalog is required for mixed Teams.");
|
|
29246
|
+
const catalog = await controller.modelCatalog();
|
|
29247
|
+
const selectedModel = model ?? catalog.default?.model;
|
|
29248
|
+
const selectedProvider = provider ?? (model === void 0 ? catalog.default?.provider : void 0);
|
|
29249
|
+
const matches = (catalog.groups ?? []).flatMap((group) => group.id.startsWith("codingns-cli-") || selectedProvider && group.id !== selectedProvider ? [] : (group.models ?? []).filter((item) => item.id === selectedModel).map((item) => ({
|
|
29250
|
+
provider: group.id,
|
|
29251
|
+
item
|
|
29252
|
+
})));
|
|
29253
|
+
if (matches.length !== 1) throw teamError("TEAM_NATIVE_ROUTE_UNAVAILABLE", "Select an unambiguous native DSH provider and model.");
|
|
29254
|
+
const match = matches[0];
|
|
29255
|
+
const reasoningEffort = effort ?? (model === void 0 && match.provider === catalog.default?.provider ? catalog.default?.reasoningEffort : void 0);
|
|
29256
|
+
if (reasoningEffort && !match.item.reasoning?.efforts?.some((item) => item.id === reasoningEffort)) throw teamError("TEAM_MODEL_UNSUPPORTED", "The requested native effort is unavailable.");
|
|
29257
|
+
return {
|
|
29258
|
+
provider: match.provider,
|
|
29259
|
+
model: match.item.id,
|
|
29260
|
+
...reasoningEffort ? { reasoningEffort } : {}
|
|
29261
|
+
};
|
|
29262
|
+
}
|
|
29263
|
+
resolveAgent(sessionId) {
|
|
29264
|
+
if (this.signal.aborted || sessionId.trim() === "") return void 0;
|
|
29265
|
+
const direct = this.agents.get(sessionId);
|
|
29266
|
+
if (isAgent(direct) && this.isCurrent(direct) && sessionIdOf(direct) === sessionId) return direct;
|
|
29267
|
+
return this.agents.list().find((candidate) => isAgent(candidate) && this.isCurrent(candidate) && sessionIdOf(candidate) === sessionId);
|
|
29268
|
+
}
|
|
29269
|
+
identity(agent) {
|
|
29270
|
+
this.signal.throwIfAborted();
|
|
29271
|
+
if (!this.isCurrent(agent)) throw teamError("TEAM_CALLER_UNAVAILABLE", "The calling Agent is no longer live.");
|
|
29272
|
+
const member = this.service.membership(agent);
|
|
29273
|
+
if (member?.role !== "lead" && member?.role !== "teammate" || typeof member.id !== "string" || typeof member.name !== "string") throw teamError("TEAM_NOT_MEMBER", "The calling Agent is not a native Team member.");
|
|
29274
|
+
return {
|
|
29275
|
+
sessionId: sessionIdOf(agent),
|
|
29276
|
+
teamId: member.id,
|
|
29277
|
+
role: member.role,
|
|
29278
|
+
name: member.name
|
|
29279
|
+
};
|
|
29280
|
+
}
|
|
29281
|
+
invoke(agent, action, input, signal) {
|
|
29282
|
+
const identity = this.identity(agent);
|
|
29283
|
+
if ((action === "spawn" || action === "interrupt" || action === "task_update" && input.action === "reassign") && identity.role !== "lead") throw teamError("TEAM_LEAD_REQUIRED", "Only the Team Lead may perform this operation.");
|
|
29284
|
+
const combined = signal ? AbortSignal.any([signal, this.signal]) : this.signal;
|
|
29285
|
+
combined.throwIfAborted();
|
|
29286
|
+
switch (action) {
|
|
29287
|
+
case "status": return {
|
|
29288
|
+
identity,
|
|
29289
|
+
supportsLead: this.supportsLead
|
|
29290
|
+
};
|
|
29291
|
+
case "members": return this.service.listMembers(agent);
|
|
29292
|
+
case "message": return this.service.sendMessage(agent, {
|
|
29293
|
+
...input,
|
|
29294
|
+
signal: combined
|
|
29295
|
+
});
|
|
29296
|
+
case "tasks": return this.service.listTasks(agent);
|
|
29297
|
+
case "task": return this.service.getTask(agent, String(input.taskId));
|
|
29298
|
+
case "task_create": return this.service.createTask(agent, input);
|
|
29299
|
+
case "task_update": return this.service.updateTask(agent, input);
|
|
29300
|
+
case "wait": return this.service.waitForChange(agent, Number(input.timeoutMs), combined);
|
|
29301
|
+
case "spawn":
|
|
29302
|
+
if (!this.service.spawnTeammate) throw teamError("TEAM_OPERATION_UNAVAILABLE", "Teammate creation is unavailable.");
|
|
29303
|
+
return this.service.spawnTeammate(agent, {
|
|
29304
|
+
...input,
|
|
29305
|
+
signal: combined
|
|
29306
|
+
});
|
|
29307
|
+
case "interrupt":
|
|
29308
|
+
if (!this.service.interrupt) throw teamError("TEAM_OPERATION_UNAVAILABLE", "Team interruption is unavailable.");
|
|
29309
|
+
return this.service.interrupt(agent, String(input.target));
|
|
29310
|
+
}
|
|
29311
|
+
}
|
|
29312
|
+
dispose() {
|
|
29313
|
+
this.lifetime.abort(teamError("TEAM_SERVICE_UNAVAILABLE", "The native Team service was removed."));
|
|
29314
|
+
}
|
|
29315
|
+
isCurrent(agent) {
|
|
29316
|
+
return this.agents.get(agent.id) === agent;
|
|
29317
|
+
}
|
|
29318
|
+
};
|
|
29319
|
+
function sessionIdOf(agent) {
|
|
29320
|
+
return agent.session?.header?.id?.trim() || agent.id;
|
|
29321
|
+
}
|
|
29322
|
+
function teamError(code, message) {
|
|
29323
|
+
return Object.assign(new Error(message), { code });
|
|
29324
|
+
}
|
|
29325
|
+
function isAgent(value) {
|
|
29326
|
+
return typeof value === "object" && value !== null && typeof Reflect.get(value, "id") === "string";
|
|
29327
|
+
}
|
|
29328
|
+
function hasMethods$1(value, methods) {
|
|
29329
|
+
return value !== null && (typeof value === "object" || typeof value === "function") && methods.every((method) => typeof Reflect.get(value, method) === "function");
|
|
29330
|
+
}
|
|
29331
|
+
function read$1(context, name) {
|
|
29332
|
+
if (typeof context !== "object" || context === null) return void 0;
|
|
29333
|
+
try {
|
|
29334
|
+
const get = Reflect.get(context, "get");
|
|
29335
|
+
return typeof get === "function" ? get.call(context, name) : Reflect.get(context, name);
|
|
29336
|
+
} catch {
|
|
29337
|
+
return;
|
|
29338
|
+
}
|
|
29339
|
+
}
|
|
29340
|
+
//#endregion
|
|
29176
29341
|
//#region src/dsh-capabilities/routes.ts
|
|
29177
29342
|
/**
|
|
29178
29343
|
* 注册 Codingns4DSH 当前实际消费的 DSH 服务能力。
|
|
@@ -29187,10 +29352,21 @@ window.__ModuleLoader__.load({
|
|
|
29187
29352
|
const range020 = require_native_workspace_store.DSH_COMPATIBILITY;
|
|
29188
29353
|
const add = (route) => registry.register(route);
|
|
29189
29354
|
if (runtime === "host") {
|
|
29355
|
+
for (const role of ["member", "lead"]) add({
|
|
29356
|
+
id: `agent-team-external-${role}-021`,
|
|
29357
|
+
capability: `agent-team.external-${role}`,
|
|
29358
|
+
supportedDsh: ">=0.2.1-alpha.2 <=0.2.1-rc.2",
|
|
29359
|
+
runtime,
|
|
29360
|
+
priority: 10,
|
|
29361
|
+
status: "supported",
|
|
29362
|
+
introducedIn: "0.2.1-alpha.2",
|
|
29363
|
+
detect: (ctx) => supportsExternalAgentTeam(ctx, role === "lead"),
|
|
29364
|
+
create: createAgentTeamAdapter
|
|
29365
|
+
});
|
|
29190
29366
|
add({
|
|
29191
29367
|
id: "session-performance-projection-021",
|
|
29192
29368
|
capability: "session.external-performance",
|
|
29193
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29369
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29194
29370
|
runtime,
|
|
29195
29371
|
priority: 10,
|
|
29196
29372
|
status: "supported",
|
|
@@ -29234,7 +29410,7 @@ window.__ModuleLoader__.load({
|
|
|
29234
29410
|
add({
|
|
29235
29411
|
id: "session-prompt-assembly-021",
|
|
29236
29412
|
capability: "session.prompt-assembly",
|
|
29237
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29413
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29238
29414
|
runtime,
|
|
29239
29415
|
priority: 10,
|
|
29240
29416
|
status: "supported",
|
|
@@ -29245,7 +29421,7 @@ window.__ModuleLoader__.load({
|
|
|
29245
29421
|
add({
|
|
29246
29422
|
id: "session-external-model-selection-021",
|
|
29247
29423
|
capability: "session.external-model-selection",
|
|
29248
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29424
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29249
29425
|
runtime,
|
|
29250
29426
|
priority: 10,
|
|
29251
29427
|
status: "supported",
|
|
@@ -29267,7 +29443,7 @@ window.__ModuleLoader__.load({
|
|
|
29267
29443
|
add({
|
|
29268
29444
|
id: "session-activation-021",
|
|
29269
29445
|
capability: "session.activation",
|
|
29270
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29446
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29271
29447
|
runtime,
|
|
29272
29448
|
priority: 10,
|
|
29273
29449
|
status: "supported",
|
|
@@ -29278,7 +29454,7 @@ window.__ModuleLoader__.load({
|
|
|
29278
29454
|
for (const capability of ["connection.peer", "connection.uplink"]) add({
|
|
29279
29455
|
id: `${capability}-021`,
|
|
29280
29456
|
capability,
|
|
29281
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29457
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29282
29458
|
runtime,
|
|
29283
29459
|
priority: 40,
|
|
29284
29460
|
status: "supported",
|
|
@@ -29374,7 +29550,7 @@ window.__ModuleLoader__.load({
|
|
|
29374
29550
|
add({
|
|
29375
29551
|
id: "session-performance-presentation-021",
|
|
29376
29552
|
capability: "session.external-performance",
|
|
29377
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29553
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29378
29554
|
runtime,
|
|
29379
29555
|
priority: 10,
|
|
29380
29556
|
status: "supported",
|
|
@@ -29407,7 +29583,7 @@ window.__ModuleLoader__.load({
|
|
|
29407
29583
|
add({
|
|
29408
29584
|
id: "message-presentation-021",
|
|
29409
29585
|
capability: "conversation.message-presentation",
|
|
29410
|
-
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-
|
|
29586
|
+
supportedDsh: ">=0.2.1-alpha.3 <=0.2.1-rc.2",
|
|
29411
29587
|
runtime,
|
|
29412
29588
|
priority: 10,
|
|
29413
29589
|
status: "supported",
|
|
@@ -29728,7 +29904,7 @@ window.__ModuleLoader__.load({
|
|
|
29728
29904
|
add({
|
|
29729
29905
|
id: "conversation-draft-share-021",
|
|
29730
29906
|
capability: "conversation.draft-share",
|
|
29731
|
-
supportedDsh: ">=0.2.1-alpha.1 <=0.2.1-
|
|
29907
|
+
supportedDsh: ">=0.2.1-alpha.1 <=0.2.1-rc.2",
|
|
29732
29908
|
runtime: "client",
|
|
29733
29909
|
priority: 30,
|
|
29734
29910
|
status: "supported",
|
|
@@ -31850,7 +32026,10 @@ window.__ModuleLoader__.load({
|
|
|
31850
32026
|
margin: 0,
|
|
31851
32027
|
overflowWrap: "anywhere",
|
|
31852
32028
|
color: require_theme.dshThemeColor.labelSecondary
|
|
31853
|
-
} }, adapter.diagnostic), (0, react.createElement)("dt", void 0, t("cli.
|
|
32029
|
+
} }, adapter.diagnostic), adapter.team && (0, react.createElement)("dt", void 0, t("cli.team.label")), adapter.team && (0, react.createElement)("dd", { style: {
|
|
32030
|
+
margin: 0,
|
|
32031
|
+
overflowWrap: "anywhere"
|
|
32032
|
+
} }, adapter.team.member ? t(adapter.team.lead ? "cli.team.leadAndMember" : "cli.team.member") : t(`cli.team.reason.${adapter.team.reason ?? "adapter"}`)), (0, react.createElement)("dt", void 0, t("cli.protocol")), (0, react.createElement)("dd", { style: { margin: 0 } }, adapter.protocol ?? t("cli.undeclared")), (0, react.createElement)("dt", void 0, t("cli.capabilities")), (0, react.createElement)("dd", { style: {
|
|
31854
32033
|
margin: 0,
|
|
31855
32034
|
overflowWrap: "anywhere"
|
|
31856
32035
|
} }, adapter.capabilities?.join(t("common.listSeparator")) ?? t("cli.undeclared"))), (0, react.createElement)("h4", { style: { margin: "16px 0 8px" } }, t("cli.modelCatalog")), modelsError && (0, react.createElement)("div", {
|
|
@@ -33122,7 +33301,7 @@ window.__ModuleLoader__.load({
|
|
|
33122
33301
|
const remote = options.remote;
|
|
33123
33302
|
const t = require_transport.resolveCodingNsTranslator(options.locale);
|
|
33124
33303
|
let hiddenWorkspaceIds = new Set(normalizeIds(options.hiddenWorkspaceIds ?? []));
|
|
33125
|
-
let
|
|
33304
|
+
let fallbackWorkspaces = [];
|
|
33126
33305
|
let disposed = false;
|
|
33127
33306
|
let scanQueued = false;
|
|
33128
33307
|
let loading;
|
|
@@ -33154,14 +33333,14 @@ window.__ModuleLoader__.load({
|
|
|
33154
33333
|
});
|
|
33155
33334
|
};
|
|
33156
33335
|
const refreshData = async () => {
|
|
33157
|
-
if (disposed) return;
|
|
33336
|
+
if (disposed || options.readNativeWorkspaceSnapshot?.() !== void 0) return;
|
|
33158
33337
|
if (loading !== void 0) {
|
|
33159
33338
|
await loading;
|
|
33160
33339
|
return;
|
|
33161
33340
|
}
|
|
33162
33341
|
loading = loadWorkspaceRecords(remote).then((next) => {
|
|
33163
33342
|
if (disposed) return;
|
|
33164
|
-
|
|
33343
|
+
fallbackWorkspaces = next;
|
|
33165
33344
|
scan();
|
|
33166
33345
|
}).catch(() => void 0).finally(() => {
|
|
33167
33346
|
loading = void 0;
|
|
@@ -33174,6 +33353,7 @@ window.__ModuleLoader__.load({
|
|
|
33174
33353
|
try {
|
|
33175
33354
|
clearHiddenWorkspaceNodes(dom);
|
|
33176
33355
|
if (!showHiddenWorkspaces) removeVisibilityEntries(dom);
|
|
33356
|
+
const workspaces = options.readNativeWorkspaceSnapshot?.()?.items ?? fallbackWorkspaces;
|
|
33177
33357
|
const headers = findWorkspaceHeaders(dom);
|
|
33178
33358
|
const workspaceIds = new Set(workspaces.map((workspace) => workspace.workspaceId));
|
|
33179
33359
|
for (const header of headers) {
|
|
@@ -33453,9 +33633,7 @@ window.__ModuleLoader__.load({
|
|
|
33453
33633
|
const workspaceId = resolveWorkspaceId(header);
|
|
33454
33634
|
if (workspaceId !== void 0 && !recordsById.has(workspaceId)) recordsById.set(workspaceId, {
|
|
33455
33635
|
workspaceId,
|
|
33456
|
-
title: workspaceId
|
|
33457
|
-
sessionIds: [],
|
|
33458
|
-
archivedSessionIds: []
|
|
33636
|
+
title: workspaceId
|
|
33459
33637
|
});
|
|
33460
33638
|
}
|
|
33461
33639
|
const hidden = [...hiddenWorkspaceIds].reverse().flatMap((workspaceId) => {
|
|
@@ -36167,23 +36345,21 @@ window.__ModuleLoader__.load({
|
|
|
36167
36345
|
let userInteracting = false;
|
|
36168
36346
|
let userCommitPending = false;
|
|
36169
36347
|
let applying = false;
|
|
36170
|
-
let
|
|
36348
|
+
let lastRestore;
|
|
36171
36349
|
const scan = () => {
|
|
36172
36350
|
if (disposed || dom === void 0 || win === void 0) return;
|
|
36173
36351
|
const handle = findRightbarHandle(dom);
|
|
36174
|
-
if (handle === void 0)
|
|
36352
|
+
if (handle === void 0) {
|
|
36353
|
+
lastRestore = void 0;
|
|
36354
|
+
return;
|
|
36355
|
+
}
|
|
36175
36356
|
if (applying) return;
|
|
36176
36357
|
const share = readRightbarShare(handle, win);
|
|
36177
36358
|
if (share === void 0) return;
|
|
36178
|
-
if (pendingShare !== void 0) {
|
|
36179
|
-
const expectedShare = pendingShare;
|
|
36180
|
-
pendingShare = void 0;
|
|
36181
|
-
if (sharesMatch(share, expectedShare)) return;
|
|
36182
|
-
if (handle.style.left !== "") return;
|
|
36183
|
-
}
|
|
36184
36359
|
if (userCommitPending) {
|
|
36185
36360
|
userCommitPending = false;
|
|
36186
36361
|
desiredShare = share;
|
|
36362
|
+
lastRestore = void 0;
|
|
36187
36363
|
writeStoredShare(storage, share);
|
|
36188
36364
|
return;
|
|
36189
36365
|
}
|
|
@@ -36222,9 +36398,7 @@ window.__ModuleLoader__.load({
|
|
|
36222
36398
|
};
|
|
36223
36399
|
const onResize = () => {
|
|
36224
36400
|
if (disposed || win === void 0 || dom === void 0) return;
|
|
36225
|
-
|
|
36226
|
-
const savedShare = readStoredShare(storage);
|
|
36227
|
-
if (handle !== void 0 && savedShare !== void 0) applyShare(handle, savedShare, win);
|
|
36401
|
+
desiredShare = readStoredShare(storage) ?? desiredShare;
|
|
36228
36402
|
scheduleScan();
|
|
36229
36403
|
};
|
|
36230
36404
|
dom?.addEventListener("mousedown", onPointerStart, true);
|
|
@@ -36234,7 +36408,10 @@ window.__ModuleLoader__.load({
|
|
|
36234
36408
|
win?.addEventListener("resize", onResize);
|
|
36235
36409
|
scheduleScan();
|
|
36236
36410
|
return {
|
|
36237
|
-
refresh
|
|
36411
|
+
refresh() {
|
|
36412
|
+
lastRestore = void 0;
|
|
36413
|
+
scheduleScan();
|
|
36414
|
+
},
|
|
36238
36415
|
dispose() {
|
|
36239
36416
|
if (disposed) return;
|
|
36240
36417
|
disposed = true;
|
|
@@ -36248,10 +36425,15 @@ window.__ModuleLoader__.load({
|
|
|
36248
36425
|
};
|
|
36249
36426
|
function applyShare(handle, share, targetWindow) {
|
|
36250
36427
|
const containerWidth = resolveContainerWidth(handle, targetWindow);
|
|
36428
|
+
if (lastRestore?.handle === handle && Math.abs(lastRestore.containerWidth - containerWidth) < 1 && sharesMatch(lastRestore.share, share)) return;
|
|
36429
|
+
lastRestore = {
|
|
36430
|
+
handle,
|
|
36431
|
+
containerWidth,
|
|
36432
|
+
share
|
|
36433
|
+
};
|
|
36251
36434
|
const rightWidth = containerWidth * share;
|
|
36252
36435
|
const targetClientX = resolveContainerRect(handle, targetWindow.innerWidth).left + containerWidth - rightWidth;
|
|
36253
36436
|
applying = true;
|
|
36254
|
-
pendingShare = share;
|
|
36255
36437
|
try {
|
|
36256
36438
|
const nativeResizeDispatched = dispatchNativeResize(handle, targetWindow, targetClientX);
|
|
36257
36439
|
if (!nativeResizeDispatched && handle.matches("[data-side=\"rightbar\"]")) handle.style.left = `${Math.round(containerWidth - rightWidth)}px`;
|
|
@@ -36810,13 +36992,22 @@ window.__ModuleLoader__.load({
|
|
|
36810
36992
|
version: null,
|
|
36811
36993
|
command: null
|
|
36812
36994
|
}]);
|
|
36995
|
+
const [catalogFailed, setCatalogFailed] = (0, react.useState)(false);
|
|
36996
|
+
const [catalogRetry, setCatalogRetry] = (0, react.useState)(0);
|
|
36813
36997
|
const [open, setOpen] = (0, react.useState)(false);
|
|
36814
36998
|
const rootRef = (0, react.useRef)(null);
|
|
36815
36999
|
const locked = isSessionLocked(session);
|
|
36816
37000
|
useDismissOnOutsidePointer(rootRef, open, () => setOpen(false));
|
|
36817
37001
|
(0, react.useEffect)(() => {
|
|
36818
|
-
return watchAdapterCatalog(props.rpc, sessionId, (value) =>
|
|
36819
|
-
|
|
37002
|
+
return watchAdapterCatalog(props.rpc, sessionId, (value) => {
|
|
37003
|
+
setAgents(require_model_catalog_cache.adapterCatalogWithDsh(value));
|
|
37004
|
+
setCatalogFailed(false);
|
|
37005
|
+
}, () => setCatalogFailed(true));
|
|
37006
|
+
}, [
|
|
37007
|
+
props.rpc,
|
|
37008
|
+
sessionId,
|
|
37009
|
+
catalogRetry
|
|
37010
|
+
]);
|
|
36820
37011
|
(0, react.useEffect)(() => {
|
|
36821
37012
|
if (locked) setOpen(false);
|
|
36822
37013
|
}, [locked]);
|
|
@@ -36865,7 +37056,24 @@ window.__ModuleLoader__.load({
|
|
|
36865
37056
|
role: "menu",
|
|
36866
37057
|
"aria-label": t("cli.selectAgent"),
|
|
36867
37058
|
style: agentMenuStyle
|
|
36868
|
-
},
|
|
37059
|
+
}, catalogFailed && (0, react.createElement)("div", {
|
|
37060
|
+
role: "alert",
|
|
37061
|
+
style: {
|
|
37062
|
+
padding: 8,
|
|
37063
|
+
fontSize: require_theme.uiFontSize(13)
|
|
37064
|
+
}
|
|
37065
|
+
}, (0, react.createElement)("div", null, t("cli.catalogLoadFailed")), (0, react.createElement)("button", {
|
|
37066
|
+
type: "button",
|
|
37067
|
+
role: "menuitem",
|
|
37068
|
+
style: {
|
|
37069
|
+
...agentOptionStyle,
|
|
37070
|
+
minHeight: 30
|
|
37071
|
+
},
|
|
37072
|
+
onClick: () => {
|
|
37073
|
+
setCatalogFailed(false);
|
|
37074
|
+
setCatalogRetry((value) => value + 1);
|
|
37075
|
+
}
|
|
37076
|
+
}, t("cli.retryCatalog"))), ...agents.map((agent) => {
|
|
36869
37077
|
const selected = agent.id === selection.adapterId;
|
|
36870
37078
|
const available = agent.installed && agent.enabled;
|
|
36871
37079
|
const icon = require_model_catalog_cache.providerIconUrl(agent.id);
|
|
@@ -38060,6 +38268,7 @@ window.__ModuleLoader__.load({
|
|
|
38060
38268
|
let visibilityDom;
|
|
38061
38269
|
let rightbarDom;
|
|
38062
38270
|
let disposeAdapterRefresh;
|
|
38271
|
+
let disposeVisibilityRefresh;
|
|
38063
38272
|
let disposeSubscription;
|
|
38064
38273
|
let disposeQuickPhrases;
|
|
38065
38274
|
let disposeSkillCommand;
|
|
@@ -38088,6 +38297,7 @@ window.__ModuleLoader__.load({
|
|
|
38088
38297
|
if (visibilityDom === void 0) {
|
|
38089
38298
|
visibilityDom = startWorkspaceSessionVisibilityDom({
|
|
38090
38299
|
remote: context.services.remote,
|
|
38300
|
+
readNativeWorkspaceSnapshot: () => require_native_workspace_store.readNativeWorkspaceSnapshot(context.services.uiContext),
|
|
38091
38301
|
hiddenWorkspaceIds,
|
|
38092
38302
|
locale: context.services.locale,
|
|
38093
38303
|
onHiddenWorkspaceIdsChange: async (ids) => {
|
|
@@ -38098,11 +38308,14 @@ window.__ModuleLoader__.load({
|
|
|
38098
38308
|
}]);
|
|
38099
38309
|
}
|
|
38100
38310
|
});
|
|
38311
|
+
disposeVisibilityRefresh = require_native_workspace_store.readNativeWorkspaceListStore(context.services.uiContext)?.subscribe(() => visibilityDom?.refresh());
|
|
38101
38312
|
return;
|
|
38102
38313
|
}
|
|
38103
38314
|
visibilityDom.setHiddenWorkspaceIds(hiddenWorkspaceIds);
|
|
38104
38315
|
};
|
|
38105
38316
|
const disableWorkspaceVisibility = () => {
|
|
38317
|
+
disposeVisibilityRefresh?.();
|
|
38318
|
+
disposeVisibilityRefresh = void 0;
|
|
38106
38319
|
visibilityDom?.dispose();
|
|
38107
38320
|
visibilityDom = void 0;
|
|
38108
38321
|
};
|
|
@@ -39344,6 +39557,167 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
39344
39557
|
`[${MOBILE_SETTINGS_MODAL_ATTRIBUTE}="on"]>div{box-sizing:border-box!important;min-width:0!important;flex:1 1 auto!important;width:auto!important}`,
|
|
39345
39558
|
`[${MOBILE_SETTINGS_MODAL_ATTRIBUTE}="on"]>div>div:last-child{box-sizing:border-box!important;min-width:0!important;width:100%!important;padding-left:8px!important;padding-right:8px!important}`
|
|
39346
39559
|
].join("");
|
|
39560
|
+
//#endregion
|
|
39561
|
+
//#region src/client/mobile-team-panel-dom.ts
|
|
39562
|
+
const PANEL = "[data-team-panel][role=\"dialog\"]";
|
|
39563
|
+
const MOBILE = "data-codingns-mobile-team";
|
|
39564
|
+
const HEADER = "data-codingns-team-header";
|
|
39565
|
+
/** Adapt the native portal while DSH retains roster, task, and dismissal ownership. */
|
|
39566
|
+
function startMobileTeamPanelDom(options = {}) {
|
|
39567
|
+
const dom = options.document ?? (typeof document === "undefined" ? void 0 : document);
|
|
39568
|
+
const win = options.window ?? (typeof window === "undefined" ? void 0 : window);
|
|
39569
|
+
const Observer = options.MutationObserver ?? (typeof MutationObserver === "undefined" ? void 0 : MutationObserver);
|
|
39570
|
+
const t = require_transport.resolveCodingNsTranslator(options.locale);
|
|
39571
|
+
const headers = /* @__PURE__ */ new Map();
|
|
39572
|
+
let style;
|
|
39573
|
+
let queued = false;
|
|
39574
|
+
let disposed = false;
|
|
39575
|
+
const remove = (panel, header) => {
|
|
39576
|
+
header.remove();
|
|
39577
|
+
panel.removeAttribute(MOBILE);
|
|
39578
|
+
headers.delete(panel);
|
|
39579
|
+
};
|
|
39580
|
+
const refresh = () => {
|
|
39581
|
+
if (disposed || !dom) return;
|
|
39582
|
+
const max = typeof options.mobileViewportMaxPx === "function" ? options.mobileViewportMaxPx() : options.mobileViewportMaxPx ?? 1024;
|
|
39583
|
+
const width = win?.innerWidth ?? 0;
|
|
39584
|
+
const panels = new Set(Number.isFinite(width) && width > 0 && Number.isFinite(max) && width <= max ? dom.querySelectorAll(PANEL) : []);
|
|
39585
|
+
for (const [panel, header] of headers) if (!panels.has(panel)) remove(panel, header);
|
|
39586
|
+
if (!panels.size) {
|
|
39587
|
+
style?.remove();
|
|
39588
|
+
style = void 0;
|
|
39589
|
+
return;
|
|
39590
|
+
}
|
|
39591
|
+
if (!style) {
|
|
39592
|
+
style = dom.createElement("style");
|
|
39593
|
+
style.dataset.plugin = "codingns4dsh";
|
|
39594
|
+
style.dataset.pluginCss = "codingns4dsh-mobile-team-panel";
|
|
39595
|
+
style.textContent = MOBILE_TEAM_PANEL_STYLES;
|
|
39596
|
+
dom.head.appendChild(style);
|
|
39597
|
+
}
|
|
39598
|
+
for (const panel of panels) {
|
|
39599
|
+
panel.setAttribute(MOBILE, "on");
|
|
39600
|
+
let header = headers.get(panel);
|
|
39601
|
+
if (!header) {
|
|
39602
|
+
header = createHeader(dom, panel);
|
|
39603
|
+
panel.insertBefore(header, panel.firstChild);
|
|
39604
|
+
headers.set(panel, header);
|
|
39605
|
+
}
|
|
39606
|
+
const title = panel.getAttribute("aria-label") || t("mobile.team.title");
|
|
39607
|
+
const heading = header.firstElementChild;
|
|
39608
|
+
if (heading.textContent !== title) heading.textContent = title;
|
|
39609
|
+
const button = header.lastElementChild;
|
|
39610
|
+
const label = t("mobile.team.close");
|
|
39611
|
+
if (button.getAttribute("aria-label") !== label) button.setAttribute("aria-label", label);
|
|
39612
|
+
if (button.getAttribute("title") !== label) button.setAttribute("title", label);
|
|
39613
|
+
}
|
|
39614
|
+
};
|
|
39615
|
+
const schedule = () => {
|
|
39616
|
+
if (disposed || queued) return;
|
|
39617
|
+
queued = true;
|
|
39618
|
+
queueMicrotask(() => {
|
|
39619
|
+
queued = false;
|
|
39620
|
+
refresh();
|
|
39621
|
+
});
|
|
39622
|
+
};
|
|
39623
|
+
const observer = dom && Observer ? new Observer(schedule) : void 0;
|
|
39624
|
+
if (dom?.documentElement) observer?.observe(dom.documentElement, {
|
|
39625
|
+
childList: true,
|
|
39626
|
+
subtree: true,
|
|
39627
|
+
attributes: true,
|
|
39628
|
+
attributeFilter: ["data-team-panel", "aria-label"]
|
|
39629
|
+
});
|
|
39630
|
+
win?.addEventListener("resize", schedule);
|
|
39631
|
+
const unsubscribeLocale = options.locale?.subscribe(schedule);
|
|
39632
|
+
refresh();
|
|
39633
|
+
return {
|
|
39634
|
+
refresh,
|
|
39635
|
+
dispose() {
|
|
39636
|
+
if (disposed) return;
|
|
39637
|
+
disposed = true;
|
|
39638
|
+
observer?.disconnect();
|
|
39639
|
+
win?.removeEventListener("resize", schedule);
|
|
39640
|
+
unsubscribeLocale?.();
|
|
39641
|
+
for (const [panel, header] of headers) remove(panel, header);
|
|
39642
|
+
style?.remove();
|
|
39643
|
+
style = void 0;
|
|
39644
|
+
}
|
|
39645
|
+
};
|
|
39646
|
+
}
|
|
39647
|
+
function createHeader(dom, panel) {
|
|
39648
|
+
const header = dom.createElement("div");
|
|
39649
|
+
header.setAttribute(HEADER, "");
|
|
39650
|
+
const button = dom.createElement("button");
|
|
39651
|
+
button.type = "button";
|
|
39652
|
+
const svg = dom.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
39653
|
+
svg.setAttribute("viewBox", "0 0 24 24");
|
|
39654
|
+
svg.setAttribute("width", "20");
|
|
39655
|
+
svg.setAttribute("height", "20");
|
|
39656
|
+
svg.setAttribute("aria-hidden", "true");
|
|
39657
|
+
const close = dom.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
39658
|
+
close.setAttribute("d", "M6 6l12 12m0-12L6 18");
|
|
39659
|
+
close.setAttribute("fill", "none");
|
|
39660
|
+
close.setAttribute("stroke", "currentColor");
|
|
39661
|
+
close.setAttribute("stroke-width", "2");
|
|
39662
|
+
close.setAttribute("stroke-linecap", "round");
|
|
39663
|
+
svg.appendChild(close);
|
|
39664
|
+
button.appendChild(svg);
|
|
39665
|
+
button.addEventListener("click", (event) => {
|
|
39666
|
+
event.stopPropagation();
|
|
39667
|
+
const Keyboard = dom.defaultView?.KeyboardEvent;
|
|
39668
|
+
if (!Keyboard) return;
|
|
39669
|
+
button.focus({ preventScroll: true });
|
|
39670
|
+
panel.dispatchEvent(new Keyboard("keydown", {
|
|
39671
|
+
key: "Escape",
|
|
39672
|
+
bubbles: true,
|
|
39673
|
+
cancelable: true
|
|
39674
|
+
}));
|
|
39675
|
+
});
|
|
39676
|
+
header.append(dom.createElement("strong"), button);
|
|
39677
|
+
return header;
|
|
39678
|
+
}
|
|
39679
|
+
const SCOPE = `[${MOBILE}="on"]`;
|
|
39680
|
+
const MOBILE_TEAM_PANEL_STYLES = `
|
|
39681
|
+
${SCOPE} {
|
|
39682
|
+
box-sizing:border-box!important;
|
|
39683
|
+
top:max(8px, env(safe-area-inset-top, 0px))!important;
|
|
39684
|
+
left:max(8px, env(safe-area-inset-left, 0px))!important;
|
|
39685
|
+
right:max(8px, env(safe-area-inset-right, 0px))!important;
|
|
39686
|
+
bottom:auto!important; width:auto!important; max-width:none!important;
|
|
39687
|
+
height:calc(100vh - 16px)!important;
|
|
39688
|
+
height:calc(100dvh - max(8px, env(safe-area-inset-top, 0px)) - max(8px, env(safe-area-inset-bottom, 0px)))!important;
|
|
39689
|
+
max-height:none!important; padding:0!important; visibility:visible!important; overflow:hidden!important;
|
|
39690
|
+
}
|
|
39691
|
+
${SCOPE}>[${HEADER}] {
|
|
39692
|
+
flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:6px 8px 6px 16px;
|
|
39693
|
+
border-bottom:1px solid var(--dsw-alias-border-l2, #ddd); color:var(--dsw-alias-label-primary, CanvasText);
|
|
39694
|
+
}
|
|
39695
|
+
${SCOPE}>[${HEADER}] strong { min-width:0; font-size:15px; overflow-wrap:anywhere; }
|
|
39696
|
+
${SCOPE}>[${HEADER}] button {
|
|
39697
|
+
display:inline-flex; align-items:center; justify-content:center; flex:0 0 44px; width:44px; height:44px;
|
|
39698
|
+
padding:0; border:0; border-radius:10px; color:var(--dsw-alias-label-primary, CanvasText); background:transparent;
|
|
39699
|
+
cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent;
|
|
39700
|
+
}
|
|
39701
|
+
${SCOPE}>[${HEADER}] button:hover { background:var(--dsw-alias-interactive-bg-hover, rgba(127,127,127,.1)); }
|
|
39702
|
+
${SCOPE}>[${HEADER}] button:focus-visible { outline:2px solid var(--dsw-focus-ring-color, #1677ff); outline-offset:-2px; }
|
|
39703
|
+
${SCOPE}>[${HEADER}] svg { display:block; pointer-events:none; }
|
|
39704
|
+
${SCOPE}>div:not([${HEADER}]) {
|
|
39705
|
+
flex:1 1 auto!important; min-height:0!important; min-width:0; padding:0 12px 12px!important;
|
|
39706
|
+
overflow-y:auto!important; overscroll-behavior:contain; scrollbar-gutter:auto!important; -webkit-overflow-scrolling:touch;
|
|
39707
|
+
}
|
|
39708
|
+
${SCOPE} section:first-of-type>div { grid-template-columns:repeat(auto-fit, minmax(min(150px, 100%), 1fr))!important; }
|
|
39709
|
+
${SCOPE} section:first-of-type button { min-height:64px; padding:10px!important; touch-action:manipulation; }
|
|
39710
|
+
${SCOPE} section:first-of-type button>span:last-child>span { flex-wrap:wrap; }
|
|
39711
|
+
${SCOPE} section:first-of-type button>span:last-child>span>span:first-child { white-space:normal!important; overflow-wrap:anywhere; }
|
|
39712
|
+
${SCOPE} article { min-width:0; padding:12px!important; }
|
|
39713
|
+
${SCOPE} article>div:first-child { align-items:flex-start!important; }
|
|
39714
|
+
${SCOPE} article>div:first-child strong { flex:1; min-width:0; font-size:14px!important; line-height:1.45; overflow-wrap:anywhere; }
|
|
39715
|
+
${SCOPE} article>div:first-child>span { flex:0 0 auto; white-space:nowrap; }
|
|
39716
|
+
${SCOPE} article p { font-size:13px!important; line-height:1.55!important; overflow-wrap:anywhere; }
|
|
39717
|
+
${SCOPE} article>div:last-child { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; }
|
|
39718
|
+
${SCOPE} article>div:last-child>span { min-width:0; max-width:100%; margin-right:0!important; overflow-wrap:anywhere; }
|
|
39719
|
+
${SCOPE} article>div:last-child>button { float:none!important; order:1; min-height:36px; margin-left:auto!important; padding:6px!important; touch-action:manipulation; }
|
|
39720
|
+
`;
|
|
39347
39721
|
//#endregion
|
|
39348
39722
|
//#region src/client/features/mobile-access-panel.ts
|
|
39349
39723
|
/**
|
|
@@ -39821,17 +40195,23 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
39821
40195
|
mobileViewportMaxPx: () => require_native_workspace_store.normalizeMobileAccessSettings(context.services.settings.getSnapshot().value?.mobileAccess).mobileViewportMaxPx
|
|
39822
40196
|
});
|
|
39823
40197
|
const rightbarTabs = startMobileRightbarTabsDom({ mobileViewportMaxPx: () => require_native_workspace_store.normalizeMobileAccessSettings(context.services.settings.getSnapshot().value?.mobileAccess).mobileViewportMaxPx });
|
|
40198
|
+
const teamPanel = startMobileTeamPanelDom({
|
|
40199
|
+
locale: context.services.locale,
|
|
40200
|
+
mobileViewportMaxPx: () => require_native_workspace_store.normalizeMobileAccessSettings(context.services.settings.getSnapshot().value?.mobileAccess).mobileViewportMaxPx
|
|
40201
|
+
});
|
|
39824
40202
|
context.resources.add(context.services.settings.subscribe(() => {
|
|
39825
40203
|
controller.refresh();
|
|
39826
40204
|
gestures.refresh();
|
|
39827
40205
|
settingsModal.refresh();
|
|
39828
40206
|
rightbarTabs.refresh();
|
|
40207
|
+
teamPanel.refresh();
|
|
39829
40208
|
}));
|
|
39830
40209
|
context.resources.add(() => {
|
|
39831
40210
|
controller.dispose();
|
|
39832
40211
|
gestures.dispose();
|
|
39833
40212
|
settingsModal.dispose();
|
|
39834
40213
|
rightbarTabs.dispose();
|
|
40214
|
+
teamPanel.dispose();
|
|
39835
40215
|
});
|
|
39836
40216
|
},
|
|
39837
40217
|
settingsPanel: MobileAccessPanel
|
|
@@ -41171,6 +41551,10 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41171
41551
|
* 内联样式只负责尺寸与排版。取值全部来自 DSH 真实令牌,与内置组件同一套观感。
|
|
41172
41552
|
*/
|
|
41173
41553
|
const gitPanelClass = {
|
|
41554
|
+
panel: "codingns4dsh-git-panel",
|
|
41555
|
+
contentGrid: "codingns4dsh-git-content-grid",
|
|
41556
|
+
column: "codingns4dsh-git-column",
|
|
41557
|
+
columnSwitch: "codingns4dsh-git-column-switch",
|
|
41174
41558
|
action: "codingns4dsh-git-action",
|
|
41175
41559
|
actionDanger: "codingns4dsh-git-action-danger",
|
|
41176
41560
|
button: "codingns4dsh-git-button",
|
|
@@ -41205,6 +41589,16 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41205
41589
|
const active = "background:var(--dsw-alias-interactive-bg-active)";
|
|
41206
41590
|
const disabled = "opacity:.4;cursor:not-allowed";
|
|
41207
41591
|
const gitPanelCss = `
|
|
41592
|
+
.${gitPanelClass.panel}{container-type:inline-size;container-name:codingns4dsh-git;scrollbar-gutter:stable}
|
|
41593
|
+
.${gitPanelClass.contentGrid}{grid-template-columns:minmax(0,1fr)}
|
|
41594
|
+
.${gitPanelClass.column},.${gitPanelClass.columnSwitch}{display:flex}
|
|
41595
|
+
.${gitPanelClass.contentGrid}[data-active-column='files']>[data-git-column='history'],.${gitPanelClass.contentGrid}[data-active-column='history']>[data-git-column='files']{display:none}
|
|
41596
|
+
/* Column visibility depends on the scrollport width, never on the rendered grid tracks. */
|
|
41597
|
+
@container codingns4dsh-git (min-width:612px){
|
|
41598
|
+
.${gitPanelClass.columnSwitch}{display:none}
|
|
41599
|
+
.${gitPanelClass.contentGrid}{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
41600
|
+
.${gitPanelClass.contentGrid}[data-active-column]>[data-git-column]{display:flex}
|
|
41601
|
+
}
|
|
41208
41602
|
.${gitPanelClass.action}{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0;border:0;border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-secondary);background:transparent;cursor:pointer;font-size:16px;line-height:1}
|
|
41209
41603
|
.${gitPanelClass.action}:hover:not(:disabled){${hover};color:var(--dsw-alias-label-primary)}
|
|
41210
41604
|
.${gitPanelClass.action}:active:not(:disabled){${active}}
|
|
@@ -41419,12 +41813,10 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41419
41813
|
const [toast, setToast] = (0, react.useState)(null);
|
|
41420
41814
|
const [diffView, setDiffView] = (0, react.useState)(null);
|
|
41421
41815
|
const [fileDiff, setFileDiff] = (0, react.useState)(null);
|
|
41422
|
-
const [singleColumn, setSingleColumn] = (0, react.useState)(false);
|
|
41423
41816
|
const [activeColumn, setActiveColumn] = (0, react.useState)("files");
|
|
41424
41817
|
const [historyScope, setHistoryScope] = (0, react.useState)("all");
|
|
41425
41818
|
const [historyTotalCount, setHistoryTotalCount] = (0, react.useState)(0);
|
|
41426
41819
|
const [historyLoadingMore, setHistoryLoadingMore] = (0, react.useState)(false);
|
|
41427
|
-
const contentGridRef = (0, react.useRef)(null);
|
|
41428
41820
|
const historyExpanded = (0, react.useRef)(false);
|
|
41429
41821
|
const gridVisible = status !== null && status.snapshot.enabled !== false;
|
|
41430
41822
|
(0, react.useEffect)(() => {
|
|
@@ -41432,25 +41824,6 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41432
41824
|
const timer = globalThis.setTimeout(() => setToast(null), 3200);
|
|
41433
41825
|
return () => globalThis.clearTimeout(timer);
|
|
41434
41826
|
}, [toast]);
|
|
41435
|
-
(0, react.useEffect)(() => {
|
|
41436
|
-
const element = contentGridRef.current;
|
|
41437
|
-
if (element === null) {
|
|
41438
|
-
setSingleColumn(false);
|
|
41439
|
-
return;
|
|
41440
|
-
}
|
|
41441
|
-
const update = () => {
|
|
41442
|
-
const tracks = getComputedStyle(element).gridTemplateColumns.split(" ").filter((track) => track !== "");
|
|
41443
|
-
setSingleColumn(tracks.length <= 1);
|
|
41444
|
-
};
|
|
41445
|
-
update();
|
|
41446
|
-
if (typeof ResizeObserver === "undefined") {
|
|
41447
|
-
window.addEventListener("resize", update);
|
|
41448
|
-
return () => window.removeEventListener("resize", update);
|
|
41449
|
-
}
|
|
41450
|
-
const observer = new ResizeObserver(update);
|
|
41451
|
-
observer.observe(element);
|
|
41452
|
-
return () => observer.disconnect();
|
|
41453
|
-
}, [gridVisible]);
|
|
41454
41827
|
const notify = (kind, message) => setToast({
|
|
41455
41828
|
kind,
|
|
41456
41829
|
message
|
|
@@ -41692,10 +42065,14 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41692
42065
|
const discardAll = () => {
|
|
41693
42066
|
run("git/discard", { targets: changes.map((item) => item.path) });
|
|
41694
42067
|
};
|
|
41695
|
-
|
|
42068
|
+
const panel = (0, react.createElement)("section", {
|
|
42069
|
+
className: gitPanelClass.panel,
|
|
41696
42070
|
style: panelStyle,
|
|
41697
42071
|
"data-git-management-panel": "true"
|
|
41698
|
-
}, (0, react.createElement)("header", { style: headerStyle },
|
|
42072
|
+
}, (0, react.createElement)("header", { style: headerStyle }, gridVisible ? (0, react.createElement)("div", {
|
|
42073
|
+
className: gitPanelClass.columnSwitch,
|
|
42074
|
+
style: columnSwitchStyle
|
|
42075
|
+
}, (0, react.createElement)(SegmentedControl, {
|
|
41699
42076
|
id: "codingns4dsh-git-view",
|
|
41700
42077
|
value: activeColumn,
|
|
41701
42078
|
onChange: setActiveColumn,
|
|
@@ -41747,20 +42124,15 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41747
42124
|
unstaged: unstaged.length,
|
|
41748
42125
|
total: historyTotalCount,
|
|
41749
42126
|
scope: historyScope === "all" ? t("git.allBranches") : t("git.currentBranch")
|
|
41750
|
-
})) : null,
|
|
41751
|
-
|
|
41752
|
-
|
|
41753
|
-
|
|
41754
|
-
}
|
|
41755
|
-
|
|
41756
|
-
|
|
41757
|
-
|
|
41758
|
-
|
|
41759
|
-
t
|
|
41760
|
-
}) : null, status !== null && status.snapshot.enabled !== false ? (0, react.createElement)("div", {
|
|
41761
|
-
ref: contentGridRef,
|
|
41762
|
-
style: contentGridStyle
|
|
41763
|
-
}, singleColumn && activeColumn !== "files" ? null : (0, react.createElement)("div", { style: columnStyle }, (0, react.createElement)("section", { style: commitSectionStyle }, (0, react.createElement)("div", { style: sectionHeaderStyle }, (0, react.createElement)("strong", void 0, t("git.commitChanges")), (0, react.createElement)("span", { style: mutedStyle }, staged.length === 0 ? t("git.stagingEmpty") : t("git.stagedCount", { count: staged.length }))), (0, react.createElement)("div", { style: commitEditorRowStyle }, (0, react.createElement)("textarea", {
|
|
42127
|
+
})) : null, status !== null && status.snapshot.enabled !== false ? (0, react.createElement)("div", {
|
|
42128
|
+
className: gitPanelClass.contentGrid,
|
|
42129
|
+
style: contentGridStyle,
|
|
42130
|
+
"data-active-column": activeColumn
|
|
42131
|
+
}, (0, react.createElement)("div", {
|
|
42132
|
+
className: gitPanelClass.column,
|
|
42133
|
+
style: columnStyle,
|
|
42134
|
+
"data-git-column": "files"
|
|
42135
|
+
}, (0, react.createElement)("section", { style: commitSectionStyle }, (0, react.createElement)("div", { style: sectionHeaderStyle }, (0, react.createElement)("strong", void 0, t("git.commitChanges")), (0, react.createElement)("span", { style: mutedStyle }, staged.length === 0 ? t("git.stagingEmpty") : t("git.stagedCount", { count: staged.length }))), (0, react.createElement)("div", { style: commitEditorRowStyle }, (0, react.createElement)("textarea", {
|
|
41764
42136
|
value: subject,
|
|
41765
42137
|
disabled: busy || workspaceId === void 0,
|
|
41766
42138
|
className: gitPanelClass.field,
|
|
@@ -41811,7 +42183,11 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41811
42183
|
onBatchAction: (action, paths) => void run(`git/${action}`, { targets: paths }),
|
|
41812
42184
|
onBulkAction: () => void run("git/stage", { targets: unstaged.map((item) => item.path) }),
|
|
41813
42185
|
t
|
|
41814
|
-
}) : null),
|
|
42186
|
+
}) : null), (0, react.createElement)("div", {
|
|
42187
|
+
className: gitPanelClass.column,
|
|
42188
|
+
style: columnStyle,
|
|
42189
|
+
"data-git-column": "history"
|
|
42190
|
+
}, (0, react.createElement)(HistorySection, {
|
|
41815
42191
|
history,
|
|
41816
42192
|
totalCount: historyTotalCount,
|
|
41817
42193
|
hasMore: history.length < historyTotalCount,
|
|
@@ -41832,6 +42208,17 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
41832
42208
|
onUndo: () => runGitOperation("undo"),
|
|
41833
42209
|
t
|
|
41834
42210
|
}))) : null);
|
|
42211
|
+
return (0, react.createElement)(react.Fragment, void 0, panel, diffView !== null ? (0, react.createElement)(DiffViewer, {
|
|
42212
|
+
diff: diffView,
|
|
42213
|
+
onClose: () => setDiffView(null),
|
|
42214
|
+
t
|
|
42215
|
+
}) : null, fileDiff !== null ? (0, react.createElement)(FileDiffViewer, {
|
|
42216
|
+
path: fileDiff.path,
|
|
42217
|
+
staged: fileDiff.staged,
|
|
42218
|
+
diff: fileDiff.diff,
|
|
42219
|
+
onClose: () => setFileDiff(null),
|
|
42220
|
+
t
|
|
42221
|
+
}) : null);
|
|
41835
42222
|
}
|
|
41836
42223
|
function ChangeSection({ title, staged, items, busy, onOpenDiff, onAction, onBatchAction, onBulkAction, t }) {
|
|
41837
42224
|
const [hoveredPath, setHoveredPath] = (0, react.useState)(null);
|
|
@@ -43042,7 +43429,8 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
43042
43429
|
display: "flex",
|
|
43043
43430
|
flexDirection: "column",
|
|
43044
43431
|
gap: 12,
|
|
43045
|
-
|
|
43432
|
+
height: "100%",
|
|
43433
|
+
minHeight: 0,
|
|
43046
43434
|
padding: "12px 14px 20px",
|
|
43047
43435
|
overflow: "auto",
|
|
43048
43436
|
color: require_theme.dshThemeColor.labelPrimary
|
|
@@ -43067,7 +43455,6 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
43067
43455
|
gap: 4
|
|
43068
43456
|
};
|
|
43069
43457
|
const columnSwitchStyle = {
|
|
43070
|
-
display: "flex",
|
|
43071
43458
|
alignItems: "center",
|
|
43072
43459
|
justifyContent: "center",
|
|
43073
43460
|
width: "100%",
|
|
@@ -43079,12 +43466,10 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
43079
43466
|
};
|
|
43080
43467
|
const contentGridStyle = {
|
|
43081
43468
|
display: "grid",
|
|
43082
|
-
gridTemplateColumns: "repeat(auto-fit, minmax(300px, 1fr))",
|
|
43083
43469
|
alignItems: "start",
|
|
43084
43470
|
gap: 12
|
|
43085
43471
|
};
|
|
43086
43472
|
const columnStyle = {
|
|
43087
|
-
display: "flex",
|
|
43088
43473
|
flexDirection: "column",
|
|
43089
43474
|
gap: 12,
|
|
43090
43475
|
minWidth: 0
|
|
@@ -45469,12 +45854,15 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
45469
45854
|
}
|
|
45470
45855
|
return saved;
|
|
45471
45856
|
}
|
|
45472
|
-
async open(id) {
|
|
45857
|
+
async open(id, browserStorage = true) {
|
|
45473
45858
|
const closing = this.close();
|
|
45474
45859
|
const generation = this.generation;
|
|
45475
45860
|
await closing;
|
|
45476
45861
|
if (generation !== this.generation) return void 0;
|
|
45477
|
-
const result = await this.call("launch", {
|
|
45862
|
+
const result = await this.call("launch", {
|
|
45863
|
+
id,
|
|
45864
|
+
...browserStorage ? { browserStorage: true } : {}
|
|
45865
|
+
});
|
|
45478
45866
|
if (generation !== this.generation) {
|
|
45479
45867
|
if (result.launchId) await this.call("close", { id: result.launchId });
|
|
45480
45868
|
return;
|
|
@@ -56890,6 +57278,169 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
56890
57278
|
}));
|
|
56891
57279
|
}
|
|
56892
57280
|
//#endregion
|
|
57281
|
+
//#region src/shared/quick-app-browser-storage.ts
|
|
57282
|
+
const QUICK_APP_STORAGE_PROTOCOL = "codingns.quick-app-storage.v1";
|
|
57283
|
+
const QUICK_APP_STORAGE_LIMITS = Object.freeze({
|
|
57284
|
+
bytes: 2097152,
|
|
57285
|
+
keys: 1024,
|
|
57286
|
+
pending: 64,
|
|
57287
|
+
timeoutMs: 1e4
|
|
57288
|
+
});
|
|
57289
|
+
function validateQuickAppStorageEntries(value) {
|
|
57290
|
+
if (!Array.isArray(value)) throw new DOMException("Invalid application storage data.", "DataError");
|
|
57291
|
+
if (value.length > QUICK_APP_STORAGE_LIMITS.keys) throw new DOMException("Application storage quota exceeded.", "QuotaExceededError");
|
|
57292
|
+
if (Array.from(value).some((entry) => !Array.isArray(entry) || entry.length !== 2 || Array.from(entry).some((part) => typeof part !== "string")) || new Set(value.map((entry) => entry[0])).size !== value.length) throw new DOMException("Invalid application storage data.", "DataError");
|
|
57293
|
+
if (JSON.stringify(value).length * 2 > QUICK_APP_STORAGE_LIMITS.bytes) throw new DOMException("Application storage quota exceeded.", "QuotaExceededError");
|
|
57294
|
+
}
|
|
57295
|
+
function isQuickAppStorageRequest(value) {
|
|
57296
|
+
if (!value || typeof value !== "object") return false;
|
|
57297
|
+
const request = value;
|
|
57298
|
+
if (Object.keys(request).some((key) => ![
|
|
57299
|
+
"id",
|
|
57300
|
+
"area",
|
|
57301
|
+
"operation",
|
|
57302
|
+
"key",
|
|
57303
|
+
"value"
|
|
57304
|
+
].includes(key)) || !Number.isSafeInteger(request.id) || Number(request.id) < 1 || request.area !== "local" && request.area !== "session" || typeof request.operation !== "string") return false;
|
|
57305
|
+
if (request.operation === "setItem") return typeof request.key === "string" && typeof request.value === "string" && (request.key.length + request.value.length) * 2 <= QUICK_APP_STORAGE_LIMITS.bytes;
|
|
57306
|
+
if (request.operation === "getItem" || request.operation === "removeItem") return typeof request.key === "string" && request.key.length * 2 <= QUICK_APP_STORAGE_LIMITS.bytes && request.value === void 0;
|
|
57307
|
+
return [
|
|
57308
|
+
"clear",
|
|
57309
|
+
"keys",
|
|
57310
|
+
"flush"
|
|
57311
|
+
].includes(request.operation) && request.key === void 0 && request.value === void 0;
|
|
57312
|
+
}
|
|
57313
|
+
//#endregion
|
|
57314
|
+
//#region src/client/quick-apps/browser-storage.ts
|
|
57315
|
+
function storageFailure(error) {
|
|
57316
|
+
return {
|
|
57317
|
+
name: error instanceof Error ? error.name : "UnknownError",
|
|
57318
|
+
message: error instanceof Error ? error.message : "Application storage failed."
|
|
57319
|
+
};
|
|
57320
|
+
}
|
|
57321
|
+
/** Only this object chooses the namespace; requests cannot provide storage keys or identities. */
|
|
57322
|
+
function createQuickAppBrowserStore(scope, resolve) {
|
|
57323
|
+
const key = scope;
|
|
57324
|
+
if (!key.startsWith("codingns.quickApps.storage.v1:") || key.length > 8192) throw new DOMException("Invalid application storage scope.", "SecurityError");
|
|
57325
|
+
const read = (area) => {
|
|
57326
|
+
const text = resolve(area).getItem(key);
|
|
57327
|
+
if (text !== null && text.length * 2 > QUICK_APP_STORAGE_LIMITS.bytes) throw new DOMException("Application storage quota exceeded.", "QuotaExceededError");
|
|
57328
|
+
let entries;
|
|
57329
|
+
try {
|
|
57330
|
+
entries = text === null ? [] : JSON.parse(text);
|
|
57331
|
+
} catch {
|
|
57332
|
+
throw new DOMException("Application storage is not valid JSON.", "DataError");
|
|
57333
|
+
}
|
|
57334
|
+
validateQuickAppStorageEntries(entries);
|
|
57335
|
+
return entries;
|
|
57336
|
+
};
|
|
57337
|
+
return {
|
|
57338
|
+
read,
|
|
57339
|
+
execute(request) {
|
|
57340
|
+
if (!isQuickAppStorageRequest(request)) throw new DOMException("Invalid application storage request.", "SecurityError");
|
|
57341
|
+
const store = resolve(request.area);
|
|
57342
|
+
const entries = new Map(request.operation === "clear" ? [] : read(request.area));
|
|
57343
|
+
let value = null;
|
|
57344
|
+
switch (request.operation) {
|
|
57345
|
+
case "getItem":
|
|
57346
|
+
value = entries.get(request.key) ?? null;
|
|
57347
|
+
break;
|
|
57348
|
+
case "setItem":
|
|
57349
|
+
entries.set(request.key, request.value);
|
|
57350
|
+
break;
|
|
57351
|
+
case "removeItem":
|
|
57352
|
+
entries.delete(request.key);
|
|
57353
|
+
break;
|
|
57354
|
+
case "keys": value = [...entries.keys()];
|
|
57355
|
+
}
|
|
57356
|
+
const snapshot = [...entries];
|
|
57357
|
+
validateQuickAppStorageEntries(snapshot);
|
|
57358
|
+
if (request.operation === "clear") store.removeItem(key);
|
|
57359
|
+
else if (request.operation === "setItem" || request.operation === "removeItem") store.setItem(key, JSON.stringify(snapshot));
|
|
57360
|
+
return {
|
|
57361
|
+
id: request.id,
|
|
57362
|
+
value,
|
|
57363
|
+
entries: snapshot
|
|
57364
|
+
};
|
|
57365
|
+
}
|
|
57366
|
+
};
|
|
57367
|
+
}
|
|
57368
|
+
/** Exact window + launch token authenticate the initial transfer; Origin:null alone never does. */
|
|
57369
|
+
function attachQuickAppStorageBroker(options) {
|
|
57370
|
+
const { owner, token, expiresAt, onError } = options;
|
|
57371
|
+
const store = createQuickAppBrowserStore(options.scope, (area) => area === "local" ? owner.localStorage : owner.sessionStorage);
|
|
57372
|
+
let active = true;
|
|
57373
|
+
let port;
|
|
57374
|
+
let documentId;
|
|
57375
|
+
const shutdown = () => {
|
|
57376
|
+
port?.postMessage({
|
|
57377
|
+
type: "closed",
|
|
57378
|
+
error: {
|
|
57379
|
+
name: "SecurityError",
|
|
57380
|
+
message: "The application storage channel was closed."
|
|
57381
|
+
}
|
|
57382
|
+
});
|
|
57383
|
+
port?.close();
|
|
57384
|
+
port = void 0;
|
|
57385
|
+
};
|
|
57386
|
+
const connect = (event) => {
|
|
57387
|
+
const frameWindow = options.frame()?.contentWindow;
|
|
57388
|
+
const data = event.data;
|
|
57389
|
+
if (!active || Date.now() >= expiresAt || !frameWindow || event.source !== frameWindow || event.origin !== "null" || !data || data.type !== "codingns.quick-app-storage.v1" || data.token !== token || typeof data.documentId !== "string" || !/^[a-f0-9]{32}$/u.test(data.documentId) || documentId === data.documentId) return;
|
|
57390
|
+
shutdown();
|
|
57391
|
+
documentId = data.documentId;
|
|
57392
|
+
const channel = new MessageChannel();
|
|
57393
|
+
port = channel.port1;
|
|
57394
|
+
const current = port;
|
|
57395
|
+
const snapshot = {};
|
|
57396
|
+
const errors = {};
|
|
57397
|
+
for (const area of ["local", "session"]) try {
|
|
57398
|
+
snapshot[area] = store.read(area);
|
|
57399
|
+
} catch (error) {
|
|
57400
|
+
errors[area] = storageFailure(error);
|
|
57401
|
+
onError(new Error(errors[area].message));
|
|
57402
|
+
}
|
|
57403
|
+
current.onmessage = (message) => {
|
|
57404
|
+
if (current !== port) return;
|
|
57405
|
+
if (!active || Date.now() >= expiresAt) {
|
|
57406
|
+
shutdown();
|
|
57407
|
+
return;
|
|
57408
|
+
}
|
|
57409
|
+
try {
|
|
57410
|
+
current.postMessage(store.execute(message.data));
|
|
57411
|
+
} catch (error) {
|
|
57412
|
+
const failure = storageFailure(error);
|
|
57413
|
+
const id = message.data?.id;
|
|
57414
|
+
current.postMessage({
|
|
57415
|
+
id,
|
|
57416
|
+
error: failure
|
|
57417
|
+
});
|
|
57418
|
+
onError(new Error(failure.message));
|
|
57419
|
+
if (!isQuickAppStorageRequest(message.data)) shutdown();
|
|
57420
|
+
}
|
|
57421
|
+
};
|
|
57422
|
+
frameWindow.postMessage({
|
|
57423
|
+
type: QUICK_APP_STORAGE_PROTOCOL,
|
|
57424
|
+
token,
|
|
57425
|
+
documentId,
|
|
57426
|
+
snapshot,
|
|
57427
|
+
errors
|
|
57428
|
+
}, "*", [channel.port2]);
|
|
57429
|
+
};
|
|
57430
|
+
owner.addEventListener("message", connect);
|
|
57431
|
+
const expiry = setTimeout(() => {
|
|
57432
|
+
active = false;
|
|
57433
|
+
shutdown();
|
|
57434
|
+
owner.removeEventListener("message", connect);
|
|
57435
|
+
}, Math.max(0, Math.min(expiresAt - Date.now(), 2147483647)));
|
|
57436
|
+
return () => {
|
|
57437
|
+
active = false;
|
|
57438
|
+
clearTimeout(expiry);
|
|
57439
|
+
owner.removeEventListener("message", connect);
|
|
57440
|
+
shutdown();
|
|
57441
|
+
};
|
|
57442
|
+
}
|
|
57443
|
+
//#endregion
|
|
56893
57444
|
//#region src/client/quick-apps/viewer.ts
|
|
56894
57445
|
const defaultMode = (path) => /\.(?:md|markdown)$/iu.test(path) && require_primitives_adapter.hasNativeMarkdown() ? "markdown" : "source";
|
|
56895
57446
|
/** Native renderers and editor with Quick Apps ownership, save preconditions and lifetime. */
|
|
@@ -56912,6 +57463,9 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
56912
57463
|
const [confirmation, setConfirmation] = (0, react.useState)(null);
|
|
56913
57464
|
const generation = (0, react.useRef)(0);
|
|
56914
57465
|
const pending = (0, react.useRef)(false);
|
|
57466
|
+
const frame = (0, react.useRef)(null);
|
|
57467
|
+
const storageTranslator = (0, react.useRef)(t);
|
|
57468
|
+
storageTranslator.current = t;
|
|
56915
57469
|
const dirty = doc !== void 0 && draft !== doc.content;
|
|
56916
57470
|
const path = doc?.path ?? app.entryPath;
|
|
56917
57471
|
const accept = (next) => {
|
|
@@ -56934,6 +57488,20 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
56934
57488
|
(0, react.useEffect)(() => {
|
|
56935
57489
|
if (error) setFrameLoading(false);
|
|
56936
57490
|
}, [error]);
|
|
57491
|
+
(0, react.useEffect)(() => {
|
|
57492
|
+
if (view.kind !== "html" || view.isolation !== "sandbox-proxy" || !view.storageToken || !view.storageScope || typeof window === "undefined") return;
|
|
57493
|
+
return attachQuickAppStorageBroker({
|
|
57494
|
+
owner: window,
|
|
57495
|
+
frame: () => frame.current,
|
|
57496
|
+
token: view.storageToken,
|
|
57497
|
+
scope: view.storageScope,
|
|
57498
|
+
expiresAt: view.expiresAt,
|
|
57499
|
+
onError: (cause) => setMessage({
|
|
57500
|
+
error: true,
|
|
57501
|
+
text: storageTranslator.current("quickApps.storageFailed", { message: cause.message })
|
|
57502
|
+
})
|
|
57503
|
+
});
|
|
57504
|
+
}, [view]);
|
|
56937
57505
|
(0, react.useEffect)(() => {
|
|
56938
57506
|
if (!dirty || typeof window === "undefined") return;
|
|
56939
57507
|
const prevent = (event) => {
|
|
@@ -57145,7 +57713,7 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
57145
57713
|
}, t("quickApps.markdownUnavailable")) : null, view.kind === "html" && view.isolation === "sandbox-proxy" ? (0, react.createElement)("p", {
|
|
57146
57714
|
className: "qa-view-status",
|
|
57147
57715
|
role: "status"
|
|
57148
|
-
}, t("quickApps.sandboxPreview")) : null, doc ? mode === "edit" ? (0, react.createElement)(QuickAppEditor, {
|
|
57716
|
+
}, t(view.storageToken ? "quickApps.storagePreview" : "quickApps.sandboxPreview")) : null, doc ? mode === "edit" ? (0, react.createElement)(QuickAppEditor, {
|
|
57149
57717
|
key: path,
|
|
57150
57718
|
content: draft,
|
|
57151
57719
|
path,
|
|
@@ -57167,6 +57735,7 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
57167
57735
|
tabIndex: 0,
|
|
57168
57736
|
"aria-label": app.title
|
|
57169
57737
|
}, (0, react.createElement)("pre", null, draft)) : view.kind === "html" ? (0, react.createElement)("iframe", {
|
|
57738
|
+
ref: frame,
|
|
57170
57739
|
key: view.launchId,
|
|
57171
57740
|
className: "qa-view-frame",
|
|
57172
57741
|
title: app.title,
|
|
@@ -57886,7 +58455,7 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
57886
58455
|
return;
|
|
57887
58456
|
}
|
|
57888
58457
|
perform(async (current) => {
|
|
57889
|
-
const view = await client.open(app.id);
|
|
58458
|
+
const view = await client.open(app.id, app.kind === "html");
|
|
57890
58459
|
if (current() && view) navigate({
|
|
57891
58460
|
kind: "view",
|
|
57892
58461
|
app,
|
|
@@ -57920,7 +58489,7 @@ ${scope} [data-dockkit-strip-tabs] {
|
|
|
57920
58489
|
onClose: close,
|
|
57921
58490
|
onReload: () => {
|
|
57922
58491
|
perform(async (current) => {
|
|
57923
|
-
const view = await client.open(screen.app.id);
|
|
58492
|
+
const view = await client.open(screen.app.id, screen.app.kind === "html");
|
|
57924
58493
|
if (current() && view) setScreen({
|
|
57925
58494
|
...screen,
|
|
57926
58495
|
view
|
|
@@ -71114,7 +71683,7 @@ button[${ACCOUNT_ATTRIBUTE}]:focus-visible{outline:2px solid ${require_theme.dsh
|
|
|
71114
71683
|
return value === void 0 ? void 0 : (({ cliSessions: _cliSessions, ...clientValue }) => clientValue)(value);
|
|
71115
71684
|
}
|
|
71116
71685
|
//#endregion
|
|
71117
|
-
//#region node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.6
|
|
71686
|
+
//#region node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.6/node_modules/@deepseek-ai/cosmokit/lib/index.js
|
|
71118
71687
|
/** Return true when a value is `null` or `undefined`. */
|
|
71119
71688
|
function isNullable(value) {
|
|
71120
71689
|
return value === null || value === void 0;
|
|
@@ -71283,7 +71852,7 @@ button[${ACCOUNT_ATTRIBUTE}]:focus-visible{outline:2px solid ${require_theme.dsh
|
|
|
71283
71852
|
Time.template = template;
|
|
71284
71853
|
})(Time || (Time = {}));
|
|
71285
71854
|
//#endregion
|
|
71286
|
-
//#region node_modules/.pnpm/@deepseek-ai+cordis@4.0.
|
|
71855
|
+
//#region node_modules/.pnpm/@deepseek-ai+cordis@4.0.5_@deepseek-ai+cordis-plugin-include@1.0.10_@deepseek-ai+cordis-plugin-loader@1.0.6/node_modules/@deepseek-ai/cordis/lib/index.js
|
|
71287
71856
|
/** Ordered collection of disposable values with O(1) deletion by value. */
|
|
71288
71857
|
var DisposableList = class {
|
|
71289
71858
|
sn = 0;
|
|
@@ -76657,7 +77226,7 @@ button[${ACCOUNT_ATTRIBUTE}]:focus-visible{outline:2px solid ${require_theme.dsh
|
|
|
76657
77226
|
function isInjectedStage0Runtime(scope = globalThis) {
|
|
76658
77227
|
return scope[CODINGNS_STAGE0_GLOBAL] === true;
|
|
76659
77228
|
}
|
|
76660
|
-
route("session.external-performance", "session-performance-projection-021", "host", ">=0.2.1-alpha.3 <=0.2.1-
|
|
77229
|
+
route("session.external-performance", "session-performance-projection-021", "host", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", ["dsh-capabilities/host/session-performance-adapter.ts", "host/cli-adapters/feature.ts"]), route("session.external-performance", "session-performance-presentation-021", "client", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", ["dsh-capabilities/client/session-performance-adapter.ts", "client/features/cli-adapters.ts"]), route("quick-app.proxy", "quick-app-host-proxy-021", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", [
|
|
76661
77230
|
"dsh-capabilities/host/quick-app-proxy-adapter.ts",
|
|
76662
77231
|
"dsh-capabilities/host/quick-app-proxy-provider.ts",
|
|
76663
77232
|
"host/features/quick-apps.ts",
|
|
@@ -76673,21 +77242,21 @@ button[${ACCOUNT_ATTRIBUTE}]:focus-visible{outline:2px solid ${require_theme.dsh
|
|
|
76673
77242
|
"dsh-capabilities/host/quick-app-transport.ts",
|
|
76674
77243
|
"host/features/quick-apps.ts",
|
|
76675
77244
|
"host/features/lan-access-dsh.ts"
|
|
76676
|
-
]), route("sidebar.footer-action", "sidebar-footer-action-021", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["dsh-capabilities/client/quick-app-footer-adapter.ts", "client/features/quick-apps.ts"]), route("session.prompt-assembly", "session-prompt-assembly-021", "host", ">=0.2.1-alpha.3 <=0.2.1-
|
|
77245
|
+
]), route("sidebar.footer-action", "sidebar-footer-action-021", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["dsh-capabilities/client/quick-app-footer-adapter.ts", "client/features/quick-apps.ts"]), route("session.prompt-assembly", "session-prompt-assembly-021", "host", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", [
|
|
76677
77246
|
"dsh-capabilities/host/session-prompt-adapter.ts",
|
|
76678
77247
|
"host/features/session-prompt-translation.ts",
|
|
76679
77248
|
"host/cli-adapters/feature.ts"
|
|
76680
|
-
]), route("session.external-model-selection", "session-external-model-selection-021", "host", ">=0.2.1-alpha.3 <=0.2.1-
|
|
77249
|
+
]), route("session.external-model-selection", "session-external-model-selection-021", "host", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", ["dsh-capabilities/host/session-model-selection-adapter.ts", "host/cli-adapters/feature.ts"]), route("session.activation", "session-activation-020", "host", ">=0.2.0-rc.2 <=0.2.1-alpha.2", "supported", ["dsh-capabilities/host/session-activation-adapter.ts", "host/native-session-bridge.ts"]), route("session.activation", "session-activation-021", "host", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", ["dsh-capabilities/host/session-activation-adapter.ts", "host/native-session-bridge.ts"]), route("conversation.message-presentation", "message-presentation-020", "client", ">=0.2.0-rc.2 <=0.2.1-alpha.2", "supported", ["dsh-capabilities/client/message-presentation-adapter.ts", "client/session-translation-chat.ts"]), route("conversation.message-presentation", "message-presentation-021", "client", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", ["dsh-capabilities/client/message-presentation-adapter.ts", "client/session-translation-chat.ts"]), route("connection.peer", "connection.peer-021", "host", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", [
|
|
76681
77250
|
"dsh-capabilities/host/connection-peer-adapter.ts",
|
|
76682
77251
|
"host/rpc.ts",
|
|
76683
77252
|
"host/features/global-voice-rpc.ts",
|
|
76684
77253
|
"host/modules/peer-host/peer-host-native-dispatch.ts"
|
|
76685
|
-
]), route("connection.uplink", "connection.uplink-021", "host", ">=0.2.1-alpha.3 <=0.2.1-
|
|
77254
|
+
]), route("connection.uplink", "connection.uplink-021", "host", ">=0.2.1-alpha.3 <=0.2.1-rc.2", "supported", ["dsh-capabilities/host/native-dispatch-adapter.ts", "host/modules/peer-host/peer-host-native-dispatch.ts"]), route("session.title", "session-title-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["dsh-capabilities/host/session-title-adapter.ts", "host/features/session-title-optimization.ts"]), route("session.working-directory", "session-working-directory-021", "host", ">=0.2.1-alpha.2", "supported", ["host/terminal/terminal-controller.ts", "host/index.ts"]), route("llm.text", "llm-text-021", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", [
|
|
76686
77255
|
"dsh-capabilities/host/assistant-llm-adapter.ts",
|
|
76687
77256
|
"host/features/assistant-text-chat.ts",
|
|
76688
77257
|
"dsh-capabilities/host/session-title-adapter.ts",
|
|
76689
77258
|
"host/features/session-title-optimization.ts"
|
|
76690
|
-
]), route("assistant.agent", "assistant-agent-021", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["dsh-capabilities/host/assistant-agent-adapter.ts", "host/features/global-voice-rpc.ts"]), route("settings.store", "legacy-settings-scope", "host", ">=0.1.5-rc.3 <=0.1.6", "supported", ["host/settings.ts", "host/features/*"]), route("settings.store", "config-forms", "host", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["host/settings.ts", "client/settings-bridge.ts"]), route("connection.rpc", "legacy-rpc-handler", "host", ">=0.1.5-rc.3 <=0.1.6", "supported", ["host/rpc.ts"]), route("connection.rpc", "peer-aware-rpc-handler", "host", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["host/rpc.ts"]), route("connection.peer", "peer-scope", "host", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["host/rpc.ts"]), route("ui.icon.plus", "fixed-plus-icon", "client", ">=0.1.5-rc.3 <=0.1.6", "supported", ["client/terminal/xterm-view.ts"]), route("ui.icon.plus", "regular-plus-icon", "client", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["client/terminal/xterm-view.ts"]), route("ui.icon.chevron", "fixed-chevron-icon", "client", ">=0.1.5-rc.3 <=0.1.6", "supported", ["client/terminal/ui.ts"]), route("ui.icon.chevron", "regular-chevron-icon", "client", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["client/terminal/ui.ts"]), route("locale.runtime", "locale-runtime", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/locale.ts"]), route("theme.runtime", "theme-runtime", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/theme.ts"]), route("conversation.tool-call", "conversation-events", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/external-tool-stream.ts"]), route("sidebar.right", "sidebar-right-tabs", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/terminal/ui.ts"]), route("typert.remote", "remote-result", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/terminal/terminal-controller.ts", "client/terminal/model.ts"]), route("peer-host.store", "peer-host-store", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.handshake", "peer-host-handshake", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.http-proxy", "peer-host-http-proxy", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.ws-proxy", "peer-host-ws-proxy", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.aggregate", "peer-host-aggregate", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.relay-route", "peer-host-relay-route", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.native-navigation", "peer-host-native-navigation-legacy", "client", ">=0.1.5-rc.3 <=0.1.6", "deprecated", ["client/features/peer-host.ts"]), route("peer-host.native-navigation", "peer-host-native-navigation-modern", "client", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["client/features/peer-host.ts"]), route("peer-host.remote-web-context-fallback", "peer-host-remote-web-context-fallback", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/features/peer-host.ts"]), route("settings.store", "settings-forms-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/settings.ts", "host/rpc.ts"]), route("connection.rpc", "connection-rpc-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/rpc.ts", "transport/dsh-transport.ts"]), route("connection.peer", "connection-peer-admission-020", "host", ">=0.2.0-rc.2 <=0.2.1-alpha.2", "supported", ["host/rpc.ts"]), route("connection.attachment", "connection-rpc-attachment-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/rpc.ts", "transport/dsh-transport.ts"]), route("connection.uplink", "connection-rpc-uplink-020", "host", ">=0.2.0-rc.2 <=0.2.1-alpha.2", "supported", ["host/rpc.ts", "transport/dsh-transport.ts"]), route("typert.remote", "remote-context-stream-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/terminal/terminal-controller.ts", "client/terminal/model.ts"]), route("typert.context", "typert-context-registry-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["typert.host.ts", "host/terminal/terminal-controller.ts"]), route("typert.stream", "typert-remote-stream-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["typert.host.ts", "typert.remote-client.ts"]), route("session.format-v4", "session-format-v4", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/native-session-bridge.ts", "host/session-migration-repair.ts"]), route("subagent.continuable", "subagent-continuable-020", "host", ">=0.2.0-rc.1 <=0.2.1-alpha.1", "supported", ["host/cli-adapters/session-store.ts", "host/cli-adapters/feature.ts"]), route("subagent.continuable", "subagent-activation-021", "host", ">=0.2.1-alpha.2", "supported", ["host/cli-adapters/native-team-subagent.ts", "host/cli-adapters/native-subagent-dispatch.ts"]), route("agent-team.native", "agent-team-native-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/cli-adapters/feature.ts", "host/cli-adapters/native-team-proxy.ts"]), route("ui.icon.plus", "regular-plus-icon-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/terminal/xterm-view.ts"]), route("ui.icon.chevron", "regular-chevron-icon-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/terminal/ui.ts"]), route("locale.runtime", "locale-runtime-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/locale.ts"]), route("theme.runtime", "theme-runtime-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/theme.ts"]), route("theme.font-scale", "theme-font-scale-021", "client", ">=0.2.1-alpha.2", "supported", ["client/font-scale.ts", "client/index.ts"]), route("conversation.tool-call", "conversation-events-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/external-tool-stream.ts"]), route("conversation.draft-share", "conversation-draft-share-021", "client", ">=0.2.1-alpha.1 <=0.2.1-
|
|
77259
|
+
]), route("assistant.agent", "assistant-agent-021", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["dsh-capabilities/host/assistant-agent-adapter.ts", "host/features/global-voice-rpc.ts"]), route("settings.store", "legacy-settings-scope", "host", ">=0.1.5-rc.3 <=0.1.6", "supported", ["host/settings.ts", "host/features/*"]), route("settings.store", "config-forms", "host", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["host/settings.ts", "client/settings-bridge.ts"]), route("connection.rpc", "legacy-rpc-handler", "host", ">=0.1.5-rc.3 <=0.1.6", "supported", ["host/rpc.ts"]), route("connection.rpc", "peer-aware-rpc-handler", "host", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["host/rpc.ts"]), route("connection.peer", "peer-scope", "host", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["host/rpc.ts"]), route("ui.icon.plus", "fixed-plus-icon", "client", ">=0.1.5-rc.3 <=0.1.6", "supported", ["client/terminal/xterm-view.ts"]), route("ui.icon.plus", "regular-plus-icon", "client", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["client/terminal/xterm-view.ts"]), route("ui.icon.chevron", "fixed-chevron-icon", "client", ">=0.1.5-rc.3 <=0.1.6", "supported", ["client/terminal/ui.ts"]), route("ui.icon.chevron", "regular-chevron-icon", "client", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["client/terminal/ui.ts"]), route("locale.runtime", "locale-runtime", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/locale.ts"]), route("theme.runtime", "theme-runtime", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/theme.ts"]), route("conversation.tool-call", "conversation-events", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/external-tool-stream.ts"]), route("sidebar.right", "sidebar-right-tabs", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/terminal/ui.ts"]), route("typert.remote", "remote-result", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/terminal/terminal-controller.ts", "client/terminal/model.ts"]), route("peer-host.store", "peer-host-store", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.handshake", "peer-host-handshake", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.http-proxy", "peer-host-http-proxy", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.ws-proxy", "peer-host-ws-proxy", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.aggregate", "peer-host-aggregate", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.relay-route", "peer-host-relay-route", "host", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["host/features/peer-host.ts"]), route("peer-host.native-navigation", "peer-host-native-navigation-legacy", "client", ">=0.1.5-rc.3 <=0.1.6", "deprecated", ["client/features/peer-host.ts"]), route("peer-host.native-navigation", "peer-host-native-navigation-modern", "client", ">=0.1.7-rc.2 <=0.1.7-rc.2", "supported", ["client/features/peer-host.ts"]), route("peer-host.remote-web-context-fallback", "peer-host-remote-web-context-fallback", "client", ">=0.1.5-rc.3 <=0.1.7-rc.2", "supported", ["client/features/peer-host.ts"]), route("settings.store", "settings-forms-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/settings.ts", "host/rpc.ts"]), route("connection.rpc", "connection-rpc-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/rpc.ts", "transport/dsh-transport.ts"]), route("connection.peer", "connection-peer-admission-020", "host", ">=0.2.0-rc.2 <=0.2.1-alpha.2", "supported", ["host/rpc.ts"]), route("connection.attachment", "connection-rpc-attachment-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/rpc.ts", "transport/dsh-transport.ts"]), route("connection.uplink", "connection-rpc-uplink-020", "host", ">=0.2.0-rc.2 <=0.2.1-alpha.2", "supported", ["host/rpc.ts", "transport/dsh-transport.ts"]), route("typert.remote", "remote-context-stream-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/terminal/terminal-controller.ts", "client/terminal/model.ts"]), route("typert.context", "typert-context-registry-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["typert.host.ts", "host/terminal/terminal-controller.ts"]), route("typert.stream", "typert-remote-stream-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["typert.host.ts", "typert.remote-client.ts"]), route("session.format-v4", "session-format-v4", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/native-session-bridge.ts", "host/session-migration-repair.ts"]), route("subagent.continuable", "subagent-continuable-020", "host", ">=0.2.0-rc.1 <=0.2.1-alpha.1", "supported", ["host/cli-adapters/session-store.ts", "host/cli-adapters/feature.ts"]), route("subagent.continuable", "subagent-activation-021", "host", ">=0.2.1-alpha.2", "supported", ["host/cli-adapters/native-team-subagent.ts", "host/cli-adapters/native-subagent-dispatch.ts"]), route("agent-team.native", "agent-team-native-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/cli-adapters/feature.ts", "host/cli-adapters/native-team-proxy.ts"]), route("agent-team.external-member", "agent-team-external-member-021", "host", ">=0.2.1-alpha.2 <=0.2.1-rc.2", "supported", ["host/cli-adapters/feature.ts", "host/cli-bridge/team-dispatch.ts"]), route("agent-team.external-lead", "agent-team-external-lead-021", "host", ">=0.2.1-alpha.2 <=0.2.1-rc.2", "supported", ["host/cli-adapters/feature.ts", "host/cli-bridge/team-dispatch.ts"]), route("ui.icon.plus", "regular-plus-icon-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/terminal/xterm-view.ts"]), route("ui.icon.chevron", "regular-chevron-icon-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/terminal/ui.ts"]), route("locale.runtime", "locale-runtime-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/locale.ts"]), route("theme.runtime", "theme-runtime-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/theme.ts"]), route("theme.font-scale", "theme-font-scale-021", "client", ">=0.2.1-alpha.2", "supported", ["client/font-scale.ts", "client/index.ts"]), route("conversation.tool-call", "conversation-events-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/external-tool-stream.ts"]), route("conversation.draft-share", "conversation-draft-share-021", "client", ">=0.2.1-alpha.1 <=0.2.1-rc.2", "supported", ["client/terminal/ui.ts", "client/terminal/sharing.ts"]), route("conversation.interaction-translation", "interaction-presentation-021", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/session-translation-interactions.ts"]), route("sidebar.right", "sidebar-right-dock-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/terminal/ui.ts"]), route("typert.remote", "remote-context-stream-020-client", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/terminal/model.ts"]), route("typert.context", "typert-context-registry-020-client", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["typert.remote-client.ts", "client/terminal/model.ts"]), route("typert.stream", "typert-remote-stream-020-client", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["typert.remote-client.ts", "client/terminal/model.ts"]), route("client.boot-graph", "client-web-boot-graph-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/index.ts", "package.json"]), route("peer-host.native-navigation", "peer-host-native-navigation-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/features/peer-host.ts"]), route("peer-host.remote-web-context-fallback", "peer-host-remote-web-context-fallback-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["client/features/peer-host.ts"]), route("peer-host.store", "peer-host-store-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/features/peer-host.ts"]), route("peer-host.handshake", "peer-host-handshake-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/features/peer-host.ts"]), route("peer-host.http-proxy", "peer-host-http-proxy-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/features/peer-host.ts", "host/modules/peer-host/quick-app-gateway.ts"]), route("peer-host.ws-proxy", "peer-host-ws-proxy-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/features/peer-host.ts"]), route("peer-host.aggregate", "peer-host-aggregate-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/features/peer-host.ts"]), route("peer-host.aggregated-transport", "peer-host-aggregated-transport-020", "host", require_native_workspace_store.DSH_COMPATIBILITY, "supported", ["host/modules/peer-host/aggregated-host-transport.ts"]), route("peer-host.client-preboot-transport", "peer-host-client-preboot-transport-020", "client", require_native_workspace_store.DSH_COMPATIBILITY, "supported", [
|
|
76691
77260
|
"bootstrap/index.ts",
|
|
76692
77261
|
"host/index-injection.ts",
|
|
76693
77262
|
"client/features/peer-host.ts"
|
|
@@ -76711,7 +77280,7 @@ button[${ACCOUNT_ATTRIBUTE}]:focus-visible{outline:2px solid ${require_theme.dsh
|
|
|
76711
77280
|
};
|
|
76712
77281
|
}
|
|
76713
77282
|
//#endregion
|
|
76714
|
-
//#region node_modules/.pnpm/@deepseek-ai+dsh-util-workspace-path@0.2.1-
|
|
77283
|
+
//#region node_modules/.pnpm/@deepseek-ai+dsh-util-workspace-path@0.2.1-rc.2_@deepseek-ai+cordis@4.0.5/node_modules/@deepseek-ai/dsh-util-workspace-path/lib/index.js
|
|
76715
77284
|
/**
|
|
76716
77285
|
* The `dsh-resource://file/…` address grammar: how a file is named across the
|
|
76717
77286
|
* Sidebar and the resource model, built and parsed without touching a
|
|
@@ -82707,5 +83276,5 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
82707
83276
|
});
|
|
82708
83277
|
|
|
82709
83278
|
})();
|
|
82710
|
-
// codingns-client-revision:
|
|
83279
|
+
// codingns-client-revision: 75471ae1b8c6158ff3a696d9b8d4440efd9c6f8212760d2e2bdcf208a469d952
|
|
82711
83280
|
//# sourceMappingURL=bundle.js.map
|