ds-harness-remote 0.3.8

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 (130) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/cordis.patch.yml +7 -0
  4. package/dist/adapters/agent-adapter.d.ts +35 -0
  5. package/dist/adapters/agent-adapter.d.ts.map +1 -0
  6. package/dist/adapters/agent-adapter.js +80 -0
  7. package/dist/adapters/agent-adapter.js.map +1 -0
  8. package/dist/adapters/permission-adapter.d.ts +13 -0
  9. package/dist/adapters/permission-adapter.d.ts.map +1 -0
  10. package/dist/adapters/permission-adapter.js +67 -0
  11. package/dist/adapters/permission-adapter.js.map +1 -0
  12. package/dist/adapters/session-adapter.d.ts +38 -0
  13. package/dist/adapters/session-adapter.d.ts.map +1 -0
  14. package/dist/adapters/session-adapter.js +230 -0
  15. package/dist/adapters/session-adapter.js.map +1 -0
  16. package/dist/adapters/workspace-adapter.d.ts +13 -0
  17. package/dist/adapters/workspace-adapter.d.ts.map +1 -0
  18. package/dist/adapters/workspace-adapter.js +21 -0
  19. package/dist/adapters/workspace-adapter.js.map +1 -0
  20. package/dist/api-proxy-switch.d.ts +33 -0
  21. package/dist/api-proxy-switch.d.ts.map +1 -0
  22. package/dist/api-proxy-switch.js +107 -0
  23. package/dist/api-proxy-switch.js.map +1 -0
  24. package/dist/bin/doctor.d.ts +3 -0
  25. package/dist/bin/doctor.d.ts.map +1 -0
  26. package/dist/bin/doctor.js +13 -0
  27. package/dist/bin/doctor.js.map +1 -0
  28. package/dist/client-runtime.d.ts +98 -0
  29. package/dist/client-runtime.d.ts.map +1 -0
  30. package/dist/client-runtime.js +421 -0
  31. package/dist/client-runtime.js.map +1 -0
  32. package/dist/client-secure-transport.d.ts +22 -0
  33. package/dist/client-secure-transport.d.ts.map +1 -0
  34. package/dist/client-secure-transport.js +129 -0
  35. package/dist/client-secure-transport.js.map +1 -0
  36. package/dist/client.d.ts +12 -0
  37. package/dist/client.d.ts.map +1 -0
  38. package/dist/client.github.js +2938 -0
  39. package/dist/client.js +2938 -0
  40. package/dist/client.js.map +1 -0
  41. package/dist/config.d.ts +33 -0
  42. package/dist/config.d.ts.map +1 -0
  43. package/dist/config.js +80 -0
  44. package/dist/config.js.map +1 -0
  45. package/dist/connection-controller.d.ts +39 -0
  46. package/dist/connection-controller.d.ts.map +1 -0
  47. package/dist/connection-controller.js +170 -0
  48. package/dist/connection-controller.js.map +1 -0
  49. package/dist/control-runtime.d.ts +36 -0
  50. package/dist/control-runtime.d.ts.map +1 -0
  51. package/dist/control-runtime.js +265 -0
  52. package/dist/control-runtime.js.map +1 -0
  53. package/dist/event-sequencer.d.ts +23 -0
  54. package/dist/event-sequencer.d.ts.map +1 -0
  55. package/dist/event-sequencer.js +54 -0
  56. package/dist/event-sequencer.js.map +1 -0
  57. package/dist/harness-api-bridge.d.ts +55 -0
  58. package/dist/harness-api-bridge.d.ts.map +1 -0
  59. package/dist/harness-api-bridge.js +387 -0
  60. package/dist/harness-api-bridge.js.map +1 -0
  61. package/dist/identity-store.d.ts +45 -0
  62. package/dist/identity-store.d.ts.map +1 -0
  63. package/dist/identity-store.js +183 -0
  64. package/dist/identity-store.js.map +1 -0
  65. package/dist/ids.d.ts +2 -0
  66. package/dist/ids.d.ts.map +1 -0
  67. package/dist/ids.js +17 -0
  68. package/dist/ids.js.map +1 -0
  69. package/dist/index.d.ts +38 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +16091 -0
  72. package/dist/index.js.map +7 -0
  73. package/dist/logging.d.ts +18 -0
  74. package/dist/logging.d.ts.map +1 -0
  75. package/dist/logging.js +30 -0
  76. package/dist/logging.js.map +1 -0
  77. package/dist/pairing-controller.d.ts +52 -0
  78. package/dist/pairing-controller.d.ts.map +1 -0
  79. package/dist/pairing-controller.js +73 -0
  80. package/dist/pairing-controller.js.map +1 -0
  81. package/dist/pending-approvals.d.ts +14 -0
  82. package/dist/pending-approvals.d.ts.map +1 -0
  83. package/dist/pending-approvals.js +52 -0
  84. package/dist/pending-approvals.js.map +1 -0
  85. package/dist/remote-api-proxy.d.ts +12 -0
  86. package/dist/remote-api-proxy.d.ts.map +1 -0
  87. package/dist/remote-api-proxy.js +191 -0
  88. package/dist/remote-api-proxy.js.map +1 -0
  89. package/dist/remote-directory-browser.d.ts +16 -0
  90. package/dist/remote-directory-browser.d.ts.map +1 -0
  91. package/dist/remote-directory-browser.js +48 -0
  92. package/dist/remote-directory-browser.js.map +1 -0
  93. package/dist/rpc-router.d.ts +21 -0
  94. package/dist/rpc-router.d.ts.map +1 -0
  95. package/dist/rpc-router.js +93 -0
  96. package/dist/rpc-router.js.map +1 -0
  97. package/dist/server-api.d.ts +80 -0
  98. package/dist/server-api.d.ts.map +1 -0
  99. package/dist/server-api.js +405 -0
  100. package/dist/server-api.js.map +1 -0
  101. package/dist/server-connection.d.ts +70 -0
  102. package/dist/server-connection.d.ts.map +1 -0
  103. package/dist/server-connection.js +759 -0
  104. package/dist/server-connection.js.map +1 -0
  105. package/dist/server-credentials.d.ts +46 -0
  106. package/dist/server-credentials.d.ts.map +1 -0
  107. package/dist/server-credentials.js +71 -0
  108. package/dist/server-credentials.js.map +1 -0
  109. package/dist/service.d.ts +56 -0
  110. package/dist/service.d.ts.map +1 -0
  111. package/dist/service.js +162 -0
  112. package/dist/service.js.map +1 -0
  113. package/dist/typert-gateway-switch.d.ts +19 -0
  114. package/dist/typert-gateway-switch.d.ts.map +1 -0
  115. package/dist/typert-gateway-switch.js +41 -0
  116. package/dist/typert-gateway-switch.js.map +1 -0
  117. package/dist/types.d.ts +20 -0
  118. package/dist/types.d.ts.map +1 -0
  119. package/dist/types.js +2 -0
  120. package/dist/types.js.map +1 -0
  121. package/dist/version.d.ts +12 -0
  122. package/dist/version.d.ts.map +1 -0
  123. package/dist/version.js +12 -0
  124. package/dist/version.js.map +1 -0
  125. package/dist/werift-rtc.d.ts +85 -0
  126. package/dist/werift-rtc.d.ts.map +1 -0
  127. package/dist/werift-rtc.js +164 -0
  128. package/dist/werift-rtc.js.map +1 -0
  129. package/package.json +98 -0
  130. package/public.d.ts +19 -0
