ds-harness-remote 0.4.1 → 0.4.3
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.md +35 -11
- package/cordis.patch.yml +3 -0
- package/dist/client-runtime.d.ts +28 -0
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js +327 -5
- package/dist/client-runtime.js.map +1 -1
- package/dist/client-secure-transport.d.ts.map +1 -1
- package/dist/client-secure-transport.js +9 -2
- package/dist/client-secure-transport.js.map +1 -1
- package/dist/client.github.js +167 -48
- package/dist/client.js +167 -48
- package/dist/client.js.map +1 -1
- package/dist/codex/app-server.d.ts +71 -0
- package/dist/codex/app-server.d.ts.map +1 -0
- package/dist/codex/app-server.js +268 -0
- package/dist/codex/app-server.js.map +1 -0
- package/dist/codex/domain.d.ts +82 -0
- package/dist/codex/domain.d.ts.map +1 -0
- package/dist/codex/domain.js +893 -0
- package/dist/codex/domain.js.map +1 -0
- package/dist/codex/method-policy.d.ts +297 -0
- package/dist/codex/method-policy.d.ts.map +1 -0
- package/dist/codex/method-policy.js +103 -0
- package/dist/codex/method-policy.js.map +1 -0
- package/dist/codex/peer-bridge.d.ts +57 -0
- package/dist/codex/peer-bridge.d.ts.map +1 -0
- package/dist/codex/peer-bridge.js +300 -0
- package/dist/codex/peer-bridge.js.map +1 -0
- package/dist/codex/virtual-harness.d.ts +178 -0
- package/dist/codex/virtual-harness.d.ts.map +1 -0
- package/dist/codex/virtual-harness.js +2515 -0
- package/dist/codex/virtual-harness.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/control-runtime.d.ts +1 -0
- package/dist/control-runtime.d.ts.map +1 -1
- package/dist/control-runtime.js +22 -0
- package/dist/control-runtime.js.map +1 -1
- package/dist/harness-remote-bridge.d.ts +2 -2
- package/dist/harness-remote-bridge.d.ts.map +1 -1
- package/dist/harness-remote-bridge.js +2 -2
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8550 -3884
- package/dist/index.js.map +4 -4
- package/dist/remote-typert-gateway.d.ts +1 -1
- package/dist/remote-typert-gateway.d.ts.map +1 -1
- package/dist/remote-typert-gateway.js +9 -2
- package/dist/remote-typert-gateway.js.map +1 -1
- package/dist/rpc-router.d.ts +5 -2
- package/dist/rpc-router.d.ts.map +1 -1
- package/dist/rpc-router.js +30 -1
- package/dist/rpc-router.js.map +1 -1
- package/dist/server-connection.d.ts +1 -0
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +69 -22
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts +20 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +58 -2
- package/dist/service.js.map +1 -1
- package/dist/typert-gateway-contract.d.ts +2 -2
- package/dist/typert-gateway-contract.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +19 -23
- package/public.d.ts +4 -0
package/README.md
CHANGED
|
@@ -8,9 +8,9 @@ DeepSeek Remote plugin for DSH Host + Remote workspaces. One install provides en
|
|
|
8
8
|
|
|
9
9
|
DeepSeek Remote 是 DSH Host + Remote 工作区插件。一次安装可提供本地设备到远端的加密远程访问能力,以及在现有 Harness UI 内切换远端工作区。
|
|
10
10
|
|
|
11
|
-
No Client mode switch is required. Choosing a remote workspace keeps the local UI unchanged, routes rc.2 through `RemoteHarnessApiProxy` or alpha
|
|
11
|
+
No Client mode switch is required. Choosing a remote workspace keeps the local UI unchanged, routes rc.2 through `RemoteHarnessApiProxy` or the alpha generation through the Typert Remote Gateway carrier, and falls back to the matching local transport on disconnect or exit.
|
|
12
12
|
|
|
13
|
-
无需启动或切换 Client 模式。选择远端工作区后,本地 UI 不变:rc.2 请求通过 `RemoteHarnessApiProxy` 路由,alpha
|
|
13
|
+
无需启动或切换 Client 模式。选择远端工作区后,本地 UI 不变:rc.2 请求通过 `RemoteHarnessApiProxy` 路由,alpha 代际请求通过 Typert Remote Gateway carrier 路由;断线或退出时恢复对应的本地 transport。
|
|
14
14
|
|
|
15
15
|
## User flow / 用户流程
|
|
16
16
|
|
|
@@ -26,13 +26,13 @@ No Client mode switch is required. Choosing a remote workspace keeps the local U
|
|
|
26
26
|
|
|
27
27
|
## Harness images / Harness 图片
|
|
28
28
|
|
|
29
|
-
With DSH `dsh-v0.1.1-rc.2` or `dsh-v0.1.2-alpha.1`, the native conversation UI
|
|
29
|
+
With DSH `dsh-v0.1.1-rc.2` or `dsh-v0.1.2-alpha.1`–`alpha.2`, the native conversation UI
|
|
30
30
|
can send images through `session.prompt` and render them through the read-only
|
|
31
31
|
`session.attachment` lookup. Large ApiProxy or Gateway envelopes use bounded
|
|
32
32
|
512 KiB transfer chunks; image preprocessing, DeepSeek Files API upload, and
|
|
33
33
|
file-id reuse stay on the Host in the official adapter.
|
|
34
34
|
|
|
35
|
-
使用 DSH `dsh-v0.1.1-rc.2` 或 `dsh-v0.1.2-alpha.1` 时,原生会话 UI 可通过
|
|
35
|
+
使用 DSH `dsh-v0.1.1-rc.2` 或 `dsh-v0.1.2-alpha.1`–`alpha.2` 时,原生会话 UI 可通过
|
|
36
36
|
`session.prompt` 发送图片,并通过只读 `session.attachment` 回读显示。较大的 ApiProxy 或
|
|
37
37
|
Gateway envelope 使用受限的 512 KiB 分块;图片预处理、DeepSeek Files API 上传与 file-id
|
|
38
38
|
复用仍由 Host 官方 adapter 完成。
|
|
@@ -69,7 +69,7 @@ general filesystem RPC.
|
|
|
69
69
|
|
|
70
70
|
```text
|
|
71
71
|
Local Harness UI
|
|
72
|
-
-> ApiProxySwitch (rc.2) / TypertGatewaySwitch (alpha
|
|
72
|
+
-> ApiProxySwitch (rc.2) / TypertGatewaySwitch (alpha)
|
|
73
73
|
-> RemoteHarnessApiProxy / RemoteTypertGateway
|
|
74
74
|
-> Adaptive transport (LAN / P2P / TURN / Relay)
|
|
75
75
|
-> Noise IK secure channel
|
|
@@ -79,7 +79,7 @@ Local Harness UI
|
|
|
79
79
|
|
|
80
80
|
```text
|
|
81
81
|
本地 Harness UI
|
|
82
|
-
-> ApiProxySwitch(rc.2)/ TypertGatewaySwitch(alpha
|
|
82
|
+
-> ApiProxySwitch(rc.2)/ TypertGatewaySwitch(alpha)
|
|
83
83
|
-> RemoteHarnessApiProxy / RemoteTypertGateway
|
|
84
84
|
-> 自适应传输(LAN / P2P / TURN / Relay)
|
|
85
85
|
-> Noise IK 安全通道
|
|
@@ -93,7 +93,7 @@ Local Harness UI
|
|
|
93
93
|
- `client-runtime.ts`: device list, connection, workspace actions / 设备列表、连接、工作区操作
|
|
94
94
|
- `client.ts`: settings UI, remote modal, sidebar, remote header / 设置卡片、Remote 弹窗、侧边栏、远端 Header
|
|
95
95
|
- `harness-api-bridge.ts`: ApiProxy allowlist and stream bridge / ApiProxy 白名单与 stream 桥接
|
|
96
|
-
- `harness-remote-bridge.ts`: alpha
|
|
96
|
+
- `harness-remote-bridge.ts`: alpha Typert Remote allowlist and stream carrier / alpha Typert Remote 白名单与 stream carrier
|
|
97
97
|
- `file-viewer-bridge.ts`: bounded File Viewer read bridge / 受限 File Viewer 读取桥
|
|
98
98
|
- `identity-store.ts` / `server-credentials.ts`: account-scoped identity and credentials / 账号隔离的身份与凭证
|
|
99
99
|
|
|
@@ -119,6 +119,30 @@ Settings are written to `$DSH_HOME/settings.yaml` under `ds-harness-remote` (res
|
|
|
119
119
|
|
|
120
120
|
配置写入 `$DSH_HOME/settings.yaml` 的 `ds-harness-remote`(重启后生效)。
|
|
121
121
|
|
|
122
|
+
Codex Session/History is an experimental optional domain inside this same plugin. It is enabled by
|
|
123
|
+
default and can be disabled from the DeepSeek Remote settings card; CodeX App Server `project/list`
|
|
124
|
+
is the only source of truth for virtual Workspaces. The current release includes the Host carrier,
|
|
125
|
+
shared Client Core, Desktop Plugin Web history/live UI with
|
|
126
|
+
create/rename/archive/restore, dynamic capability re-probing, and bounded App Server restart. Opening
|
|
127
|
+
history is read-only and resume is deferred until the user continues work. Current
|
|
128
|
+
stdio/project/list/read compatibility is smoke-tested; encrypted cross-machine turn/approval testing
|
|
129
|
+
remains pending. Android is outside the current Plugin-only scope.
|
|
130
|
+
|
|
131
|
+
Codex Session/History 是当前插件内部的实验性可选领域,默认开启,可在 DeepSeek Remote 设置卡片
|
|
132
|
+
中关闭,并以 CodeX App Server 的 `project/list` 作为虚拟 Workspace 的唯一来源。当前已完成 Host carrier、共享 Client Core、
|
|
133
|
+
Desktop Plugin Web History/live UI(包括新建、改名、归档/恢复)、动态 capability 重探测与 App
|
|
134
|
+
Server 有界重启。打开 History 仅执行只读,继续操作时才 resume。当前 stdio/project/list/read 已完成
|
|
135
|
+
真实冒烟验证;加密跨机 turn/approval 联调仍待完成。Android 不属于当前仅 Plugin 的交付范围。
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
ds-harness-remote:
|
|
139
|
+
codex:
|
|
140
|
+
enabled: false
|
|
141
|
+
binary: codex
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`binary` 必须指向支持 `codex app-server` 的当前 Codex CLI;必要时请配置绝对路径。
|
|
145
|
+
|
|
122
146
|
```sh
|
|
123
147
|
export DSH_REMOTE_SERVER=https://dsh.r2049.cn
|
|
124
148
|
```
|
|
@@ -128,7 +152,7 @@ Install the npm package for the `web` profile:
|
|
|
128
152
|
通过 npm 包安装到 `web` profile:
|
|
129
153
|
|
|
130
154
|
```sh
|
|
131
|
-
dsh plugin --profile web add ds-harness-remote@0.4.
|
|
155
|
+
dsh plugin --profile web add ds-harness-remote@0.4.2
|
|
132
156
|
```
|
|
133
157
|
|
|
134
158
|
npm / npm 包地址:<https://www.npmjs.com/package/ds-harness-remote>
|
|
@@ -138,11 +162,11 @@ Alternatively, install the pinned GitHub release in DSH Desktop or with the CLI:
|
|
|
138
162
|
也可以在 DSH Desktop 中安装固定版本的 GitHub Release,或使用命令行安装:
|
|
139
163
|
|
|
140
164
|
```text
|
|
141
|
-
github:liguobao/
|
|
165
|
+
github:liguobao/ds-harness-remote#v0.4.2
|
|
142
166
|
```
|
|
143
167
|
|
|
144
168
|
```sh
|
|
145
|
-
dsh plugin --profile web add "github:liguobao/
|
|
169
|
+
dsh plugin --profile web add "github:liguobao/ds-harness-remote#v0.4.2"
|
|
146
170
|
```
|
|
147
171
|
|
|
148
|
-
GitHub / 项目地址:<https://github.com/liguobao/
|
|
172
|
+
GitHub / 项目地址:<https://github.com/liguobao/ds-harness-remote>
|
package/cordis.patch.yml
CHANGED
package/dist/client-runtime.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ApiProxy, RpcResult } from '@deepseek-ai/dsh-host-apiproxy/api';
|
|
2
|
+
import type { CodexAppFrameData, CodexAppStreamClosedData } from '@dsh-remote/protocol';
|
|
2
3
|
import { RemoteClientCore } from '@dsh-remote/client-core';
|
|
3
4
|
import { type RtcPeerConnectionFactory } from '@dsh-remote/webrtc';
|
|
4
5
|
import { type HarnessMode } from './api-proxy-switch.js';
|
|
@@ -6,6 +7,7 @@ import type { ResolvedConfig } from './config.js';
|
|
|
6
7
|
import type { IdentityStore } from './identity-store.js';
|
|
7
8
|
import type { TypertGatewayLike } from './typert-gateway-contract.js';
|
|
8
9
|
import type { SafeLogger } from './logging.js';
|
|
10
|
+
import { type CodexVirtualWorkspaceView } from './codex/virtual-harness.js';
|
|
9
11
|
import { ClientServerApi, type OAuthProvider } from './server-api.js';
|
|
10
12
|
import { type WeriftFactoryOptions } from './werift-rtc.js';
|
|
11
13
|
export interface RemoteHostFeatures {
|
|
@@ -13,6 +15,7 @@ export interface RemoteHostFeatures {
|
|
|
13
15
|
fileViewer: boolean;
|
|
14
16
|
apiProxy: boolean;
|
|
15
17
|
remoteGateway: boolean;
|
|
18
|
+
codex: boolean;
|
|
16
19
|
}
|
|
17
20
|
export interface RemoteDirectoryEntry {
|
|
18
21
|
name: string;
|
|
@@ -66,6 +69,15 @@ export interface HostAuthorizationControl {
|
|
|
66
69
|
authorizeHostAsOwned(accessToken: string, account?: string): Promise<unknown>;
|
|
67
70
|
authorizeHostWithAccount(email: string, password: string): Promise<unknown>;
|
|
68
71
|
authorizeHostWithCode(code: string): Promise<unknown>;
|
|
72
|
+
codexStatus?(): {
|
|
73
|
+
available: boolean;
|
|
74
|
+
};
|
|
75
|
+
codexCall?(input: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
76
|
+
codexRespond?(input: unknown, signal?: AbortSignal): Promise<{
|
|
77
|
+
resolved: true;
|
|
78
|
+
}>;
|
|
79
|
+
codexOpenStream?(input: unknown, publish: (event: 'codex.app.frame' | 'codex.app.stream.closed', data: CodexAppFrameData | CodexAppStreamClosedData) => Promise<void>, signal?: AbortSignal): Promise<unknown>;
|
|
80
|
+
codexCloseStream?(input: unknown): Promise<unknown>;
|
|
69
81
|
}
|
|
70
82
|
export declare class ClientModeRuntime {
|
|
71
83
|
private readonly config;
|
|
@@ -77,8 +89,10 @@ export declare class ClientModeRuntime {
|
|
|
77
89
|
private identity?;
|
|
78
90
|
private connected?;
|
|
79
91
|
private pendingWorkspaceSelection?;
|
|
92
|
+
private codexVirtual?;
|
|
80
93
|
private readonly proxySwitch?;
|
|
81
94
|
private readonly gatewaySwitch;
|
|
95
|
+
private readonly codexStreams;
|
|
82
96
|
private closed;
|
|
83
97
|
constructor(config: ResolvedConfig, identities: IdentityStore, server: ClientServerApi, apiProxy: ApiProxy | undefined, typertGateway: TypertGatewayLike, logger: SafeLogger, host?: HostAuthorizationControl | undefined, rtcFactoryProvider?: (options?: WeriftFactoryOptions) => Promise<RtcPeerConnectionFactory | undefined>);
|
|
84
98
|
start(): Promise<void>;
|
|
@@ -95,10 +109,24 @@ export declare class ClientModeRuntime {
|
|
|
95
109
|
listRemoteDirectory(targetDeviceId: string, path?: string, signal?: AbortSignal): Promise<RemoteDirectoryListing>;
|
|
96
110
|
listRemoteWorkspaces(targetDeviceId: string, signal?: AbortSignal): Promise<RemoteWorkspaceView[]>;
|
|
97
111
|
openRemoteWorkspace(targetDeviceId: string, path: string, signal?: AbortSignal): Promise<Record<string, unknown>>;
|
|
112
|
+
listCodexWorkspaces(targetDeviceId: string, signal?: AbortSignal): Promise<CodexVirtualWorkspaceView[]>;
|
|
113
|
+
openCodexWorkspace(targetDeviceId: string, workspaceId: string, signal?: AbortSignal): Promise<Record<string, unknown>>;
|
|
98
114
|
private consumeWorkspaceSelection;
|
|
99
115
|
close(): Promise<void>;
|
|
100
116
|
private callRemoteFileViewer;
|
|
117
|
+
private activeRemote;
|
|
118
|
+
private activeCodexRemote;
|
|
119
|
+
private openCodexStream;
|
|
120
|
+
private readonly publishLocalCodexFrame;
|
|
121
|
+
private appendCodexFrame;
|
|
122
|
+
private localCodexAvailable;
|
|
123
|
+
private requireLocalCodex;
|
|
124
|
+
private nextCodexFrames;
|
|
125
|
+
private closeCodexStream;
|
|
126
|
+
private closeCodexStreams;
|
|
101
127
|
private selectRemoteTarget;
|
|
128
|
+
private selectCodexTarget;
|
|
129
|
+
private closeCodexVirtual;
|
|
102
130
|
private assertRemoteCompatible;
|
|
103
131
|
private connect;
|
|
104
132
|
private ensureConnected;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../src/client-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../src/client-runtime.ts"],"names":[],"mappings":"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"}
|