@blue-soda/dsh-remote 0.4.28

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 (225) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +81 -0
  3. package/bin/ds-harness-remote.js +11 -0
  4. package/cordis.patch.yml +32 -0
  5. package/dist/acp.d.ts +75 -0
  6. package/dist/acp.d.ts.map +1 -0
  7. package/dist/acp.js +61 -0
  8. package/dist/acp.js.map +1 -0
  9. package/dist/api-proxy-switch.d.ts +33 -0
  10. package/dist/api-proxy-switch.d.ts.map +1 -0
  11. package/dist/api-proxy-switch.js +109 -0
  12. package/dist/api-proxy-switch.js.map +1 -0
  13. package/dist/bin/doctor.d.ts +3 -0
  14. package/dist/bin/doctor.d.ts.map +1 -0
  15. package/dist/bin/doctor.js +13 -0
  16. package/dist/bin/doctor.js.map +1 -0
  17. package/dist/cli.d.ts +32 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +289 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/client-runtime.d.ts +239 -0
  22. package/dist/client-runtime.d.ts.map +1 -0
  23. package/dist/client-runtime.js +1391 -0
  24. package/dist/client-runtime.js.map +1 -0
  25. package/dist/client-secure-transport.d.ts +23 -0
  26. package/dist/client-secure-transport.d.ts.map +1 -0
  27. package/dist/client-secure-transport.js +143 -0
  28. package/dist/client-secure-transport.js.map +1 -0
  29. package/dist/client.d.ts +13 -0
  30. package/dist/client.d.ts.map +1 -0
  31. package/dist/client.github.js +4231 -0
  32. package/dist/client.js +4231 -0
  33. package/dist/codex/app-server.d.ts +71 -0
  34. package/dist/codex/app-server.d.ts.map +1 -0
  35. package/dist/codex/app-server.js +268 -0
  36. package/dist/codex/app-server.js.map +1 -0
  37. package/dist/codex/codex-image-codec.d.ts +7 -0
  38. package/dist/codex/codex-image-codec.d.ts.map +1 -0
  39. package/dist/codex/codex-image-codec.js +288 -0
  40. package/dist/codex/codex-image-codec.js.map +1 -0
  41. package/dist/codex/domain.d.ts +93 -0
  42. package/dist/codex/domain.d.ts.map +1 -0
  43. package/dist/codex/domain.js +1282 -0
  44. package/dist/codex/domain.js.map +1 -0
  45. package/dist/codex/method-policy.d.ts +338 -0
  46. package/dist/codex/method-policy.d.ts.map +1 -0
  47. package/dist/codex/method-policy.js +141 -0
  48. package/dist/codex/method-policy.js.map +1 -0
  49. package/dist/codex/peer-bridge.d.ts +57 -0
  50. package/dist/codex/peer-bridge.d.ts.map +1 -0
  51. package/dist/codex/peer-bridge.js +299 -0
  52. package/dist/codex/peer-bridge.js.map +1 -0
  53. package/dist/codex/permissions.d.ts +4 -0
  54. package/dist/codex/permissions.d.ts.map +1 -0
  55. package/dist/codex/permissions.js +21 -0
  56. package/dist/codex/permissions.js.map +1 -0
  57. package/dist/codex/session-id.d.ts +10 -0
  58. package/dist/codex/session-id.d.ts.map +1 -0
  59. package/dist/codex/session-id.js +15 -0
  60. package/dist/codex/session-id.js.map +1 -0
  61. package/dist/codex/virtual-harness.d.ts +209 -0
  62. package/dist/codex/virtual-harness.d.ts.map +1 -0
  63. package/dist/codex/virtual-harness.js +2616 -0
  64. package/dist/codex/virtual-harness.js.map +1 -0
  65. package/dist/codex-workspace-bridge.d.ts +108 -0
  66. package/dist/codex-workspace-bridge.d.ts.map +1 -0
  67. package/dist/codex-workspace-bridge.js +502 -0
  68. package/dist/codex-workspace-bridge.js.map +1 -0
  69. package/dist/config.d.ts +99 -0
  70. package/dist/config.d.ts.map +1 -0
  71. package/dist/config.js +127 -0
  72. package/dist/config.js.map +1 -0
  73. package/dist/connection-controller.d.ts +44 -0
  74. package/dist/connection-controller.d.ts.map +1 -0
  75. package/dist/connection-controller.js +185 -0
  76. package/dist/connection-controller.js.map +1 -0
  77. package/dist/control-route.d.ts +34 -0
  78. package/dist/control-route.d.ts.map +1 -0
  79. package/dist/control-route.js +136 -0
  80. package/dist/control-route.js.map +1 -0
  81. package/dist/control-runtime.d.ts +138 -0
  82. package/dist/control-runtime.d.ts.map +1 -0
  83. package/dist/control-runtime.js +543 -0
  84. package/dist/control-runtime.js.map +1 -0
  85. package/dist/control-stream.d.ts +67 -0
  86. package/dist/control-stream.d.ts.map +1 -0
  87. package/dist/control-stream.js +179 -0
  88. package/dist/control-stream.js.map +1 -0
  89. package/dist/defaults.d.ts +9 -0
  90. package/dist/defaults.d.ts.map +1 -0
  91. package/dist/defaults.js +9 -0
  92. package/dist/defaults.js.map +1 -0
  93. package/dist/file-viewer-bridge.d.ts +30 -0
  94. package/dist/file-viewer-bridge.d.ts.map +1 -0
  95. package/dist/file-viewer-bridge.js +128 -0
  96. package/dist/file-viewer-bridge.js.map +1 -0
  97. package/dist/file-viewer-contract.d.ts +5 -0
  98. package/dist/file-viewer-contract.d.ts.map +1 -0
  99. package/dist/file-viewer-contract.js +4 -0
  100. package/dist/file-viewer-contract.js.map +1 -0
  101. package/dist/harness-api-bridge.d.ts +79 -0
  102. package/dist/harness-api-bridge.d.ts.map +1 -0
  103. package/dist/harness-api-bridge.js +852 -0
  104. package/dist/harness-api-bridge.js.map +1 -0
  105. package/dist/harness-api-history.d.ts +3 -0
  106. package/dist/harness-api-history.d.ts.map +1 -0
  107. package/dist/harness-api-history.js +59 -0
  108. package/dist/harness-api-history.js.map +1 -0
  109. package/dist/harness-remote-bridge.d.ts +52 -0
  110. package/dist/harness-remote-bridge.d.ts.map +1 -0
  111. package/dist/harness-remote-bridge.js +529 -0
  112. package/dist/harness-remote-bridge.js.map +1 -0
  113. package/dist/harness-version.d.ts +23 -0
  114. package/dist/harness-version.d.ts.map +1 -0
  115. package/dist/harness-version.js +95 -0
  116. package/dist/harness-version.js.map +1 -0
  117. package/dist/identity-store.d.ts +45 -0
  118. package/dist/identity-store.d.ts.map +1 -0
  119. package/dist/identity-store.js +183 -0
  120. package/dist/identity-store.js.map +1 -0
  121. package/dist/ids.d.ts +2 -0
  122. package/dist/ids.d.ts.map +1 -0
  123. package/dist/ids.js +17 -0
  124. package/dist/ids.js.map +1 -0
  125. package/dist/index.d.ts +78 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +28870 -0
  128. package/dist/index.js.map +7 -0
  129. package/dist/logging.d.ts +18 -0
  130. package/dist/logging.d.ts.map +1 -0
  131. package/dist/logging.js +30 -0
  132. package/dist/logging.js.map +1 -0
  133. package/dist/loopback-host.d.ts +20 -0
  134. package/dist/loopback-host.d.ts.map +1 -0
  135. package/dist/loopback-host.js +245 -0
  136. package/dist/loopback-host.js.map +1 -0
  137. package/dist/loopback-preview.d.ts +19 -0
  138. package/dist/loopback-preview.d.ts.map +1 -0
  139. package/dist/loopback-preview.js +232 -0
  140. package/dist/loopback-preview.js.map +1 -0
  141. package/dist/native-rtc-helper.d.ts +14 -0
  142. package/dist/native-rtc-helper.d.ts.map +1 -0
  143. package/dist/native-rtc-helper.js +575 -0
  144. package/dist/native-rtc-helper.js.map +1 -0
  145. package/dist/remote-api-proxy.d.ts +17 -0
  146. package/dist/remote-api-proxy.d.ts.map +1 -0
  147. package/dist/remote-api-proxy.js +400 -0
  148. package/dist/remote-api-proxy.js.map +1 -0
  149. package/dist/remote-directory-browser.d.ts +16 -0
  150. package/dist/remote-directory-browser.d.ts.map +1 -0
  151. package/dist/remote-directory-browser.js +48 -0
  152. package/dist/remote-directory-browser.js.map +1 -0
  153. package/dist/remote-file-content-provider.d.ts +48 -0
  154. package/dist/remote-file-content-provider.d.ts.map +1 -0
  155. package/dist/remote-file-content-provider.js +93 -0
  156. package/dist/remote-file-content-provider.js.map +1 -0
  157. package/dist/remote-typert-gateway.d.ts +20 -0
  158. package/dist/remote-typert-gateway.d.ts.map +1 -0
  159. package/dist/remote-typert-gateway.js +332 -0
  160. package/dist/remote-typert-gateway.js.map +1 -0
  161. package/dist/rpc-router.d.ts +31 -0
  162. package/dist/rpc-router.d.ts.map +1 -0
  163. package/dist/rpc-router.js +201 -0
  164. package/dist/rpc-router.js.map +1 -0
  165. package/dist/safe-error.d.ts +8 -0
  166. package/dist/safe-error.d.ts.map +1 -0
  167. package/dist/safe-error.js +20 -0
  168. package/dist/safe-error.js.map +1 -0
  169. package/dist/server-api.d.ts +109 -0
  170. package/dist/server-api.d.ts.map +1 -0
  171. package/dist/server-api.js +520 -0
  172. package/dist/server-api.js.map +1 -0
  173. package/dist/server-connection.d.ts +79 -0
  174. package/dist/server-connection.d.ts.map +1 -0
  175. package/dist/server-connection.js +1023 -0
  176. package/dist/server-connection.js.map +1 -0
  177. package/dist/server-credentials.d.ts +55 -0
  178. package/dist/server-credentials.d.ts.map +1 -0
  179. package/dist/server-credentials.js +105 -0
  180. package/dist/server-credentials.js.map +1 -0
  181. package/dist/service.d.ts +141 -0
  182. package/dist/service.d.ts.map +1 -0
  183. package/dist/service.js +432 -0
  184. package/dist/service.js.map +1 -0
  185. package/dist/session-format-compat.d.ts +3 -0
  186. package/dist/session-format-compat.d.ts.map +1 -0
  187. package/dist/session-format-compat.js +183 -0
  188. package/dist/session-format-compat.js.map +1 -0
  189. package/dist/status-stream.d.ts +48 -0
  190. package/dist/status-stream.d.ts.map +1 -0
  191. package/dist/status-stream.js +133 -0
  192. package/dist/status-stream.js.map +1 -0
  193. package/dist/terminal-policy.d.ts +21 -0
  194. package/dist/terminal-policy.d.ts.map +1 -0
  195. package/dist/terminal-policy.js +68 -0
  196. package/dist/terminal-policy.js.map +1 -0
  197. package/dist/tui-command.d.ts +13 -0
  198. package/dist/tui-command.d.ts.map +1 -0
  199. package/dist/tui-command.js +390 -0
  200. package/dist/tui-command.js.map +1 -0
  201. package/dist/typert-gateway-contract.d.ts +59 -0
  202. package/dist/typert-gateway-contract.d.ts.map +1 -0
  203. package/dist/typert-gateway-contract.js +2 -0
  204. package/dist/typert-gateway-contract.js.map +1 -0
  205. package/dist/typert-gateway-switch.d.ts +85 -0
  206. package/dist/typert-gateway-switch.d.ts.map +1 -0
  207. package/dist/typert-gateway-switch.js +315 -0
  208. package/dist/typert-gateway-switch.js.map +1 -0
  209. package/dist/types.d.ts +20 -0
  210. package/dist/types.d.ts.map +1 -0
  211. package/dist/types.js +2 -0
  212. package/dist/types.js.map +1 -0
  213. package/dist/version.d.ts +12 -0
  214. package/dist/version.d.ts.map +1 -0
  215. package/dist/version.js +12 -0
  216. package/dist/version.js.map +1 -0
  217. package/dist/werift-rtc.d.ts +121 -0
  218. package/dist/werift-rtc.d.ts.map +1 -0
  219. package/dist/werift-rtc.js +490 -0
  220. package/dist/werift-rtc.js.map +1 -0
  221. package/dsh-plugin.json +41 -0
  222. package/locale/en.json +6 -0
  223. package/locale/zh.json +6 -0
  224. package/package.json +165 -0
  225. package/public.d.ts +26 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-file-content-provider.js","sourceRoot":"","sources":["../src/remote-file-content-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type RemoteClientCore } from '@dsh-remote/client-core';
