@blue-soda/dsh-remote 0.5.5 → 0.5.7

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.
Files changed (232) hide show
  1. package/README.md +2 -2
  2. package/cordis.patch.yml +30 -30
  3. package/dist/client.github.js +1 -1
  4. package/dist/client.js +1 -1
  5. package/dist/index.js +371 -80
  6. package/dist/index.js.map +4 -4
  7. package/dsh-plugin.json +41 -41
  8. package/package.json +165 -165
  9. package/dist/acp.d.ts +0 -75
  10. package/dist/acp.d.ts.map +0 -1
  11. package/dist/acp.js +0 -61
  12. package/dist/acp.js.map +0 -1
  13. package/dist/api-proxy-switch.d.ts +0 -33
  14. package/dist/api-proxy-switch.d.ts.map +0 -1
  15. package/dist/api-proxy-switch.js +0 -109
  16. package/dist/api-proxy-switch.js.map +0 -1
  17. package/dist/atomic-file.d.ts +0 -16
  18. package/dist/atomic-file.d.ts.map +0 -1
  19. package/dist/atomic-file.js +0 -81
  20. package/dist/atomic-file.js.map +0 -1
  21. package/dist/bin/doctor.d.ts +0 -3
  22. package/dist/bin/doctor.d.ts.map +0 -1
  23. package/dist/bin/doctor.js +0 -13
  24. package/dist/bin/doctor.js.map +0 -1
  25. package/dist/cli.d.ts +0 -32
  26. package/dist/cli.d.ts.map +0 -1
  27. package/dist/cli.js +0 -289
  28. package/dist/cli.js.map +0 -1
  29. package/dist/client-runtime.d.ts +0 -375
  30. package/dist/client-runtime.d.ts.map +0 -1
  31. package/dist/client-runtime.js +0 -1768
  32. package/dist/client-runtime.js.map +0 -1
  33. package/dist/client-secure-transport.d.ts +0 -23
  34. package/dist/client-secure-transport.d.ts.map +0 -1
  35. package/dist/client-secure-transport.js +0 -144
  36. package/dist/client-secure-transport.js.map +0 -1
  37. package/dist/client-target-store.d.ts +0 -40
  38. package/dist/client-target-store.d.ts.map +0 -1
  39. package/dist/client-target-store.js +0 -79
  40. package/dist/client-target-store.js.map +0 -1
  41. package/dist/client.d.ts +0 -13
  42. package/dist/client.d.ts.map +0 -1
  43. package/dist/codex/app-server.d.ts +0 -71
  44. package/dist/codex/app-server.d.ts.map +0 -1
  45. package/dist/codex/app-server.js +0 -268
  46. package/dist/codex/app-server.js.map +0 -1
  47. package/dist/codex/codex-image-codec.d.ts +0 -7
  48. package/dist/codex/codex-image-codec.d.ts.map +0 -1
  49. package/dist/codex/codex-image-codec.js +0 -288
  50. package/dist/codex/codex-image-codec.js.map +0 -1
  51. package/dist/codex/domain.d.ts +0 -102
  52. package/dist/codex/domain.d.ts.map +0 -1
  53. package/dist/codex/domain.js +0 -1323
  54. package/dist/codex/domain.js.map +0 -1
  55. package/dist/codex/method-policy.d.ts +0 -338
  56. package/dist/codex/method-policy.d.ts.map +0 -1
  57. package/dist/codex/method-policy.js +0 -141
  58. package/dist/codex/method-policy.js.map +0 -1
  59. package/dist/codex/peer-bridge.d.ts +0 -57
  60. package/dist/codex/peer-bridge.d.ts.map +0 -1
  61. package/dist/codex/peer-bridge.js +0 -299
  62. package/dist/codex/peer-bridge.js.map +0 -1
  63. package/dist/codex/permissions.d.ts +0 -4
  64. package/dist/codex/permissions.d.ts.map +0 -1
  65. package/dist/codex/permissions.js +0 -21
  66. package/dist/codex/permissions.js.map +0 -1
  67. package/dist/codex/session-id.d.ts +0 -10
  68. package/dist/codex/session-id.d.ts.map +0 -1
  69. package/dist/codex/session-id.js +0 -15
  70. package/dist/codex/session-id.js.map +0 -1
  71. package/dist/codex/virtual-harness.d.ts +0 -209
  72. package/dist/codex/virtual-harness.d.ts.map +0 -1
  73. package/dist/codex/virtual-harness.js +0 -2650
  74. package/dist/codex/virtual-harness.js.map +0 -1
  75. package/dist/codex-workspace-bridge.d.ts +0 -108
  76. package/dist/codex-workspace-bridge.d.ts.map +0 -1
  77. package/dist/codex-workspace-bridge.js +0 -502
  78. package/dist/codex-workspace-bridge.js.map +0 -1
  79. package/dist/config.d.ts +0 -99
  80. package/dist/config.d.ts.map +0 -1
  81. package/dist/config.js +0 -127
  82. package/dist/config.js.map +0 -1
  83. package/dist/connection-controller.d.ts +0 -44
  84. package/dist/connection-controller.d.ts.map +0 -1
  85. package/dist/connection-controller.js +0 -185
  86. package/dist/connection-controller.js.map +0 -1
  87. package/dist/control-route.d.ts +0 -34
  88. package/dist/control-route.d.ts.map +0 -1
  89. package/dist/control-route.js +0 -136
  90. package/dist/control-route.js.map +0 -1
  91. package/dist/control-runtime.d.ts +0 -138
  92. package/dist/control-runtime.d.ts.map +0 -1
  93. package/dist/control-runtime.js +0 -543
  94. package/dist/control-runtime.js.map +0 -1
  95. package/dist/control-stream.d.ts +0 -67
  96. package/dist/control-stream.d.ts.map +0 -1
  97. package/dist/control-stream.js +0 -179
  98. package/dist/control-stream.js.map +0 -1
  99. package/dist/defaults.d.ts +0 -9
  100. package/dist/defaults.d.ts.map +0 -1
  101. package/dist/defaults.js +0 -9
  102. package/dist/defaults.js.map +0 -1
  103. package/dist/file-viewer-bridge.d.ts +0 -30
  104. package/dist/file-viewer-bridge.d.ts.map +0 -1
  105. package/dist/file-viewer-bridge.js +0 -128
  106. package/dist/file-viewer-bridge.js.map +0 -1
  107. package/dist/file-viewer-contract.d.ts +0 -5
  108. package/dist/file-viewer-contract.d.ts.map +0 -1
  109. package/dist/file-viewer-contract.js +0 -4
  110. package/dist/file-viewer-contract.js.map +0 -1
  111. package/dist/harness-api-bridge.d.ts +0 -81
  112. package/dist/harness-api-bridge.d.ts.map +0 -1
  113. package/dist/harness-api-bridge.js +0 -862
  114. package/dist/harness-api-bridge.js.map +0 -1
  115. package/dist/harness-api-history.d.ts +0 -3
  116. package/dist/harness-api-history.d.ts.map +0 -1
  117. package/dist/harness-api-history.js +0 -59
  118. package/dist/harness-api-history.js.map +0 -1
  119. package/dist/harness-remote-bridge.d.ts +0 -60
  120. package/dist/harness-remote-bridge.d.ts.map +0 -1
  121. package/dist/harness-remote-bridge.js +0 -540
  122. package/dist/harness-remote-bridge.js.map +0 -1
  123. package/dist/harness-version.d.ts +0 -23
  124. package/dist/harness-version.d.ts.map +0 -1
  125. package/dist/harness-version.js +0 -95
  126. package/dist/harness-version.js.map +0 -1
  127. package/dist/identity-store.d.ts +0 -45
  128. package/dist/identity-store.d.ts.map +0 -1
  129. package/dist/identity-store.js +0 -186
  130. package/dist/identity-store.js.map +0 -1
  131. package/dist/ids.d.ts +0 -2
  132. package/dist/ids.d.ts.map +0 -1
  133. package/dist/ids.js +0 -17
  134. package/dist/ids.js.map +0 -1
  135. package/dist/index.d.ts +0 -78
  136. package/dist/index.d.ts.map +0 -1
  137. package/dist/logging.d.ts +0 -18
  138. package/dist/logging.d.ts.map +0 -1
  139. package/dist/logging.js +0 -30
  140. package/dist/logging.js.map +0 -1
  141. package/dist/loopback-host.d.ts +0 -20
  142. package/dist/loopback-host.d.ts.map +0 -1
  143. package/dist/loopback-host.js +0 -245
  144. package/dist/loopback-host.js.map +0 -1
  145. package/dist/loopback-preview.d.ts +0 -19
  146. package/dist/loopback-preview.d.ts.map +0 -1
  147. package/dist/loopback-preview.js +0 -232
  148. package/dist/loopback-preview.js.map +0 -1
  149. package/dist/native-rtc-helper.d.ts +0 -14
  150. package/dist/native-rtc-helper.d.ts.map +0 -1
  151. package/dist/native-rtc-helper.js +0 -575
  152. package/dist/native-rtc-helper.js.map +0 -1
  153. package/dist/remote-api-proxy.d.ts +0 -17
  154. package/dist/remote-api-proxy.d.ts.map +0 -1
  155. package/dist/remote-api-proxy.js +0 -451
  156. package/dist/remote-api-proxy.js.map +0 -1
  157. package/dist/remote-directory-browser.d.ts +0 -16
  158. package/dist/remote-directory-browser.d.ts.map +0 -1
  159. package/dist/remote-directory-browser.js +0 -48
  160. package/dist/remote-directory-browser.js.map +0 -1
  161. package/dist/remote-file-content-provider.d.ts +0 -48
  162. package/dist/remote-file-content-provider.d.ts.map +0 -1
  163. package/dist/remote-file-content-provider.js +0 -93
  164. package/dist/remote-file-content-provider.js.map +0 -1
  165. package/dist/remote-typert-gateway.d.ts +0 -20
  166. package/dist/remote-typert-gateway.d.ts.map +0 -1
  167. package/dist/remote-typert-gateway.js +0 -334
  168. package/dist/remote-typert-gateway.js.map +0 -1
  169. package/dist/rpc-binary-attachments.d.ts +0 -33
  170. package/dist/rpc-binary-attachments.d.ts.map +0 -1
  171. package/dist/rpc-binary-attachments.js +0 -142
  172. package/dist/rpc-binary-attachments.js.map +0 -1
  173. package/dist/rpc-router.d.ts +0 -31
  174. package/dist/rpc-router.d.ts.map +0 -1
  175. package/dist/rpc-router.js +0 -201
  176. package/dist/rpc-router.js.map +0 -1
  177. package/dist/safe-error.d.ts +0 -8
  178. package/dist/safe-error.d.ts.map +0 -1
  179. package/dist/safe-error.js +0 -20
  180. package/dist/safe-error.js.map +0 -1
  181. package/dist/server-api.d.ts +0 -109
  182. package/dist/server-api.d.ts.map +0 -1
  183. package/dist/server-api.js +0 -520
  184. package/dist/server-api.js.map +0 -1
  185. package/dist/server-connection.d.ts +0 -79
  186. package/dist/server-connection.d.ts.map +0 -1
  187. package/dist/server-connection.js +0 -1023
  188. package/dist/server-connection.js.map +0 -1
  189. package/dist/server-credentials.d.ts +0 -55
  190. package/dist/server-credentials.d.ts.map +0 -1
  191. package/dist/server-credentials.js +0 -108
  192. package/dist/server-credentials.js.map +0 -1
  193. package/dist/service.d.ts +0 -151
  194. package/dist/service.d.ts.map +0 -1
  195. package/dist/service.js +0 -448
  196. package/dist/service.js.map +0 -1
  197. package/dist/session-format-compat.d.ts +0 -3
  198. package/dist/session-format-compat.d.ts.map +0 -1
  199. package/dist/session-format-compat.js +0 -183
  200. package/dist/session-format-compat.js.map +0 -1
  201. package/dist/status-stream.d.ts +0 -48
  202. package/dist/status-stream.d.ts.map +0 -1
  203. package/dist/status-stream.js +0 -133
  204. package/dist/status-stream.js.map +0 -1
  205. package/dist/terminal-policy.d.ts +0 -21
  206. package/dist/terminal-policy.d.ts.map +0 -1
  207. package/dist/terminal-policy.js +0 -68
  208. package/dist/terminal-policy.js.map +0 -1
  209. package/dist/tui-command.d.ts +0 -13
  210. package/dist/tui-command.d.ts.map +0 -1
  211. package/dist/tui-command.js +0 -392
  212. package/dist/tui-command.js.map +0 -1
  213. package/dist/typert-gateway-contract.d.ts +0 -59
  214. package/dist/typert-gateway-contract.d.ts.map +0 -1
  215. package/dist/typert-gateway-contract.js +0 -2
  216. package/dist/typert-gateway-contract.js.map +0 -1
  217. package/dist/typert-gateway-switch.d.ts +0 -85
  218. package/dist/typert-gateway-switch.d.ts.map +0 -1
  219. package/dist/typert-gateway-switch.js +0 -448
  220. package/dist/typert-gateway-switch.js.map +0 -1
  221. package/dist/types.d.ts +0 -20
  222. package/dist/types.d.ts.map +0 -1
  223. package/dist/types.js +0 -2
  224. package/dist/types.js.map +0 -1
  225. package/dist/version.d.ts +0 -12
  226. package/dist/version.d.ts.map +0 -1
  227. package/dist/version.js +0 -12
  228. package/dist/version.js.map +0 -1
  229. package/dist/werift-rtc.d.ts +0 -121
  230. package/dist/werift-rtc.d.ts.map +0 -1
  231. package/dist/werift-rtc.js +0 -490
  232. package/dist/werift-rtc.js.map +0 -1