@@ -0,0 +1,13 @@
1
+ import type { Session } from '@deepseek-ai/dsh-session';
2
+ import type { WorkspaceRegistry } from '@deepseek-ai/dsh-workspace';
3
+ export interface RemoteWorkspaceInfo {
4
+ id: string | null;
5
+ name: string;
6
+ cwd: string;
7
+ }
8
+ export declare class WorkspaceAdapter {
9
+ private readonly registry?;
10
+ constructor(registry?: WorkspaceRegistry | undefined);
11
+ get(session?: Session): RemoteWorkspaceInfo | null;
12
+ }
13
+ //# sourceMappingURL=workspace-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/workspace-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAT,QAAQ,CAAC,EAAE,iBAAiB,YAAA;IAEzD,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI;CAanD"}
@@ -0,0 +1,21 @@
1
+ import { basename } from 'node:path';
2
+ export class WorkspaceAdapter {
3
+ registry;
4
+ constructor(registry) {
5
+ this.registry = registry;
6
+ }
7
+ get(session) {
8
+ const cwd = session?.header.cwd;
9
+ if (cwd !== undefined) {
10
+ const workspace = this.registry?.list().find(candidate => candidate.path === cwd);
11
+ return workspace === undefined
12
+ ? { id: null, name: basename(cwd) || cwd, cwd }
13
+ : { id: String(workspace.id), name: workspace.title, cwd: workspace.path };
14
+ }
15
+ const workspace = this.registry?.list()[0];
16
+ return workspace === undefined
17
+ ? null
18
+ : { id: String(workspace.id), name: workspace.title, cwd: workspace.path };
19
+ }
20
+ }
21
+ //# sourceMappingURL=workspace-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-adapter.js","sourceRoot":"","sources":["../../src/adapters/workspace-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAUpC,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,QAA4B;QAA5B,aAAQ,GAAR,QAAQ,CAAoB;IAAG,CAAC;IAE7D,GAAG,CAAC,OAAiB;QACnB,MAAM,GAAG,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA;QAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;YACjF,OAAO,SAAS,KAAK,SAAS;gBAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE;gBAC/C,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAA;QAC9E,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1C,OAAO,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAA;IAC9E,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ import type { ApiProxy } from '@deepseek-ai/dsh-host-apiproxy/api';
2
+ export type HarnessMode = 'local' | 'remote';
3
+ export interface RemoteTarget {
4
+ deviceId: string;
5
+ name: string;
6
+ }
7
+ /**
8
+ * Installs stable forwarding objects into the official ApiProxy instance.
9
+ * Existing HTTP/WebSocket carriers retain the same service identity while new
10
+ * requests resolve against the currently selected local or remote target.
11
+ */
12
+ export declare class ApiProxySwitch {
13
+ private remote?;
14
+ private target?;
15
+ private mode;
16
+ private installed;
17
+ private readonly local;
18
+ private readonly originals;
19
+ private readonly localRespond;
20
+ constructor(local: ApiProxy);
21
+ install(): void;
22
+ selectRemote(api: ApiProxy, target: RemoteTarget): void;
23
+ selectLocal(): void;
24
+ status(): {
25
+ mode: HarnessMode;
26
+ target?: RemoteTarget;
27
+ };
28
+ restore(): void;
29
+ private selected;
30
+ private originalDomain;
31
+ private requireRemote;
32
+ }
33
+ //# sourceMappingURL=api-proxy-switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-proxy-switch.d.ts","sourceRoot":"","sources":["../src/api-proxy-switch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAElE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAcD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;IAC3G,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAEtC,KAAK,EAAE,QAAQ;IAM3B,OAAO,IAAI,IAAI;IA6Bf,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAOvD,WAAW,IAAI,IAAI;IAMnB,MAAM,IAAI;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE;IAItD,OAAO,IAAI,IAAI;IAkBf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;CAItB"}
@@ -0,0 +1,107 @@
1
+ const SWITCHED_DOMAINS = [
2
+ 'sessions',
3
+ 'subagents',
4
+ 'host',
5
+ 'workspace',
6
+ 'skills',
7
+ 'agentPresets',
8
+ 'events',
9
+ 'goals',
10
+ 'llm',
11
+ ];
12
+ /**
13
+ * Installs stable forwarding objects into the official ApiProxy instance.
14
+ * Existing HTTP/WebSocket carriers retain the same service identity while new
15
+ * requests resolve against the currently selected local or remote target.
16
+ */
17
+ export class ApiProxySwitch {
18
+ remote;
19
+ target;
20
+ mode = 'local';
21
+ installed = false;
22
+ local;
23
+ originals;
24
+ localRespond;
25
+ constructor(local) {
26
+ this.local = local;
27
+ this.originals = new Map(SWITCHED_DOMAINS.map(domain => [domain, local[domain]]));
28
+ this.localRespond = local.respond.bind(local);
29
+ }
30
+ install() {
31
+ if (this.installed)
32
+ return;
33
+ for (const domain of SWITCHED_DOMAINS) {
34
+ const localDomain = this.local[domain];
35
+ const forwarder = new Proxy({}, {
36
+ get: (_target, key) => {
37
+ const selected = this.selected(domain);
38
+ const value = selected[key];
39
+ return typeof value === 'function' ? value.bind(selected) : value;
40
+ },
41
+ });
42
+ Object.defineProperty(this.local, domain, {
43
+ configurable: true,
44
+ enumerable: true,
45
+ writable: true,
46
+ value: forwarder,
47
+ });
48
+ }
49
+ Object.defineProperty(this.local, 'respond', {
50
+ configurable: true,
51
+ enumerable: true,
52
+ writable: true,
53
+ value: (...args) => this.mode === 'remote'
54
+ ? this.requireRemote().respond(...args)
55
+ : this.localRespond(...args),
56
+ });
57
+ this.installed = true;
58
+ }
59
+ selectRemote(api, target) {
60
+ if (!this.installed)
61
+ throw new Error('The Harness API switch is not installed.');
62
+ this.remote = api;
63
+ this.target = { ...target };
64
+ this.mode = 'remote';
65
+ }
66
+ selectLocal() {
67
+ this.mode = 'local';
68
+ this.remote = undefined;
69
+ this.target = undefined;
70
+ }
71
+ status() {
72
+ return { mode: this.mode, ...(this.target === undefined ? {} : { target: { ...this.target } }) };
73
+ }
74
+ restore() {
75
+ if (!this.installed)
76
+ return;
77
+ this.selectLocal();
78
+ for (const [domain, value] of this.originals)
79
+ Object.defineProperty(this.local, domain, {
80
+ configurable: true,
81
+ enumerable: true,
82
+ writable: true,
83
+ value,
84
+ });
85
+ Object.defineProperty(this.local, 'respond', {
86
+ configurable: true,
87
+ enumerable: true,
88
+ writable: true,
89
+ value: this.localRespond,
90
+ });
91
+ this.installed = false;
92
+ }
93
+ selected(domain) {
94
+ if (this.mode === 'local')
95
+ return this.originalDomain(domain);
96
+ return this.requireRemote()[domain];
97
+ }
98
+ originalDomain(domain) {
99
+ return this.originals.get(domain);
100
+ }
101
+ requireRemote() {
102
+ if (this.remote === undefined)
103
+ throw new Error('No remote Harness target is selected.');
104
+ return this.remote;
105
+ }
106
+ }
107
+ //# sourceMappingURL=api-proxy-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-proxy-switch.js","sourceRoot":"","sources":["../src/api-proxy-switch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { HostPluginRuntime } from '../service.js';
2
+ export declare function doctor(runtime: HostPluginRuntime): string;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/bin/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,wBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAWzD"}
@@ -0,0 +1,13 @@
1
+ export function doctor(runtime) {
2
+ const state = runtime.diagnostics();
3
+ return [
4
+ 'DSH Remote doctor',
5
+ `Plugin: ${state.loaded ? 'loaded' : 'starting'}`,
6
+ `Identity: ${state.identityValid ? `valid (${state.deviceId})` : 'unavailable'}`,
7
+ `Server: ${state.serverConfigured ? state.serverOnline ? 'online' : 'configured, offline' : 'not configured'}`,
8
+ ...(state.serverError === undefined ? [] : [`Server error: ${state.serverError}`]),
9
+ `Peer channel: ${state.online ? 'online' : 'offline'}`,
10
+ `Trusted devices: ${state.trustedPeers}`,
11
+ ].join('\n');
12
+ }
13
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/bin/doctor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CAAC,OAA0B;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACnC,OAAO;QACL,mBAAmB;QACnB,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE;QACjD,aAAa,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE;QAChF,WAAW,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,EAAE;QAC9G,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,iBAAiB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;QACtD,oBAAoB,KAAK,CAAC,YAAY,EAAE;KACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
@@ -0,0 +1,98 @@
1
+ import type { ApiProxy, RpcResult } from '@deepseek-ai/dsh-host-apiproxy/api';
2
+ import { type HarnessMode } from './api-proxy-switch.js';
3
+ import type { ResolvedConfig } from './config.js';
4
+ import type { IdentityStore } from './identity-store.js';
5
+ import type { TypertGatewayLike } from './harness-api-bridge.js';
6
+ import type { SafeLogger } from './logging.js';
7
+ import { ClientServerApi } from './server-api.js';
8
+ export interface RemoteDirectoryEntry {
9
+ name: string;
10
+ path: string;
11
+ hidden: boolean;
12
+ }
13
+ export interface RemoteDirectoryListing {
14
+ path: string;
15
+ home: string;
16
+ crumbs: RemoteDirectoryEntry[];
17
+ entries: RemoteDirectoryEntry[];
18
+ truncated: boolean;
19
+ }
20
+ export interface RemoteWorkspaceView {
21
+ workspaceId: string;
22
+ path: string;
23
+ title: string;
24
+ }
25
+ export interface RemoteDeviceView {
26
+ deviceId: string;
27
+ name: string;
28
+ platform: string;
29
+ membershipId: string;
30
+ online: boolean;
31
+ lastSeenAt?: number;
32
+ clientVersion?: string;
33
+ harnessVersion?: string;
34
+ }
35
+ export interface HostConnectionRpc {
36
+ handle(channel: string, handler: (endpoint: string, payload: unknown, signal: AbortSignal) => Promise<RpcResult<unknown>>, options: {
37
+ authority: 'loopback' | 'trusted-host';
38
+ }): () => Promise<void>;
39
+ }
40
+ export interface HostConnectionHandle {
41
+ rpc: HostConnectionRpc;
42
+ }
43
+ export interface HostAuthorizationControl {
44
+ hostStatus(): {
45
+ deviceId?: string;
46
+ configured: boolean;
47
+ online: boolean;
48
+ reconnecting: boolean;
49
+ lastActiveAt?: number;
50
+ error?: string;
51
+ account?: string;
52
+ authorized: boolean;
53
+ accountRequired: boolean;
54
+ };
55
+ reconnectHost(): void;
56
+ clearHostAuthorization(): Promise<void>;
57
+ authorizeHostAsOwned(accessToken: string, account?: string): Promise<unknown>;
58
+ authorizeHostWithAccount(email: string, password: string): Promise<unknown>;
59
+ authorizeHostWithCode(code: string): Promise<unknown>;
60
+ }
61
+ export declare class ClientModeRuntime {
62
+ private readonly config;
63
+ private readonly identities;
64
+ private readonly server;
65
+ private readonly logger;
66
+ private readonly host?;
67
+ private identity?;
68
+ private connected?;
69
+ private readonly proxySwitch;
70
+ private readonly gatewaySwitch;
71
+ private closed;
72
+ constructor(config: ResolvedConfig, identities: IdentityStore, server: ClientServerApi, apiProxy: ApiProxy, typertGateway: TypertGatewayLike, logger: SafeLogger, host?: HostAuthorizationControl | undefined);
73
+ start(): Promise<void>;
74
+ registerControl(connection: HostConnectionHandle): () => Promise<void>;
75
+ status(): Record<string, unknown>;
76
+ devices(): Promise<RemoteDeviceView[]>;
77
+ authorizeClientWithAccount(email: string, password: string): Promise<unknown>;
78
+ startClientOAuthQrLogin(): Promise<unknown>;
79
+ pollClientOAuthQrLogin(qrId: string): Promise<unknown>;
80
+ clearClientAuthorization(): Promise<void>;
81
+ setHostAuthorization(enabled: boolean): Promise<unknown>;
82
+ setMode(mode: HarnessMode, targetDeviceId?: string, signal?: AbortSignal): Promise<Record<string, unknown>>;
83
+ listRemoteDirectory(targetDeviceId: string, path?: string, signal?: AbortSignal): Promise<RemoteDirectoryListing>;
84
+ listRemoteWorkspaces(targetDeviceId: string, signal?: AbortSignal): Promise<RemoteWorkspaceView[]>;
85
+ openRemoteWorkspace(targetDeviceId: string, path: string, signal?: AbortSignal): Promise<Record<string, unknown>>;
86
+ close(): Promise<void>;
87
+ private connect;
88
+ private ensureConnected;
89
+ handleControl(endpoint: string, payload: unknown, signal: AbortSignal): Promise<RpcResult<unknown>>;
90
+ private requireIdentity;
91
+ private authorizeHostPeer;
92
+ }
93
+ export declare class ClientModeError extends Error {
94
+ readonly code: string;
95
+ readonly retryable: boolean;
96
+ constructor(code: string, message: string, retryable?: boolean);
97
+ }
98
+ //# sourceMappingURL=client-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-runtime.d.ts","sourceRoot":"","sources":["../src/client-runtime.ts"],"names":[],"mappings":"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"}