2
+ import { type SessionFormatCompatibility } from './session-format-compat.js';
3
+ import type { RemoteTypertGatewayTarget, TypertGatewayRequest, TypertRpcResult } from './typert-gateway-contract.js';
4
+ /** Client-side alpha Gateway carrier over the authenticated Remote channel. */
5
+ export declare class RemoteTypertGateway implements RemoteTypertGatewayTarget {
6
+ private readonly client;
7
+ private readonly compatibility?;
8
+ private readonly harnessVersion?;
9
+ constructor(client: RemoteClientCore, compatibility?: SessionFormatCompatibility | undefined, harnessVersion?: string | undefined);
10
+ invoke(request: TypertGatewayRequest): Promise<unknown>;
11
+ dispatch(endpoint: string, payload: unknown, signal: AbortSignal): Promise<TypertRpcResult>;
12
+ private legacyWelcomeAcknowledged;
13
+ private settingsDescribeValue?;
14
+ /** DSH <=0.1.6 cannot persist the 0.1.7 welcome acknowledgement remotely. */
15
+ private normalizeLegacyWelcomeSettings;
16
+ open(endpoint: string, payload: unknown, signal: AbortSignal): Promise<AsyncIterable<unknown>>;
17
+ private iterate;
18
+ private callTransferred;
19
+ }
20
+ //# sourceMappingURL=remote-typert-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-typert-gateway.d.ts","sourceRoot":"","sources":["../src/remote-typert-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAWlF,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EAChB,MAAM,8BAA8B,CAAA;AAOrC,+EAA+E;AAC/E,qBAAa,mBAAoB,YAAW,yBAAyB;IAEjE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAFf,MAAM,EAAE,gBAAgB,EACxB,aAAa,CAAC,EAAE,0BAA0B,YAAA,EAC1C,cAAc,CAAC,EAAE,MAAM,YAAA;IAGpC,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvD,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;IA0B3B,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,qBAAqB,CAAC,CAAyB;IAEvD,6EAA6E;IAC7E,OAAO,CAAC,8BAA8B;IAiBhC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAoBrF,OAAO;YAwBR,eAAe;CA2D9B"}
@@ -0,0 +1,332 @@
1
+ import { RemoteClientError } from '@dsh-remote/client-core';
2
+ import { HARNESS_API_TRANSFER_CHUNK_BYTES, MAX_HARNESS_API_TRANSFER_BYTES, } from '@dsh-remote/protocol';
3
+ import { uuidV7 } from './ids.js';
4
+ import { normalizeLegacySessionGatewayValue, } from './session-format-compat.js';
5
+ const DIRECT_REMOTE_CALL_BYTES = 2 * 1024 * 1024;
6
+ const WELCOME_NOTICE_NAMESPACE = 'ui-settings-general';
7
+ const WELCOME_NOTICE_FIELD = 'welcomeNoticeVersion';
8
+ const WELCOME_NOTICE_VERSION = '2026-08-13.1';
9
+ /** Client-side alpha Gateway carrier over the authenticated Remote channel. */
10
+ export class RemoteTypertGateway {
11
+ client;
12
+ compatibility;
13
+ harnessVersion;
14
+ constructor(client, compatibility, harnessVersion) {
15
+ this.client = client;
16
+ this.compatibility = compatibility;
17
+ this.harnessVersion = harnessVersion;
18
+ }
19
+ async invoke(request) {
20
+ const result = await this.dispatch(`${request.namespace}/${request.method}`, { args: request.args }, request.signal ?? new AbortController().signal);
21
+ if (result.ok)
22
+ return result.value;
23
+ throw remoteFailure(result.error);
24
+ }
25
+ async dispatch(endpoint, payload, signal) {
26
+ // The Remote Gateway contract requires a single plain-object `args` field.
27
+ // Keep the payload unchanged here: converting it to positional arrays makes
28
+ // current Hosts reject even empty calls such as `llm/listProviders`.
29
+ const request = { endpoint, payload };
30
+ const encoded = new TextEncoder().encode(JSON.stringify(request));
31
+ let response;
32
+ if (encoded.byteLength > DIRECT_REMOTE_CALL_BYTES) {
33
+ response = await this.callTransferred(encoded, signal);
34
+ }
35
+ else {
36
+ try {
37
+ response = await this.client.rpc('harness.remote.call', request, signal);
38
+ }
39
+ catch (error) {
40
+ if (!hasErrorCode(error, 'RESPONSE_TOO_LARGE'))
41
+ throw error;
42
+ response = await this.callTransferred(encoded, signal);
43
+ }
44
+ }
45
+ const result = parseRpcResult(response);
46
+ const settingsResult = this.normalizeLegacyWelcomeSettings(endpoint, payload, result);
47
+ if (settingsResult !== undefined)
48
+ return settingsResult;
49
+ if (result.ok && this.compatibility === 'legacy-to-v3') {
50
+ return { ...result, value: normalizeLegacySessionGatewayValue(endpoint, result.value) };
51
+ }
52
+ return result;
53
+ }
54
+ legacyWelcomeAcknowledged = false;
55
+ settingsDescribeValue;
56
+ /** DSH <=0.1.6 cannot persist the 0.1.7 welcome acknowledgement remotely. */
57
+ normalizeLegacyWelcomeSettings(endpoint, payload, result) {
58
+ if (!isLegacyRemoteHost(this.harnessVersion))
59
+ return undefined;
60
+ if (endpoint === 'settings/describe' && result.ok && isRecord(result.value)) {
61
+ this.settingsDescribeValue = result.value;
62
+ return this.legacyWelcomeAcknowledged ? { ...result, value: patchWelcomeDescribe(result.value) } : undefined;
63
+ }
64
+ if (endpoint !== 'settings/mutate' || !isRecord(payload) || !isRecord(payload.args))
65
+ return undefined;
66
+ const args = payload.args;
67
+ if (args.ns !== WELCOME_NOTICE_NAMESPACE || !isWelcomeNoticeOperation(args.ops))
68
+ return undefined;
69
+ // Older Hosts reject the 0.1.7 onboarding field before returning a usable
70
+ // settings snapshot. Treat the acknowledgement as client-local in that
71
+ // case; a later describe is patched when one becomes available.
72
+ const value = patchWelcomeDescribe(this.settingsDescribeValue ?? { namespaces: [] });
73
+ this.legacyWelcomeAcknowledged = true;
74
+ return { ok: true, value };
75
+ }
76
+ async open(endpoint, payload, signal) {
77
+ const streamId = uuidV7();
78
+ const queue = new AsyncValueQueue();
79
+ const unsubscribe = this.client.onEvent(event => routeStreamEvent(event, streamId, queue));
80
+ const unsubscribeClose = this.client.onClose(() => {
81
+ queue.fail(new RemoteClientError('TRANSPORT_CLOSED', 'The remote Harness stream transport closed.'));
82
+ });
83
+ const onAbort = () => queue.close();
84
+ signal.addEventListener('abort', onAbort, { once: true });
85
+ try {
86
+ await this.client.rpc('harness.remote.stream.open', { streamId, endpoint, payload }, signal);
87
+ }
88
+ catch (error) {
89
+ signal.removeEventListener('abort', onAbort);
90
+ unsubscribe();
91
+ unsubscribeClose();
92
+ throw error;
93
+ }
94
+ return this.iterate(streamId, endpoint, queue, unsubscribe, unsubscribeClose, signal, onAbort);
95
+ }
96
+ async *iterate(streamId, endpoint, queue, unsubscribe, unsubscribeClose, signal, onAbort) {
97
+ try {
98
+ for await (const value of queue) {
99
+ yield this.compatibility === 'legacy-to-v3'
100
+ ? normalizeLegacySessionGatewayValue(endpoint, value)
101
+ : value;
102
+ }
103
+ }
104
+ finally {
105
+ signal.removeEventListener('abort', onAbort);
106
+ unsubscribe();
107
+ unsubscribeClose();
108
+ queue.close();
109
+ await this.client.rpc('harness.remote.stream.close', { streamId }).catch(() => undefined);
110
+ }
111
+ }
112
+ async callTransferred(encoded, signal) {
113
+ if (encoded.byteLength > MAX_HARNESS_API_TRANSFER_BYTES) {
114
+ throw new Error('The Harness Remote request exceeds the transfer limit.');
115
+ }
116
+ const transferId = uuidV7();
117
+ const totalChunks = Math.ceil(encoded.byteLength / HARNESS_API_TRANSFER_CHUNK_BYTES);
118
+ let opened = false;
119
+ try {
120
+ await this.client.rpc('harness.remote.transfer.open', {
121
+ transferId,
122
+ totalBytes: encoded.byteLength,
123
+ totalChunks,
124
+ }, signal);
125
+ opened = true;
126
+ for (let index = 0; index < totalChunks; index += 1) {
127
+ const start = index * HARNESS_API_TRANSFER_CHUNK_BYTES;
128
+ const chunk = encoded.subarray(start, Math.min(start + HARNESS_API_TRANSFER_CHUNK_BYTES, encoded.byteLength));
129
+ await this.client.rpc('harness.remote.transfer.chunk', {
130
+ transferId,
131
+ index,
132
+ data: bytesToBase64(chunk),
133
+ }, signal);
134
+ }
135
+ const committed = await this.client.rpc('harness.remote.transfer.commit', { transferId }, signal);
136
+ if (committed.kind === 'inline')
137
+ return committed.response;
138
+ if (committed.transferId !== transferId
139
+ || committed.totalBytes <= 0
140
+ || committed.totalBytes > MAX_HARNESS_API_TRANSFER_BYTES
141
+ || committed.totalChunks !== Math.ceil(committed.totalBytes / HARNESS_API_TRANSFER_CHUNK_BYTES)) {
142
+ throw new Error('The remote Host returned an invalid Harness Remote transfer descriptor.');
143
+ }
144
+ const responseBytes = new Uint8Array(committed.totalBytes);
145
+ let offset = 0;
146
+ for (let index = 0; index < committed.totalChunks; index += 1) {
147
+ const result = await this.client.rpc('harness.remote.transfer.read', { transferId, index }, signal);
148
+ if (result.transferId !== transferId || result.index !== index) {
149
+ throw new Error('The remote Host returned an out-of-order Harness Remote transfer chunk.');
150
+ }
151
+ const chunk = base64ToBytes(result.data);
152
+ const expectedBytes = Math.min(HARNESS_API_TRANSFER_CHUNK_BYTES, committed.totalBytes - offset);
153
+ if (chunk.byteLength !== expectedBytes) {
154
+ throw new Error('The remote Host returned an invalid Harness Remote transfer chunk.');
155
+ }
156
+ responseBytes.set(chunk, offset);
157
+ offset += chunk.byteLength;
158
+ }
159
+ return JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(responseBytes));
160
+ }
161
+ finally {
162
+ if (opened)
163
+ await this.client.rpc('harness.remote.transfer.close', { transferId }).catch(() => undefined);
164
+ }
165
+ }
166
+ }
167
+ class AsyncValueQueue {
168
+ values = [];
169
+ bytes = 0;
170
+ waiters = [];
171
+ closed = false;
172
+ error;
173
+ push(value) {
174
+ if (this.closed)
175
+ return;
176
+ const waiter = this.waiters.shift();
177
+ if (waiter !== undefined) {
178
+ waiter({ done: false, value });
179
+ return;
180
+ }
181
+ const bytes = new TextEncoder().encode(JSON.stringify(value) ?? '').byteLength;
182
+ if (this.values.length >= 256 || this.bytes + bytes > 4 * 1024 * 1024) {
183
+ this.values.length = 0;
184
+ this.bytes = 0;
185
+ this.fail(new RemoteClientError('TRANSPORT_CLOSED', 'Remote stream consumer is too slow; reconnect to recover.'));
186
+ return;
187
+ }
188
+ this.bytes += bytes;
189
+ this.values.push({ value, bytes });
190
+ }
191
+ close() {
192
+ if (this.closed)
193
+ return;
194
+ this.closed = true;
195
+ for (const waiter of this.waiters.splice(0))
196
+ waiter({ done: true, value: undefined });
197
+ }
198
+ fail(error) {
199
+ if (this.closed)
200
+ return;
201
+ this.error = error;
202
+ this.close();
203
+ }
204
+ async *[Symbol.asyncIterator]() {
205
+ while (true) {
206
+ if (this.values.length > 0) {
207
+ const entry = this.values.shift();
208
+ this.bytes -= entry.bytes;
209
+ yield entry.value;
210
+ continue;
211
+ }
212
+ if (this.closed) {
213
+ if (this.error !== undefined)
214
+ throw this.error;
215
+ return;
216
+ }
217
+ const next = await new Promise(resolve => this.waiters.push(resolve));
218
+ if (next.done) {
219
+ if (this.error !== undefined)
220
+ throw this.error;
221
+ return;
222
+ }
223
+ yield next.value;
224
+ }
225
+ }
226
+ }
227
+ function routeStreamEvent(event, streamId, queue) {
228
+ if (event.event === 'harness.remote.frame') {
229
+ const data = event.data;
230
+ if (data.streamId === streamId && data.hasValue === true)
231
+ queue.push(data.value);
232
+ return;
233
+ }
234
+ if (event.event !== 'harness.remote.stream.closed')
235
+ return;
236
+ const data = event.data;
237
+ if (data.streamId !== streamId)
238
+ return;
239
+ if (data.reason === 'failed') {
240
+ const failure = data.failure;
241
+ queue.fail(remoteFailure({
242
+ code: typeof failure?.code === 'string' ? failure.code : 'internal',
243
+ message: typeof failure?.message === 'string' ? failure.message : 'The remote Harness stream failed.',
244
+ details: isRecord(failure?.details) ? failure.details : {},
245
+ }));
246
+ }
247
+ else {
248
+ queue.close();
249
+ }
250
+ }
251
+ function parseRpcResult(value) {
252
+ if (!isRecord(value))
253
+ throw new Error('The remote Host returned an invalid Gateway result.');
254
+ if (value.ok === true)
255
+ return Object.hasOwn(value, 'value') ? { ok: true, value: value.value } : { ok: true };
256
+ if (value.ok !== false || !isRecord(value.error)
257
+ || typeof value.error.code !== 'string'
258
+ || typeof value.error.message !== 'string'
259
+ || !isRecord(value.error.details)) {
260
+ throw new Error('The remote Host returned an invalid Gateway failure.');
261
+ }
262
+ return {
263
+ ok: false,
264
+ error: { code: value.error.code, message: value.error.message, details: value.error.details },
265
+ };
266
+ }
267
+ function remoteFailure(failure) {
268
+ // v0.1.2-alpha.2+ identifies RemoteError values structurally across bundles and
269
+ // realms. Keep this carrier dependency-free so the same build still runs on
270
+ // older Harness releases, while preserving current stream failures at the local mux.
271
+ return Object.assign(new Error(failure.message), {
272
+ isDSHRemoteError: true,
273
+ code: failure.code,
274
+ details: failure.details,
275
+ });
276
+ }
277
+ function bytesToBase64(bytes) {
278
+ let binary = '';
279
+ for (let offset = 0; offset < bytes.byteLength; offset += 0x8000) {
280
+ binary += String.fromCharCode(...bytes.subarray(offset, Math.min(offset + 0x8000, bytes.byteLength)));
281
+ }
282
+ return btoa(binary);
283
+ }
284
+ function base64ToBytes(value) {
285
+ let binary;
286
+ try {
287
+ binary = atob(value);
288
+ }
289
+ catch {
290
+ throw new Error('The remote Host returned malformed Harness Remote transfer data.');
291
+ }
292
+ const bytes = new Uint8Array(binary.length);
293
+ for (let index = 0; index < binary.length; index += 1)
294
+ bytes[index] = binary.charCodeAt(index);
295
+ if (bytesToBase64(bytes) !== value)
296
+ throw new Error('The remote Host returned non-canonical Harness Remote transfer data.');
297
+ return bytes;
298
+ }
299
+ function isRecord(value) {
300
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
301
+ }
302
+ function hasErrorCode(error, code) {
303
+ return error instanceof Error && 'code' in error && error.code === code;
304
+ }
305
+ function isLegacyRemoteHost(version) {
306
+ if (version === undefined)
307
+ return false;
308
+ const match = /^(?:dsh-)?v?(\d+)\.(\d+)\.(\d+)(?:-|$)/u.exec(version.trim());
309
+ if (match === null)
310
+ return false;
311
+ return Number(match[1]) === 0 && Number(match[2]) === 1 && Number(match[3]) < 7;
312
+ }
313
+ function isWelcomeNoticeOperation(value) {
314
+ return Array.isArray(value) && value.some(operation => (isRecord(operation)
315
+ && operation.op === 'set'
316
+ && Array.isArray(operation.path)
317
+ && operation.path.length === 1
318
+ && operation.path[0] === WELCOME_NOTICE_FIELD
319
+ && operation.value === WELCOME_NOTICE_VERSION));
320
+ }
321
+ function patchWelcomeDescribe(value) {
322
+ if (!Array.isArray(value.namespaces))
323
+ return value;
324
+ const namespaces = value.namespaces.map(namespace => {
325
+ if (!isRecord(namespace) || namespace.ns !== WELCOME_NOTICE_NAMESPACE)
326
+ return namespace;
327
+ const current = isRecord(namespace.value) ? namespace.value : {};
328
+ return { ...namespace, value: { ...current, [WELCOME_NOTICE_FIELD]: WELCOME_NOTICE_VERSION } };
329
+ });
330
+ return { ...value, namespaces };
331
+ }
332
+ //# sourceMappingURL=remote-typert-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-typert-gateway.js","sourceRoot":"","sources":["../src/remote-typert-gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type RemoteMessage } from '@dsh-remote/protocol';
2
+ import type { LoopbackHost } from './loopback-host.js';
3
+ import type { RemoteFileViewerBridge } from './file-viewer-bridge.js';
4
+ import type { HarnessApiBridge } from './harness-api-bridge.js';
5
+ import type { HarnessRemoteBridge } from './harness-remote-bridge.js';
6
+ import type { SafeLogger } from './logging.js';
7
+ import type { CodexPeerBridge } from './codex/peer-bridge.js';
8
+ import type { AcpGateway } from './acp.js';
9
+ export { RpcError } from './safe-error.js';
10
+ export declare const HOST_CAPABILITIES: readonly ["harness.api.v1", "harness.api.transfer.v1", "harness.remote.v1", "harness.remote.transfer.v1", "fileviewer.read.v1", "codex.appserver.v1", "codex.appserver.transfer.v1", "agent.acp.v1"];
11
+ export declare class RpcRouter {
12
+ private readonly harnessApi;
13
+ private readonly maxPending;
14
+ private readonly logger?;
15
+ private readonly fileViewer?;
16
+ private readonly harnessRemote?;
17
+ private readonly capabilities;
18
+ private readonly codex?;
19
+ private readonly acp?;
20
+ private readonly loopback?;
21
+ private active;
22
+ constructor(harnessApi: HarnessApiBridge | undefined, maxPending?: number, logger?: SafeLogger | undefined, fileViewer?: RemoteFileViewerBridge | undefined, harnessRemote?: HarnessRemoteBridge | undefined, capabilities?: () => readonly string[], codex?: CodexPeerBridge | undefined, acp?: AcpGateway | undefined, loopback?: LoopbackHost | undefined);
23
+ closePeerStreams(): Promise<void>;
24
+ handle(message: RemoteMessage): Promise<RemoteMessage>;
25
+ private invoke;
26
+ private requireApiProxy;
27
+ private requireRemoteGateway;
28
+ private requireAcp;
29
+ private requireCodex;
30
+ }
31
+ //# sourceMappingURL=rpc-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-router.d.ts","sourceRoot":"","sources":["../src/rpc-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAsC1C,eAAO,MAAM,iBAAiB,sMASpB,CAAA;AAEV,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAX5B,OAAO,CAAC,MAAM,CAAI;gBAGC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,UAAU,SAAM,EAChB,MAAM,CAAC,EAAE,UAAU,YAAA,EACnB,UAAU,CAAC,EAAE,sBAAsB,YAAA,EACnC,aAAa,CAAC,EAAE,mBAAmB,YAAA,EACnC,YAAY,GAAE,MAAM,SAAS,MAAM,EAA4B,EAC/D,KAAK,CAAC,EAAE,eAAe,YAAA,EACvB,GAAG,CAAC,EAAE,UAAU,YAAA,EAChB,QAAQ,CAAC,EAAE,YAAY,YAAA;IAGpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC5D,OAAO,CAAC,MAAM;IAqDd,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;CAMrB"}
@@ -0,0 +1,201 @@
1
+ import { createRpcError, createRpcResponse, } from '@dsh-remote/protocol';
2
+ import { z } from 'zod';
3
+ import { RpcError, safeErrorCode } from './safe-error.js';
4
+ export { RpcError } from './safe-error.js';
5
+ const wireRequestSchema = z.object({ method: z.string().min(1), params: z.unknown() }).strict();
6
+ const emptyParamsSchema = z.object({}).strict();
7
+ const apiMethods = new Set([
8
+ 'harness.transport.describe',
9
+ 'harness.api.call',
10
+ 'harness.api.transfer.open',
11
+ 'harness.api.transfer.chunk',
12
+ 'harness.api.transfer.commit',
13
+ 'harness.api.transfer.read',
14
+ 'harness.api.transfer.close',
15
+ 'harness.api.respond',
16
+ 'harness.api.stream.open',
17
+ 'harness.api.stream.close',
18
+ 'harness.remote.call',
19
+ 'harness.remote.transfer.open',
20
+ 'harness.remote.transfer.chunk',
21
+ 'harness.remote.transfer.commit',
22
+ 'harness.remote.transfer.read',
23
+ 'harness.remote.transfer.close',
24
+ 'harness.remote.stream.open',
25
+ 'harness.remote.stream.close',
26
+ 'loopback.call',
27
+ 'fileviewer.call',
28
+ 'codex.app.call',
29
+ 'codex.app.respond',
30
+ 'codex.app.stream.open',
31
+ 'codex.app.stream.close',
32
+ 'codex.app.transfer.open',
33
+ 'codex.app.transfer.chunk',
34
+ 'codex.app.transfer.commit',
35
+ 'codex.app.transfer.read',
36
+ 'codex.app.transfer.close',
37
+ 'acp.initialize', 'acp.session.new', 'acp.session.load', 'acp.session.prompt',
38
+ 'acp.session.respond_permission', 'acp.session.cancel', 'acp.session.set_mode',
39
+ ]);
40
+ export const HOST_CAPABILITIES = [
41
+ 'harness.api.v1',
42
+ 'harness.api.transfer.v1',
43
+ 'harness.remote.v1',
44
+ 'harness.remote.transfer.v1',
45
+ 'fileviewer.read.v1',
46
+ 'codex.appserver.v1',
47
+ 'codex.appserver.transfer.v1',
48
+ 'agent.acp.v1',
49
+ ];
50
+ export class RpcRouter {
51
+ harnessApi;
52
+ maxPending;
53
+ logger;
54
+ fileViewer;
55
+ harnessRemote;
56
+ capabilities;
57
+ codex;
58
+ acp;
59
+ loopback;
60
+ active = 0;
61
+ constructor(harnessApi, maxPending = 128, logger, fileViewer, harnessRemote, capabilities = () => HOST_CAPABILITIES, codex, acp, loopback) {
62
+ this.harnessApi = harnessApi;
63
+ this.maxPending = maxPending;
64
+ this.logger = logger;
65
+ this.fileViewer = fileViewer;
66
+ this.harnessRemote = harnessRemote;
67
+ this.capabilities = capabilities;
68
+ this.codex = codex;
69
+ this.acp = acp;
70
+ this.loopback = loopback;
71
+ }
72
+ async closePeerStreams() {
73
+ this.loopback?.closeAll();
74
+ await Promise.all([
75
+ this.harnessApi?.closeAll(),
76
+ this.harnessRemote?.closeAll(),
77
+ this.codex?.closeAll(),
78
+ ]);
79
+ }
80
+ async handle(message) {
81
+ if (message.type !== 'rpc.request') {
82
+ return createRpcError(message.id, 'INVALID_MESSAGE', 'Only RPC requests are accepted on the Host business channel.');
83
+ }
84
+ const parsedPayload = wireRequestSchema.safeParse(message.payload);
85
+ if (!parsedPayload.success)
86
+ return createRpcError(message.id, 'INVALID_MESSAGE', 'The RPC request payload is invalid.');
87
+ if (!apiMethods.has(parsedPayload.data.method)) {
88
+ return createRpcError(message.id, 'METHOD_NOT_FOUND', 'The requested method does not exist.');
89
+ }
90
+ const request = message;
91
+ if (this.active >= this.maxPending) {
92
+ return createRpcError(request.id, 'RATE_LIMITED', 'Too many Host requests are already pending.', undefined, true);
93
+ }
94
+ this.active += 1;
95
+ const startedAt = performance.now();
96
+ try {
97
+ const result = await this.invoke(request.payload.method, request.payload.params);
98
+ this.logger?.debug('host rpc ok', {
99
+ method: request.payload.method,
100
+ durationMs: Math.round(performance.now() - startedAt),
101
+ });
102
+ return createRpcResponse(request.id, result);
103
+ }
104
+ catch (error) {
105
+ const response = errorResponse(request.id, error);
106
+ this.logger?.warn('host rpc failed', {
107
+ method: request.payload.method,
108
+ durationMs: Math.round(performance.now() - startedAt),
109
+ code: response.payload.code,
110
+ retryable: response.payload.retryable,
111
+ });
112
+ return response;
113
+ }
114
+ finally {
115
+ this.active -= 1;
116
+ }
117
+ }
118
+ invoke(method, params) {
119
+ switch (method) {
120
+ case 'harness.transport.describe': {
121
+ emptyParamsSchema.parse(params);
122
+ return { capabilities: [...this.capabilities()] };
123
+ }
124
+ case 'harness.api.call': return this.requireApiProxy().call(params);
125
+ case 'harness.api.transfer.open': return this.requireApiProxy().openTransfer(params);
126
+ case 'harness.api.transfer.chunk': return this.requireApiProxy().appendTransfer(params);
127
+ case 'harness.api.transfer.commit': return this.requireApiProxy().commitTransfer(params);
128
+ case 'harness.api.transfer.read': return this.requireApiProxy().readTransfer(params);
129
+ case 'harness.api.transfer.close': return this.requireApiProxy().closeTransfer(params);
130
+ case 'harness.api.respond': return this.requireApiProxy().respond(params);
131
+ case 'harness.api.stream.open': return this.requireApiProxy().openStream(params);
132
+ case 'harness.api.stream.close': return this.requireApiProxy().closeStream(params);
133
+ case 'harness.remote.call': return this.requireRemoteGateway().call(params);
134
+ case 'harness.remote.transfer.open': return this.requireRemoteGateway().openTransfer(params);
135
+ case 'harness.remote.transfer.chunk': return this.requireRemoteGateway().appendTransfer(params);
136
+ case 'harness.remote.transfer.commit': return this.requireRemoteGateway().commitTransfer(params);
137
+ case 'harness.remote.transfer.read': return this.requireRemoteGateway().readTransfer(params);
138
+ case 'harness.remote.transfer.close': return this.requireRemoteGateway().closeTransfer(params);
139
+ case 'harness.remote.stream.open': return this.requireRemoteGateway().openStream(params);
140
+ case 'harness.remote.stream.close': return this.requireRemoteGateway().closeStream(params);
141
+ case 'loopback.call': {
142
+ if (this.loopback === undefined)
143
+ throw new RpcError('FEATURE_NOT_SUPPORTED', 'Loopback preview is unavailable on this Host.');
144
+ return this.loopback.call(params);
145
+ }
146
+ case 'fileviewer.call': {
147
+ if (this.fileViewer === undefined) {
148
+ throw new RpcError('FILE_VIEWER_UNAVAILABLE', 'The Remote Host does not have DSH File Viewer available.');
149
+ }
150
+ return this.fileViewer.call(params);
151
+ }
152
+ case 'codex.app.call': return this.requireCodex().call(params);
153
+ case 'codex.app.respond': return this.requireCodex().respond(params);
154
+ case 'codex.app.stream.open': return this.requireCodex().openStream(params);
155
+ case 'codex.app.stream.close': return this.requireCodex().closeStream(params);
156
+ case 'codex.app.transfer.open': return this.requireCodex().openTransfer(params);
157
+ case 'codex.app.transfer.chunk': return this.requireCodex().appendTransfer(params);
158
+ case 'codex.app.transfer.commit': return this.requireCodex().commitTransfer(params);
159
+ case 'codex.app.transfer.read': return this.requireCodex().readTransfer(params);
160
+ case 'codex.app.transfer.close': return this.requireCodex().closeTransfer(params);
161
+ case 'acp.initialize': return this.requireAcp().initialize(params);
162
+ case 'acp.session.new': return this.requireAcp().sessionNew(params);
163
+ case 'acp.session.load': return this.requireAcp().sessionLoad(params);
164
+ case 'acp.session.prompt': return this.requireAcp().prompt(params, async () => undefined);
165
+ case 'acp.session.respond_permission': return this.requireAcp().respondPermission(params);
166
+ case 'acp.session.cancel': return this.requireAcp().cancel(params);
167
+ case 'acp.session.set_mode': return this.requireAcp().setMode(params);
168
+ default: throw new RpcError('METHOD_NOT_FOUND', 'The requested method does not exist.');
169
+ }
170
+ }
171
+ requireApiProxy() {
172
+ if (this.harnessApi === undefined) {
173
+ throw new RpcError('FEATURE_NOT_SUPPORTED', 'This Harness version does not provide the legacy ApiProxy transport.');
174
+ }
175
+ return this.harnessApi;
176
+ }
177
+ requireRemoteGateway() {
178
+ if (this.harnessRemote === undefined) {
179
+ throw new RpcError('FEATURE_NOT_SUPPORTED', 'This Harness version does not provide the Remote Gateway transport.');
180
+ }
181
+ return this.harnessRemote;
182
+ }
183
+ requireAcp() {
184
+ if (!this.acp)
185
+ throw new RpcError('CAPABILITY_NOT_SUPPORTED', 'ACP is not configured on this Host.');
186
+ return this.acp;
187
+ }
188
+ requireCodex() {
189
+ if (this.codex === undefined) {
190
+ throw new RpcError('FEATURE_NOT_SUPPORTED', 'Codex Remote is disabled or unavailable on this Host.');
191
+ }
192
+ return this.codex;
193
+ }
194
+ }
195
+ function errorResponse(requestId, error) {
196
+ const code = safeErrorCode(error);
197
+ if (error instanceof RpcError)
198
+ return createRpcError(requestId, code, error.message, error.details, error.retryable);
199
+ return createRpcError(requestId, code, code === 'INVALID_MESSAGE' ? 'The RPC parameters are invalid.' : 'The Host could not complete the request.');
200
+ }
201
+ //# sourceMappingURL=rpc-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-router.js","sourceRoot":"","sources":["../src/rpc-router.ts"],"names":[],"mappings":"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"}