@@ -1,451 +0,0 @@
1
- import { RemoteClientError } from '@dsh-remote/client-core';
2
- import { decodeByteValue, hydrateRpcAttachments } from './rpc-binary-attachments.js';
3
- import { HARNESS_API_TRANSFER_CHUNK_BYTES, MAX_HARNESS_API_TRANSFER_BYTES, } from '@dsh-remote/protocol';
4
- import { uuidV7 } from './ids.js';
5
- const DIRECT_API_CALL_BYTES = 2 * 1024 * 1024;
6
- const AGENT_PRESET_SETTINGS_NS = 'agent-presets';
7
- const LEGACY_AGENT_PRESET_ALIASES = {
8
- code: 'ptc',
9
- };
10
- const WELCOME_NOTICE_NAMESPACE = 'ui-settings-general';
11
- const WELCOME_NOTICE_FIELD = 'welcomeNoticeVersion';
12
- const WELCOME_NOTICE_VERSION = '2026-08-13.1';
13
- /** ApiProxy-compatible face that preserves the native Harness envelopes over Remote RPC. */
14
- export class RemoteHarnessApiProxy {
15
- client;
16
- harnessVersion;
17
- api;
18
- legacyWelcomeAcknowledged = false;
19
- settingsDescribeValue;
20
- constructor(client, harnessVersion) {
21
- this.client = client;
22
- this.harnessVersion = harnessVersion;
23
- const call = (method) => (request, signal) => this.call(method, request, signal);
24
- this.api = {
25
- sessions: {
26
- list: call('session.list'),
27
- search: call('session.search'),
28
- create: call('session.create'),
29
- history: call('session.history'),
30
- models: call('session.models'),
31
- selectModel: call('session.selectModel'),
32
- rename: call('session.rename'),
33
- fork: call('session.fork'),
34
- prompt: call('session.prompt'),
35
- attachment: call('session.attachment'),
36
- updateQueue: call('session.updateQueue'),
37
- cancel: call('session.cancel'),
38
- },
39
- subagents: {
40
- list: call('subagent.list'),
41
- history: call('subagent.history'),
42
- prompt: call('subagent.prompt'),
43
- interrupt: call('subagent.interrupt'),
44
- },
45
- host: {
46
- describe: call('host.describe'),
47
- pickDirectory: call('host.pickDirectory'),
48
- listDirectory: call('host.listDirectory'),
49
- createDirectory: call('host.createDirectory'),
50
- openPath: call('host.openPath'),
51
- },
52
- workspace: {
53
- list: call('workspace.list'),
54
- create: call('workspace.create'),
55
- rename: call('workspace.rename'),
56
- delete: call('workspace.delete'),
57
- insertBefore: call('workspace.insertBefore'),
58
- insertSessionBefore: call('workspace.insertSessionBefore'),
59
- archiveSession: call('workspace.archiveSession'),
60
- },
61
- skills: { list: call('skill.list') },
62
- agentPresets: {
63
- list: call('agentPreset.list'),
64
- select: call('agentPreset.select'),
65
- read: call('agentPreset.read'),
66
- copy: call('agentPreset.copy'),
67
- openDocument: call('agentPreset.openDocument'),
68
- remove: call('agentPreset.remove'),
69
- },
70
- goals: {
71
- create: call('goal.create'),
72
- edit: call('goal.edit'),
73
- pause: call('goal.pause'),
74
- resume: call('goal.resume'),
75
- complete: call('goal.complete'),
76
- clear: call('goal.clear'),
77
- },
78
- settings: {
79
- describe: call('settings.describe'),
80
- openDocument: call('settings.openDocument'),
81
- update: call('settings.update'),
82
- replace: call('settings.replace'),
83
- mutate: call('settings.mutate'),
84
- },
85
- credentials: {
86
- describe: call('credentials.describe'),
87
- set: call('credentials.set'),
88
- unset: call('credentials.unset'),
89
- },
90
- llm: {
91
- providers: call('llm.providers'),
92
- models: call('llm.models'),
93
- discoverModels: call('llm.discoverModels'),
94
- },
95
- events: {
96
- mux: (request, signal) => this.stream('mux', request, signal),
97
- host: (request, signal) => this.stream('host', request, signal),
98
- },
99
- downloads: {},
100
- respond: message => this.respond(message),
101
- };
102
- }
103
- async call(method, request, signal) {
104
- const params = {
105
- method,
106
- rpcId: String(request.rpcId),
107
- payload: normalizeLegacyRequest(method, request.payload),
108
- };
109
- const encoded = new TextEncoder().encode(JSON.stringify(params));
110
- const response = method === 'session.attachment' || encoded.byteLength > DIRECT_API_CALL_BYTES
111
- ? await this.callTransferred(encoded, signal)
112
- : await this.client.rpc('harness.api.call', params, signal);
113
- if (String(response.rpcId) !== String(request.rpcId) || typeof response.result !== 'object' || response.result === null) {
114
- throw new Error('The remote Host returned an invalid Harness API response.');
115
- }
116
- // The Host sends bytes beside the result (see collectRpcAttachments); DSH's own connection layer
117
- // would copy them back before validation, so restore them here.
118
- const hydrated = { ...response, result: hydrateRpcAttachments(response.result) };
119
- const normalized = normalizeLegacyResponse(method, normalizeByteResult(method, hydrated));
120
- return this.normalizeLegacyWelcomeSettings(method, params.payload, normalized);
121
- }
122
- normalizeLegacyWelcomeSettings(method, payload, response) {
123
- if (!isLegacyRemoteHost(this.harnessVersion))
124
- return response;
125
- if (method === 'settings.describe' && response.result.ok && isRecord(response.result.value)) {
126
- this.settingsDescribeValue = response.result.value;
127
- return this.legacyWelcomeAcknowledged ? patchWelcomeDescribe(response) : response;
128
- }
129
- if (method !== 'settings.mutate' || !isWelcomeNoticeRequest(payload))
130
- return response;
131
- this.legacyWelcomeAcknowledged = true;
132
- // Older Hosts reject the 0.1.7 onboarding field before returning a usable
133
- // settings snapshot. Treat the acknowledgement as client-local in that
134
- // case; a later describe is patched when one becomes available.
135
- return patchWelcomeMutate(this.settingsDescribeValue ?? { namespaces: [] }, response.rpcId);
136
- }
137
- async callTransferred(encoded, signal) {
138
- if (encoded.byteLength > MAX_HARNESS_API_TRANSFER_BYTES) {
139
- throw new Error('The Harness API request exceeds the remote image transfer limit.');
140
- }
141
- const transferId = uuidV7();
142
- const totalChunks = Math.ceil(encoded.byteLength / HARNESS_API_TRANSFER_CHUNK_BYTES);
143
- let opened = false;
144
- try {
145
- await this.client.rpc('harness.api.transfer.open', {
146
- transferId,
147
- totalBytes: encoded.byteLength,
148
- totalChunks,
149
- }, signal);
150
- opened = true;
151
- for (let index = 0; index < totalChunks; index += 1) {
152
- const start = index * HARNESS_API_TRANSFER_CHUNK_BYTES;
153
- const chunk = encoded.subarray(start, Math.min(start + HARNESS_API_TRANSFER_CHUNK_BYTES, encoded.byteLength));
154
- await this.client.rpc('harness.api.transfer.chunk', {
155
- transferId,
156
- index,
157
- data: bytesToBase64(chunk),
158
- }, signal);
159
- }
160
- const committed = await this.client.rpc('harness.api.transfer.commit', { transferId }, signal);
161
- if (committed.kind === 'inline')
162
- return committed.response;
163
- if (committed.transferId !== transferId
164
- || committed.totalBytes <= 0
165
- || committed.totalBytes > MAX_HARNESS_API_TRANSFER_BYTES
166
- || committed.totalChunks !== Math.ceil(committed.totalBytes / HARNESS_API_TRANSFER_CHUNK_BYTES)) {
167
- throw new Error('The remote Host returned an invalid Harness API transfer descriptor.');
168
- }
169
- const responseBytes = new Uint8Array(committed.totalBytes);
170
- let offset = 0;
171
- for (let index = 0; index < committed.totalChunks; index += 1) {
172
- const result = await this.client.rpc('harness.api.transfer.read', { transferId, index }, signal);
173
- if (result.transferId !== transferId || result.index !== index) {
174
- throw new Error('The remote Host returned an out-of-order Harness API transfer chunk.');
175
- }
176
- const chunk = base64ToBytes(result.data);
177
- const expectedBytes = Math.min(HARNESS_API_TRANSFER_CHUNK_BYTES, committed.totalBytes - offset);
178
- if (chunk.byteLength !== expectedBytes) {
179
- throw new Error('The remote Host returned an invalid Harness API transfer chunk.');
180
- }
181
- responseBytes.set(chunk, offset);
182
- offset += chunk.byteLength;
183
- }
184
- return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(responseBytes));
185
- }
186
- finally {
187
- if (opened) {
188
- await this.client.rpc('harness.api.transfer.close', { transferId }).catch(() => undefined);
189
- }
190
- }
191
- }
192
- async respond(message) {
193
- return this.client.rpc('harness.api.respond', { message });
194
- }
195
- async *stream(stream, request, signal) {
196
- const streamId = uuidV7();
197
- const queue = new AsyncFrameQueue();
198
- const unsubscribe = this.client.onEvent(event => routeStreamEvent(event, streamId, queue));
199
- const unsubscribeClose = this.client.onClose(() => queue.close());
200
- const onAbort = () => queue.close();
201
- signal.addEventListener('abort', onAbort, { once: true });
202
- try {
203
- try {
204
- await this.client.rpc('harness.api.stream.open', {
205
- streamId,
206
- stream,
207
- rpcId: String(request.rpcId),
208
- payload: request.payload,
209
- }, signal);
210
- for await (const frame of queue)
211
- yield frame;
212
- }
213
- catch (error) {
214
- // Native Harness event consumers treat a thrown stream iterator as a
215
- // fatal load failure. A remote disconnect is normal lifecycle here:
216
- // ClientModeRuntime has already switched ApiProxy back to local mode,
217
- // so finish this old iterator cleanly instead of terminating Harness.
218
- if (!isRemoteDisconnect(error))
219
- throw error;
220
- }
221
- }
222
- finally {
223
- signal.removeEventListener('abort', onAbort);
224
- unsubscribe();
225
- unsubscribeClose();
226
- queue.close();
227
- await this.client.rpc('harness.api.stream.close', { streamId }).catch(() => undefined);
228
- }
229
- }
230
- }
231
- /** RC7 host.describe did not include the home field made mandatory by RC8. */
232
- function normalizeLegacyResponse(method, response) {
233
- if (method !== 'host.describe' || !response.result.ok)
234
- return response;
235
- const value = response.result.value;
236
- if (typeof value !== 'object' || value === null || Array.isArray(value))
237
- return response;
238
- const description = value;
239
- if (typeof description.home === 'string' || typeof description.cwd !== 'string')
240
- return response;
241
- return {
242
- ...response,
243
- result: {
244
- ...response.result,
245
- value: { ...description, home: description.cwd },
246
- },
247
- };
248
- }
249
- /** Older Remote Web clients persisted the pre-rc.1 coding preset id as `code`. */
250
- function normalizeLegacyRequest(method, payload) {
251
- if (!isRecord(payload))
252
- return payload;
253
- if (method === 'agentPreset.read')
254
- return replaceAgentPreset(payload, 'agentPreset');
255
- if (method === 'agentPreset.select')
256
- return replaceAgentPreset(payload, 'agentPreset');
257
- if (method === 'agentPreset.copy')
258
- return replaceAgentPreset(payload, 'from');
259
- if (method === 'settings.update' || method === 'settings.replace' || method === 'settings.mutate') {
260
- return replaceAgentPresetSettings(payload);
261
- }
262
- return payload;
263
- }
264
- function replaceAgentPreset(payload, key) {
265
- const value = payload[key];
266
- const replacement = typeof value === 'string' ? LEGACY_AGENT_PRESET_ALIASES[value] : undefined;
267
- return replacement === undefined ? payload : { ...payload, [key]: replacement };
268
- }
269
- function replaceAgentPresetSettings(payload) {
270
- if (payload.ns !== AGENT_PRESET_SETTINGS_NS || !isRecord(payload.patch))
271
- return payload;
272
- const patch = replaceAgentPreset(payload.patch, 'default');
273
- return patch === payload.patch ? payload : { ...payload, patch };
274
- }
275
- function isLegacyRemoteHost(version) {
276
- if (version === undefined)
277
- return false;
278
- const match = /^(?:dsh-)?v?(\d+)\.(\d+)\.(\d+)(?:-|$)/u.exec(version.trim());
279
- return match !== null && Number(match[1]) === 0 && Number(match[2]) === 1 && Number(match[3]) < 7;
280
- }
281
- function isWelcomeNoticeRequest(payload) {
282
- if (!isRecord(payload) || payload.ns !== WELCOME_NOTICE_NAMESPACE || !Array.isArray(payload.ops))
283
- return false;
284
- return payload.ops.some(operation => isRecord(operation)
285
- && operation.op === 'set'
286
- && Array.isArray(operation.path)
287
- && operation.path.length === 1
288
- && operation.path[0] === WELCOME_NOTICE_FIELD
289
- && operation.value === WELCOME_NOTICE_VERSION);
290
- }
291
- function patchWelcomeDescribe(response) {
292
- if (!response.result.ok || !isRecord(response.result.value) || !Array.isArray(response.result.value.namespaces))
293
- return response;
294
- return {
295
- ...response,
296
- result: {
297
- ...response.result,
298
- value: {
299
- ...response.result.value,
300
- namespaces: response.result.value.namespaces.map(namespace => {
301
- if (!isRecord(namespace) || namespace.ns !== WELCOME_NOTICE_NAMESPACE)
302
- return namespace;
303
- const value = isRecord(namespace.value) ? namespace.value : {};
304
- return { ...namespace, value: { ...value, [WELCOME_NOTICE_FIELD]: WELCOME_NOTICE_VERSION } };
305
- }),
306
- },
307
- },
308
- };
309
- }
310
- function patchWelcomeMutate(value, rpcId) {
311
- const response = {
312
- rpcId,
313
- result: { ok: true, value: { ...value, namespaces: [] } },
314
- };
315
- const namespaces = Array.isArray(value.namespaces) ? value.namespaces : [];
316
- response.result.value.namespaces = namespaces.map(namespace => {
317
- if (!isRecord(namespace) || namespace.ns !== WELCOME_NOTICE_NAMESPACE)
318
- return namespace;
319
- const current = isRecord(namespace.value) ? namespace.value : {};
320
- return { ...namespace, value: { ...current, [WELCOME_NOTICE_FIELD]: WELCOME_NOTICE_VERSION } };
321
- });
322
- return response;
323
- }
324
- function isRemoteDisconnect(error) {
325
- return error instanceof RemoteClientError
326
- && (error.code === 'TRANSPORT_CLOSED' || error.code === 'CLIENT_CLOSED');
327
- }
328
- function isRecord(value) {
329
- return typeof value === 'object' && value !== null && !Array.isArray(value);
330
- }
331
- class AsyncFrameQueue {
332
- values = [];
333
- waiters = [];
334
- closed = false;
335
- push(value) {
336
- if (this.closed)
337
- return;
338
- const waiter = this.waiters.shift();
339
- if (waiter === undefined)
340
- this.values.push(value);
341
- else
342
- waiter({ done: false, value });
343
- }
344
- close() {
345
- if (this.closed)
346
- return;
347
- this.closed = true;
348
- for (const waiter of this.waiters.splice(0))
349
- waiter({ done: true, value: undefined });
350
- }
351
- async *[Symbol.asyncIterator]() {
352
- while (true) {
353
- const value = this.values.shift();
354
- if (value !== undefined) {
355
- yield value;
356
- continue;
357
- }
358
- if (this.closed)
359
- return;
360
- const next = await new Promise(resolve => this.waiters.push(resolve));
361
- if (next.done)
362
- return;
363
- yield next.value;
364
- }
365
- }
366
- }
367
- function routeStreamEvent(event, streamId, queue) {
368
- if (event.event === 'harness.api.frame') {
369
- const data = event.data;
370
- if (data.streamId !== streamId || typeof data.frame !== 'object' || data.frame === null
371
- || typeof data.frame.rpcId !== 'string' || !('payload' in data.frame))
372
- return;
373
- queue.push(data.frame);
374
- }
375
- if (event.event === 'harness.api.stream.closed') {
376
- const data = event.data;
377
- if (data.streamId === streamId)
378
- queue.close();
379
- }
380
- }
381
- function bytesToBase64(bytes) {
382
- let binary = '';
383
- for (let offset = 0; offset < bytes.byteLength; offset += 0x8000) {
384
- binary += String.fromCharCode(...bytes.subarray(offset, Math.min(offset + 0x8000, bytes.byteLength)));
385
- }
386
- return btoa(binary);
387
- }
388
- function base64ToBytes(value) {
389
- let binary;
390
- try {
391
- binary = atob(value);
392
- }
393
- catch {
394
- throw new Error('The remote Host returned a malformed Harness API transfer chunk.');
395
- }
396
- const bytes = new Uint8Array(binary.length);
397
- for (let index = 0; index < binary.length; index += 1)
398
- bytes[index] = binary.charCodeAt(index);
399
- if (bytesToBase64(bytes) !== value) {
400
- throw new Error('The remote Host returned a non-canonical Harness API transfer chunk.');
401
- }
402
- return bytes;
403
- }
404
- /**
405
- * \`workspaceFiles.readBytes\` must reach the native UI as a \`Uint8Array\`.
406
- *
407
- * The CodeX workspace projection answers it with base64 for its own consumers, and the generated schema
408
- * on the native side rejects that with \`expected "Uint8Array", path: ["data"]\`. This carrier uses the
409
- * dotted method name, so the check is separate from the Typert one. A shape warning (type and key count
410
- * only) makes a value that still cannot be decoded identifiable instead of invisible.
411
- *
412
- * @param method - ApiProxy method name.
413
- * @param response - the peer's response.
414
- * @returns the response with byte-valued fields restored.
415
- */
416
- /** Shapes only: what a byte field looks like where it crosses a seam (never the content). */
417
- function describeBytes(data) {
418
- return {
419
- dataIsBytes: data instanceof Uint8Array,
420
- dataType: typeof data,
421
- dataKeys: typeof data === 'object' && data !== null ? Object.keys(data).length : 0,
422
- preview: typeof data === 'string' ? data.slice(0, 12) : undefined,
423
- };
424
- }
425
- function normalizeByteResult(method, response) {
426
- if (method !== 'workspaceFiles.readBytes')
427
- return response;
428
- const result = response.result;
429
- if (result === undefined || result.ok !== true)
430
- return response;
431
- const value = result.value;
432
- if (typeof value !== 'object' || value === null || Array.isArray(value))
433
- return response;
434
- const data = value.data;
435
- console.warn('[dsh-remote] workspaceFiles/readBytes at the ApiProxy exit', describeBytes(data));
436
- if (data instanceof Uint8Array)
437
- return response;
438
- const bytes = decodeByteValue(data);
439
- // Shapes only; never the content itself. This is the seam that faces the local shell.
440
- console.warn('[dsh-remote] workspace probe', {
441
- where: 'apiproxy.exit',
442
- endpoint: method,
443
- dataType: typeof data,
444
- dataKeys: typeof data === 'object' && data !== null ? Object.keys(data).length : 0,
445
- decoded: bytes !== undefined,
446
- });
447
- if (bytes === undefined)
448
- return response;
449
- return { ...response, result: { ...result, value: { ...value, data: bytes } } };
450
- }
451
- //# sourceMappingURL=remote-api-proxy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-api-proxy.js","sourceRoot":"","sources":["../src/remote-api-proxy.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- interface DirectoryEntry {
2
- name: string;
3
- path: string;
4
- hidden: boolean;
5
- }
6
- export interface DirectoryListing {
7
- path: string;
8
- home: string;
9
- crumbs: DirectoryEntry[];
10
- entries: DirectoryEntry[];
11
- truncated: boolean;
12
- }
13
- /** Read-only fallback used only over an authenticated Host channel when Harness has a native-only picker. */
14
- export declare function listRemoteDirectory(path?: string, signal?: AbortSignal): Promise<DirectoryListing>;
15
- export {};
16
- //# sourceMappingURL=remote-directory-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-directory-browser.d.ts","sourceRoot":"","sources":["../src/remote-directory-browser.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;CACnB;AAID,6GAA6G;AAC7G,wBAAsB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuBxG"}
@@ -1,48 +0,0 @@
1
- import { readdir, stat } from 'node:fs/promises';
2
- import { homedir, platform } from 'node:os';
3
- import { basename, dirname, isAbsolute, parse, resolve } from 'node:path';
4
- const MAX_ENTRIES = 500;
5
- /** Read-only fallback used only over an authenticated Host channel when Harness has a native-only picker. */
6
- export async function listRemoteDirectory(path, signal) {
7
- signal?.throwIfAborted();
8
- const home = resolve(homedir());
9
- const target = path === undefined || path.trim() === '' ? home : resolve(path);
10
- if (!isAbsolute(target))
11
- throw new Error('The remote directory path must be absolute.');
12
- const rows = await readdir(target, { withFileTypes: true });
13
- const directories = [];
14
- for (const row of rows) {
15
- signal?.throwIfAborted();
16
- const child = resolve(target, row.name);
17
- let directory = row.isDirectory();
18
- if (!directory && row.isSymbolicLink())
19
- directory = await stat(child).then(value => value.isDirectory()).catch(() => false);
20
- if (!directory)
21
- continue;
22
- directories.push({ name: row.name, path: child, hidden: platform() !== 'win32' && row.name.startsWith('.') });
23
- }
24
- directories.sort((left, right) => left.name.localeCompare(right.name, undefined, { sensitivity: 'base' }));
25
- return {
26
- path: target,
27
- home,
28
- crumbs: crumbs(target),
29
- entries: directories.slice(0, MAX_ENTRIES),
30
- truncated: directories.length > MAX_ENTRIES,
31
- };
32
- }
33
- function crumbs(path) {
34
- const root = parse(path).root;
35
- const result = [{ name: root, path: root, hidden: false }];
36
- const segments = [];
37
- let current = path;
38
- while (current !== root) {
39
- segments.unshift(basename(current));
40
- current = dirname(current);
41
- }
42
- for (const segment of segments) {
43
- current = resolve(current, segment);
44
- result.push({ name: segment, path: current, hidden: false });
45
- }
46
- return result;
47
- }
48
- //# sourceMappingURL=remote-directory-browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-directory-browser.js","sourceRoot":"","sources":["../src/remote-directory-browser.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- export interface RemoteFileContentMeta {
2
- name: string;
3
- size: number;
4
- mime?: string;
5
- mtimeMs?: number;
6
- isDirectory?: boolean;
7
- }
8
- export interface RemoteFileContentEntry extends RemoteFileContentMeta {
9
- locator: string;
10
- }
11
- export interface RemoteFileReadRequest {
12
- offset: number;
13
- length: number;
14
- signal: AbortSignal;
15
- }
16
- export interface RemoteFileContentProvider {
17
- id: string;
18
- priority: number;
19
- supports(locator: string): boolean;
20
- stat(locator: string, signal: AbortSignal): Promise<RemoteFileContentMeta | undefined>;
21
- read(locator: string, request: RemoteFileReadRequest): Promise<Uint8Array>;
22
- list(locator: string, signal: AbortSignal): Promise<RemoteFileContentEntry[]>;
23
- openExternal?: (locator: string, signal: AbortSignal) => Promise<void>;
24
- saveAsAllowed?: (locator: string) => boolean | {
25
- allowed: boolean;
26
- maxBytes?: number;
27
- };
28
- }
29
- export type RemoteFileControlCall = <T>(endpoint: 'fileviewer.stat' | 'fileviewer.readRange' | 'fileviewer.list', payload: Record<string, unknown>, signal?: AbortSignal) => Promise<T>;
30
- export interface RemoteFileViewerStatus {
31
- mode: 'local' | 'remote';
32
- transport?: 'LAN' | 'P2P' | 'TURN' | 'Relay' | 'Disconnected';
33
- remoteFeatures?: {
34
- fileViewer: boolean;
35
- };
36
- }
37
- /** Fail closed for legacy/unknown Hosts that predate remote file-viewer support. */
38
- export declare function shouldUseRemoteFileViewer(status: RemoteFileViewerStatus): boolean;
39
- export declare const REMOTE_FILE_SAVE_AS_MAX_BYTES: number;
40
- export declare const REMOTE_FILE_FAST_SAVE_AS_MAX_BYTES: number;
41
- export declare function shouldAllowRemoteFileSaveAs(status: RemoteFileViewerStatus): boolean;
42
- export declare function remoteFileSaveAsMaxBytes(status: RemoteFileViewerStatus): number;
43
- /** Browser-side provider registered into dsh-file-viewer's `fileViewer` service. */
44
- export declare function createRemoteFileContentProvider(call: RemoteFileControlCall, options?: {
45
- saveAsAllowed?: boolean | (() => boolean);
46
- saveAsMaxBytes?: number | (() => number);
47
- }): RemoteFileContentProvider;
48
- //# sourceMappingURL=remote-file-content-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-file-content-provider.d.ts","sourceRoot":"","sources":["../src/remote-file-content-provider.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IAClC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAA;IACtF,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAA;IAC7E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACvF;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,EACpC,QAAQ,EAAE,iBAAiB,GAAG,sBAAsB,GAAG,iBAAiB,EACxE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,CAAC,CAAC,CAAA;AAEf,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CAAA;IAC7D,cAAc,CAAC,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;CACzC;AAED,oFAAoF;AACpF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAEjF;AAED,eAAO,MAAM,6BAA6B,QAAoB,CAAA;AAC9D,eAAO,MAAM,kCAAkC,QAAqB,CAAA;AAEpE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAEnF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAI/E;AA+BD,oFAAoF;AACpF,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAA;CAAO,GAAG,yBAAyB,CAwD7M"}