ds-harness-remote 0.5.8 → 0.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/adapter.d.ts +1 -1
- package/dist/acp/adapter.d.ts.map +1 -1
- package/dist/acp/adapters/claude-history.d.ts +3 -0
- package/dist/acp/adapters/claude-history.d.ts.map +1 -0
- package/dist/acp/adapters/claude-history.js +118 -0
- package/dist/acp/adapters/claude-history.js.map +1 -0
- package/dist/acp/adapters/claude-process.d.ts +21 -0
- package/dist/acp/adapters/claude-process.d.ts.map +1 -0
- package/dist/acp/adapters/claude-process.js +147 -0
- package/dist/acp/adapters/claude-process.js.map +1 -0
- package/dist/acp/adapters/cursor-process.d.ts +12 -4
- package/dist/acp/adapters/cursor-process.d.ts.map +1 -1
- package/dist/acp/adapters/cursor-process.js +86 -4
- package/dist/acp/adapters/cursor-process.js.map +1 -1
- package/dist/acp/adapters/isolated-process.d.ts +45 -0
- package/dist/acp/adapters/isolated-process.d.ts.map +1 -0
- package/dist/acp/adapters/isolated-process.js +299 -0
- package/dist/acp/adapters/isolated-process.js.map +1 -0
- package/dist/acp/adapters/opencode-native-api.d.ts +16 -0
- package/dist/acp/adapters/opencode-native-api.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-native-api.js +103 -0
- package/dist/acp/adapters/opencode-native-api.js.map +1 -0
- package/dist/acp/adapters/opencode-process.d.ts +86 -0
- package/dist/acp/adapters/opencode-process.d.ts.map +1 -0
- package/dist/acp/adapters/opencode-process.js +483 -0
- package/dist/acp/adapters/opencode-process.js.map +1 -0
- package/dist/acp/adapters/opencode.d.ts +8 -0
- package/dist/acp/adapters/opencode.d.ts.map +1 -0
- package/dist/acp/adapters/opencode.js +8 -0
- package/dist/acp/adapters/opencode.js.map +1 -0
- package/dist/acp/adapters/pi-process.d.ts +5 -0
- package/dist/acp/adapters/pi-process.d.ts.map +1 -0
- package/dist/acp/adapters/pi-process.js +5 -0
- package/dist/acp/adapters/pi-process.js.map +1 -0
- package/dist/acp/adapters/session-models.d.ts +33 -0
- package/dist/acp/adapters/session-models.d.ts.map +1 -0
- package/dist/acp/adapters/session-models.js +78 -0
- package/dist/acp/adapters/session-models.js.map +1 -0
- package/dist/acp/gateway.d.ts +10 -0
- package/dist/acp/gateway.d.ts.map +1 -1
- package/dist/acp/gateway.js +405 -71
- package/dist/acp/gateway.js.map +1 -1
- package/dist/acp/history-events.d.ts +8 -0
- package/dist/acp/history-events.d.ts.map +1 -0
- package/dist/acp/history-events.js +119 -0
- package/dist/acp/history-events.js.map +1 -0
- package/dist/acp/method-policy.d.ts +30 -20
- package/dist/acp/method-policy.d.ts.map +1 -1
- package/dist/acp/method-policy.js +6 -5
- package/dist/acp/method-policy.js.map +1 -1
- package/dist/acp/peer-bridge.d.ts +3 -2
- package/dist/acp/peer-bridge.d.ts.map +1 -1
- package/dist/acp/peer-bridge.js +4 -0
- package/dist/acp/peer-bridge.js.map +1 -1
- package/dist/acp/pi-tool-result.d.ts +9 -0
- package/dist/acp/pi-tool-result.d.ts.map +1 -0
- package/dist/acp/pi-tool-result.js +22 -0
- package/dist/acp/pi-tool-result.js.map +1 -0
- package/dist/acp/virtual-catalog.d.ts +50 -0
- package/dist/acp/virtual-catalog.d.ts.map +1 -0
- package/dist/acp/virtual-catalog.js +90 -0
- package/dist/acp/virtual-catalog.js.map +1 -0
- package/dist/acp/virtual-contract.d.ts +172 -0
- package/dist/acp/virtual-contract.d.ts.map +1 -0
- package/dist/acp/virtual-contract.js +216 -0
- package/dist/acp/virtual-contract.js.map +1 -0
- package/dist/acp/virtual-event-carrier.d.ts +51 -0
- package/dist/acp/virtual-event-carrier.d.ts.map +1 -0
- package/dist/acp/virtual-event-carrier.js +222 -0
- package/dist/acp/virtual-event-carrier.js.map +1 -0
- package/dist/acp/virtual-harness.d.ts +18 -112
- package/dist/acp/virtual-harness.d.ts.map +1 -1
- package/dist/acp/virtual-harness.js +238 -952
- package/dist/acp/virtual-harness.js.map +1 -1
- package/dist/acp/virtual-live.d.ts +79 -0
- package/dist/acp/virtual-live.d.ts.map +1 -0
- package/dist/acp/virtual-live.js +514 -0
- package/dist/acp/virtual-live.js.map +1 -0
- package/dist/acp/workspace-tools.js +1 -1
- package/dist/acp/workspace-tools.js.map +1 -1
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +1 -0
- package/dist/acp.js.map +1 -1
- package/dist/client/header.d.ts +10 -0
- package/dist/client/header.d.ts.map +1 -0
- package/dist/client/header.js +169 -0
- package/dist/client/header.js.map +1 -0
- package/dist/client/icons.d.ts +3 -0
- package/dist/client/icons.d.ts.map +1 -0
- package/dist/client/icons.js +3 -0
- package/dist/client/icons.js.map +1 -0
- package/dist/client/navigation.d.ts +5 -0
- package/dist/client/navigation.d.ts.map +1 -0
- package/dist/client/navigation.js +30 -0
- package/dist/client/navigation.js.map +1 -0
- package/dist/client/presentation.d.ts +17 -0
- package/dist/client/presentation.d.ts.map +1 -0
- package/dist/client/presentation.js +208 -0
- package/dist/client/presentation.js.map +1 -0
- package/dist/client/progress.d.ts +10 -0
- package/dist/client/progress.d.ts.map +1 -0
- package/dist/client/progress.js +82 -0
- package/dist/client/progress.js.map +1 -0
- package/dist/client/settings.d.ts +10 -0
- package/dist/client/settings.d.ts.map +1 -0
- package/dist/client/settings.js +335 -0
- package/dist/client/settings.js.map +1 -0
- package/dist/client/shell.d.ts +6 -0
- package/dist/client/shell.d.ts.map +1 -0
- package/dist/client/shell.js +129 -0
- package/dist/client/shell.js.map +1 -0
- package/dist/client/types.d.ts +265 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workspaces.d.ts +11 -0
- package/dist/client/workspaces.d.ts.map +1 -0
- package/dist/client/workspaces.js +1261 -0
- package/dist/client/workspaces.js.map +1 -0
- package/dist/client-capabilities.d.ts +6 -0
- package/dist/client-capabilities.d.ts.map +1 -0
- package/dist/client-capabilities.js +90 -0
- package/dist/client-capabilities.js.map +1 -0
- package/dist/client-codex-streams.d.ts +23 -0
- package/dist/client-codex-streams.d.ts.map +1 -0
- package/dist/client-codex-streams.js +156 -0
- package/dist/client-codex-streams.js.map +1 -0
- package/dist/client-connection.d.ts +38 -0
- package/dist/client-connection.d.ts.map +1 -0
- package/dist/client-connection.js +210 -0
- package/dist/client-connection.js.map +1 -0
- package/dist/client-control.d.ts +48 -0
- package/dist/client-control.d.ts.map +1 -0
- package/dist/client-control.js +293 -0
- package/dist/client-control.js.map +1 -0
- package/dist/client-locale.d.ts +12 -0
- package/dist/client-locale.d.ts.map +1 -1
- package/dist/client-locale.js +24 -0
- package/dist/client-locale.js.map +1 -1
- package/dist/client-runtime-contract.d.ts +162 -0
- package/dist/client-runtime-contract.d.ts.map +1 -0
- package/dist/client-runtime-contract.js +127 -0
- package/dist/client-runtime-contract.js.map +1 -0
- package/dist/client-runtime.d.ts +24 -126
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js +171 -867
- package/dist/client-runtime.js.map +1 -1
- package/dist/client-secure-transport.d.ts +1 -0
- package/dist/client-secure-transport.d.ts.map +1 -1
- package/dist/client-secure-transport.js +35 -16
- package/dist/client-secure-transport.js.map +1 -1
- package/dist/client-workspace-queries.d.ts +12 -0
- package/dist/client-workspace-queries.d.ts.map +1 -0
- package/dist/client-workspace-queries.js +66 -0
- package/dist/client-workspace-queries.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.github.js +2158 -1905
- package/dist/client.js +2158 -1905
- package/dist/client.js.map +1 -1
- package/dist/codex/domain.d.ts.map +1 -1
- package/dist/codex/domain.js +67 -46
- package/dist/codex/domain.js.map +1 -1
- package/dist/codex/method-policy.d.ts +7 -7
- package/dist/codex/virtual-catalog.d.ts +90 -0
- package/dist/codex/virtual-catalog.d.ts.map +1 -0
- package/dist/codex/virtual-catalog.js +317 -0
- package/dist/codex/virtual-catalog.js.map +1 -0
- package/dist/codex/virtual-contract.d.ts +96 -0
- package/dist/codex/virtual-contract.d.ts.map +1 -0
- package/dist/codex/virtual-contract.js +192 -0
- package/dist/codex/virtual-contract.js.map +1 -0
- package/dist/codex/virtual-event-carrier.d.ts +52 -0
- package/dist/codex/virtual-event-carrier.d.ts.map +1 -0
- package/dist/codex/virtual-event-carrier.js +212 -0
- package/dist/codex/virtual-event-carrier.js.map +1 -0
- package/dist/codex/virtual-harness.d.ts +16 -117
- package/dist/codex/virtual-harness.d.ts.map +1 -1
- package/dist/codex/virtual-harness.js +123 -1909
- package/dist/codex/virtual-harness.js.map +1 -1
- package/dist/codex/virtual-history.d.ts +74 -0
- package/dist/codex/virtual-history.d.ts.map +1 -0
- package/dist/codex/virtual-history.js +546 -0
- package/dist/codex/virtual-history.js.map +1 -0
- package/dist/codex/virtual-live.d.ts +75 -0
- package/dist/codex/virtual-live.d.ts.map +1 -0
- package/dist/codex/virtual-live.js +563 -0
- package/dist/codex/virtual-live.js.map +1 -0
- package/dist/codex/virtual-values.d.ts +29 -0
- package/dist/codex/virtual-values.d.ts.map +1 -0
- package/dist/codex/virtual-values.js +75 -0
- package/dist/codex/virtual-values.js.map +1 -0
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/control-runtime.js +2 -2
- package/dist/control-runtime.js.map +1 -1
- package/dist/harness-remote-bridge.d.ts +2 -1
- package/dist/harness-remote-bridge.d.ts.map +1 -1
- package/dist/harness-remote-bridge.js +11 -3
- package/dist/harness-remote-bridge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17301 -14516
- package/dist/index.js.map +4 -4
- package/dist/plugin-route-dispatcher.d.ts +2 -2
- package/dist/plugin-route-dispatcher.d.ts.map +1 -1
- package/dist/plugin-route-dispatcher.js +2 -2
- package/dist/plugin-route-dispatcher.js.map +1 -1
- package/dist/remote-typert-gateway.js +49 -2
- package/dist/remote-typert-gateway.js.map +1 -1
- package/dist/server-connection.d.ts +1 -0
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +6 -1
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +16 -5
- package/dist/service.js.map +1 -1
- package/dist/terminal-carrier-compat.d.ts +14 -0
- package/dist/terminal-carrier-compat.d.ts.map +1 -0
- package/dist/terminal-carrier-compat.js +259 -0
- package/dist/terminal-carrier-compat.js.map +1 -0
- package/dist/typert-gateway-contract.d.ts +6 -1
- package/dist/typert-gateway-contract.d.ts.map +1 -1
- package/dist/typert-gateway-switch.d.ts +2 -1
- package/dist/typert-gateway-switch.d.ts.map +1 -1
- package/dist/typert-gateway-switch.js +31 -15
- package/dist/typert-gateway-switch.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dsh-plugin.json +1 -1
- package/package.json +21 -19
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
const CURSOR_SESSION_PREFIX = 'cursor:';
|
|
2
|
+
const ACP_SESSION_PREFIX = 'acp:';
|
|
3
|
+
const OPENCODE_SESSION_PREFIX = 'opencode:';
|
|
4
|
+
export function piStreamOutcome(reason) {
|
|
5
|
+
if (reason === 'completed')
|
|
6
|
+
return { kind: 'completed' };
|
|
7
|
+
if (reason === 'cancelled' || reason === 'peer-disconnected')
|
|
8
|
+
return { kind: 'aborted', reason: { kind: reason === 'cancelled' ? 'user' : 'disposed' } };
|
|
9
|
+
return { kind: 'error', error: { code: 'ACP_STREAM_FAILED', message: 'Pi reply stream failed.' } };
|
|
10
|
+
}
|
|
11
|
+
export function piPromptOutcome(kind, update) {
|
|
12
|
+
if (update.stopReason === 'cancelled')
|
|
13
|
+
return { kind: 'aborted', reason: { kind: 'user' } };
|
|
14
|
+
if (kind === 'prompt_failed' || update.stopReason === 'error')
|
|
15
|
+
return {
|
|
16
|
+
kind: 'error', error: { code: 'PI_PROMPT_FAILED', message: 'Pi reply failed.' },
|
|
17
|
+
};
|
|
18
|
+
if (update.stopReason === 'max_tokens')
|
|
19
|
+
return { kind: 'max-tokens' };
|
|
20
|
+
return { kind: 'completed' };
|
|
21
|
+
}
|
|
22
|
+
export function extractPromptText(content) {
|
|
23
|
+
const parts = content.flatMap(part => {
|
|
24
|
+
const item = record(part);
|
|
25
|
+
if (item.type === 'text' && typeof item.text === 'string')
|
|
26
|
+
return [item.text];
|
|
27
|
+
return [];
|
|
28
|
+
});
|
|
29
|
+
const text = parts.join('');
|
|
30
|
+
return text.length === 0 ? undefined : text;
|
|
31
|
+
}
|
|
32
|
+
export function extractText(update) {
|
|
33
|
+
const content = update.content;
|
|
34
|
+
if (typeof content === 'string')
|
|
35
|
+
return content;
|
|
36
|
+
if (isRecord(content) && typeof content.text === 'string')
|
|
37
|
+
return content.text;
|
|
38
|
+
if (Array.isArray(content)) {
|
|
39
|
+
const parts = content
|
|
40
|
+
.map(part => (isRecord(part) && typeof part.text === 'string' ? part.text : undefined))
|
|
41
|
+
.filter((part) => part !== undefined);
|
|
42
|
+
return parts.length === 0 ? undefined : parts.join('');
|
|
43
|
+
}
|
|
44
|
+
return typeof update.text === 'string' ? update.text : undefined;
|
|
45
|
+
}
|
|
46
|
+
export function summarizeQuestions(params) {
|
|
47
|
+
if (!Array.isArray(params.questions))
|
|
48
|
+
return undefined;
|
|
49
|
+
const lines = params.questions
|
|
50
|
+
.map(question => (isRecord(question) ? string(question.prompt) : undefined))
|
|
51
|
+
.filter((line) => line !== undefined);
|
|
52
|
+
return lines.length === 0 ? undefined : lines.join('\n');
|
|
53
|
+
}
|
|
54
|
+
function sessionIdFromAddress(address) {
|
|
55
|
+
if (typeof address.sessionId === 'string' && address.sessionId.length > 0)
|
|
56
|
+
return address.sessionId;
|
|
57
|
+
if (typeof address.childSessionId === 'string' && address.childSessionId.length > 0)
|
|
58
|
+
return address.childSessionId;
|
|
59
|
+
if (address.kind === 'session' && typeof address.sessionId === 'string' && address.sessionId.length > 0) {
|
|
60
|
+
return address.sessionId;
|
|
61
|
+
}
|
|
62
|
+
throw new Error('The sessionId is required.');
|
|
63
|
+
}
|
|
64
|
+
export function extractSessionId(request) {
|
|
65
|
+
if (typeof request.sessionId === 'string' && request.sessionId.length > 0)
|
|
66
|
+
return request.sessionId;
|
|
67
|
+
if (isRecord(request.address))
|
|
68
|
+
return sessionIdFromAddress(request.address);
|
|
69
|
+
throw new Error('The sessionId is required.');
|
|
70
|
+
}
|
|
71
|
+
export function sessionPrefix(backend) {
|
|
72
|
+
return backend === 'claude' ? 'claude:' : backend === 'pi' ? 'pi:' : backend === 'opencode' ? OPENCODE_SESSION_PREFIX : backend === 'antigravity' ? ACP_SESSION_PREFIX : CURSOR_SESSION_PREFIX;
|
|
73
|
+
}
|
|
74
|
+
export function nativeAcpId(sessionId, backend) {
|
|
75
|
+
const prefix = sessionPrefix(backend);
|
|
76
|
+
if (!sessionId.startsWith(prefix) || sessionId.length === prefix.length) {
|
|
77
|
+
throw new Error('The selected Session does not belong to the virtual harness.');
|
|
78
|
+
}
|
|
79
|
+
return sessionId.slice(prefix.length);
|
|
80
|
+
}
|
|
81
|
+
export function isSurfaceEvent(type) {
|
|
82
|
+
return type === 'user/message' || type === 'assistant/message' || type === 'tool/result';
|
|
83
|
+
}
|
|
84
|
+
export function carrierArgs(payload) {
|
|
85
|
+
return record(record(payload).args);
|
|
86
|
+
}
|
|
87
|
+
export function requestArg(args) {
|
|
88
|
+
return record(args.request ?? args._request ?? args);
|
|
89
|
+
}
|
|
90
|
+
export function rcEndpoint(endpoint) {
|
|
91
|
+
if (endpoint === 'workspace.list')
|
|
92
|
+
return 'workspace/list';
|
|
93
|
+
return endpoint.replace('.', '/');
|
|
94
|
+
}
|
|
95
|
+
export function success(value) {
|
|
96
|
+
return { ok: true, value };
|
|
97
|
+
}
|
|
98
|
+
export function failure(code, message, details = {}) {
|
|
99
|
+
return { ok: false, error: { code, message, details } };
|
|
100
|
+
}
|
|
101
|
+
export function business(value) {
|
|
102
|
+
if (isRecord(value) && value.ok === false && isRecord(value.error)) {
|
|
103
|
+
return {
|
|
104
|
+
ok: false, error: {
|
|
105
|
+
code: string(value.error.code) ?? 'internal',
|
|
106
|
+
message: string(value.error.message) ?? 'The virtual Harness request failed.',
|
|
107
|
+
details: isRecord(value.error.details) ? value.error.details : {},
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
if (isRecord(value) && value.ok === true)
|
|
112
|
+
return { ok: true, value: value.value };
|
|
113
|
+
return { ok: true, value };
|
|
114
|
+
}
|
|
115
|
+
export function fail(code, message, details = {}) {
|
|
116
|
+
return { ok: false, error: { code, message, details } };
|
|
117
|
+
}
|
|
118
|
+
export function failFrom(error) {
|
|
119
|
+
const source = error instanceof Error ? error : new Error(String(error));
|
|
120
|
+
const code = 'code' in source && typeof source.code === 'string' ? source.code : 'internal';
|
|
121
|
+
return fail(code, source.message);
|
|
122
|
+
}
|
|
123
|
+
export function record(value) {
|
|
124
|
+
return isRecord(value) ? value : {};
|
|
125
|
+
}
|
|
126
|
+
export function isRecord(value) {
|
|
127
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
128
|
+
}
|
|
129
|
+
export function array(value) {
|
|
130
|
+
return Array.isArray(value) ? value : [];
|
|
131
|
+
}
|
|
132
|
+
export function string(value) {
|
|
133
|
+
return typeof value === 'string' ? value : undefined;
|
|
134
|
+
}
|
|
135
|
+
function integer(value) {
|
|
136
|
+
return typeof value === 'number' && Number.isSafeInteger(value) ? value : undefined;
|
|
137
|
+
}
|
|
138
|
+
export function optionalInteger(value) {
|
|
139
|
+
if (value === undefined)
|
|
140
|
+
return undefined;
|
|
141
|
+
const parsed = integer(value);
|
|
142
|
+
if (parsed === undefined)
|
|
143
|
+
throw new Error('The History cursor is invalid.');
|
|
144
|
+
return parsed;
|
|
145
|
+
}
|
|
146
|
+
export function optionalPositiveInteger(value) {
|
|
147
|
+
const parsed = optionalInteger(value);
|
|
148
|
+
if (parsed !== undefined && parsed <= 0)
|
|
149
|
+
throw new Error('The History page size is invalid.');
|
|
150
|
+
return parsed;
|
|
151
|
+
}
|
|
152
|
+
export function requiredString(value, field) {
|
|
153
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
154
|
+
throw new Error(`The ${field} is required.`);
|
|
155
|
+
return value;
|
|
156
|
+
}
|
|
157
|
+
export class AsyncValueQueue {
|
|
158
|
+
signal;
|
|
159
|
+
values = [];
|
|
160
|
+
waiters = [];
|
|
161
|
+
closed = false;
|
|
162
|
+
onAbort;
|
|
163
|
+
constructor(signal) {
|
|
164
|
+
this.signal = signal;
|
|
165
|
+
this.onAbort = () => this.close();
|
|
166
|
+
signal.addEventListener('abort', this.onAbort, { once: true });
|
|
167
|
+
if (signal.aborted)
|
|
168
|
+
this.close();
|
|
169
|
+
}
|
|
170
|
+
push(value) {
|
|
171
|
+
if (this.closed)
|
|
172
|
+
return;
|
|
173
|
+
const waiter = this.waiters.shift();
|
|
174
|
+
if (waiter === undefined)
|
|
175
|
+
this.values.push(value);
|
|
176
|
+
else
|
|
177
|
+
waiter({ done: false, value });
|
|
178
|
+
}
|
|
179
|
+
close() {
|
|
180
|
+
if (this.closed)
|
|
181
|
+
return;
|
|
182
|
+
this.closed = true;
|
|
183
|
+
this.signal.removeEventListener('abort', this.onAbort);
|
|
184
|
+
for (const waiter of this.waiters.splice(0))
|
|
185
|
+
waiter({ done: true, value: undefined });
|
|
186
|
+
}
|
|
187
|
+
iterate(dispose) {
|
|
188
|
+
const queue = this;
|
|
189
|
+
return {
|
|
190
|
+
async *[Symbol.asyncIterator]() {
|
|
191
|
+
try {
|
|
192
|
+
yield* queue;
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
dispose();
|
|
196
|
+
queue.close();
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
async *[Symbol.asyncIterator]() {
|
|
202
|
+
while (true) {
|
|
203
|
+
if (this.values.length > 0) {
|
|
204
|
+
yield this.values.shift();
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (this.closed)
|
|
208
|
+
return;
|
|
209
|
+
const next = await new Promise(resolve => this.waiters.push(resolve));
|
|
210
|
+
if (next.done)
|
|
211
|
+
return;
|
|
212
|
+
yield next.value;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=virtual-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-contract.js","sourceRoot":"","sources":["../../src/acp/virtual-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ApiProxy, RpcRequest } from '@deepseek-ai/dsh-host-apiproxy/api';
|
|
2
|
+
import type { TypertRpcResult } from '../typert-gateway-contract.js';
|
|
3
|
+
import type { AcpVirtualWorkspaceView } from './virtual-catalog.js';
|
|
4
|
+
import type { AcpClientLike, AcpSessionState, JsonRecord, PendingApproval } from './virtual-contract.js';
|
|
5
|
+
import { AsyncValueQueue } from './virtual-contract.js';
|
|
6
|
+
/** Collaborates with one AcpVirtualHarness; never creates a second session or connection state. */
|
|
7
|
+
export interface AcpEventCarrierContext {
|
|
8
|
+
readonly workspaceStreams: Set<AsyncValueQueue>;
|
|
9
|
+
readonly visibleWorkspaces: () => AcpVirtualWorkspaceView[];
|
|
10
|
+
readonly controlStreams: Set<AsyncValueQueue>;
|
|
11
|
+
readonly eventStreams: Map<string, AsyncValueQueue>;
|
|
12
|
+
readonly selectedWorkspaceId: string | undefined;
|
|
13
|
+
readonly workspaceById: Map<string, AcpVirtualWorkspaceView>;
|
|
14
|
+
readonly backendLabel: () => string;
|
|
15
|
+
readonly pendingApprovals: Map<string, PendingApproval>;
|
|
16
|
+
readonly client: AcpClientLike;
|
|
17
|
+
readonly dispatch: (endpoint: string, payload: unknown, signal: AbortSignal) => Promise<TypertRpcResult>;
|
|
18
|
+
readonly rcMuxStreams: Set<AsyncValueQueue>;
|
|
19
|
+
readonly sessions: Map<string, AcpSessionState>;
|
|
20
|
+
readonly rcHostStreams: Set<AsyncValueQueue>;
|
|
21
|
+
readonly nextProjectionSeq: () => number;
|
|
22
|
+
readonly archivedSessionIds: ReadonlySet<string>;
|
|
23
|
+
}
|
|
24
|
+
export declare class AcpEventCarrier {
|
|
25
|
+
private readonly context;
|
|
26
|
+
constructor(context: AcpEventCarrierContext);
|
|
27
|
+
workspaceFollow(signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
28
|
+
sessionControl(signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
29
|
+
/**
|
|
30
|
+
* Background jobs belong to the Host Harness session, not to a backend-scoped
|
|
31
|
+
* virtual Workspace. The native session header mounts a job roster stream as
|
|
32
|
+
* soon as a Session opens, so answer it with an authoritative empty roster
|
|
33
|
+
* instead of a terminal `method-not-found` failure that tears the page down.
|
|
34
|
+
*/
|
|
35
|
+
emptyJobStream(endpoint: 'job/list' | 'job/follow', signal: AbortSignal): AsyncIterable<unknown>;
|
|
36
|
+
remoteEvents(signal: AbortSignal): Promise<AsyncIterable<unknown>>;
|
|
37
|
+
emitRemoteEvent(event: string, args: unknown[]): void;
|
|
38
|
+
emitApproval(input: {
|
|
39
|
+
eventId: string;
|
|
40
|
+
agentId: string;
|
|
41
|
+
request: JsonRecord;
|
|
42
|
+
}): void;
|
|
43
|
+
answerRemoteEvent(args: JsonRecord, signal: AbortSignal): Promise<undefined>;
|
|
44
|
+
createApiProxy(): ApiProxy;
|
|
45
|
+
rcMux(request: RpcRequest<unknown>, signal: AbortSignal): AsyncIterable<unknown>;
|
|
46
|
+
rcHost(_request: RpcRequest<unknown>, signal: AbortSignal): AsyncIterable<unknown>;
|
|
47
|
+
broadcastRcMux(payload: unknown, rpcId?: string): void;
|
|
48
|
+
broadcastRcHost(payload: unknown): void;
|
|
49
|
+
publishProjection(sessionId: string, key: string, value: unknown, seq?: number): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=virtual-event-carrier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-event-carrier.d.ts","sourceRoot":"","sources":["../../src/acp/virtual-event-carrier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { nativeWorkspace } from './virtual-catalog.js';
|
|
2
|
+
import { AsyncValueQueue, failure, isRecord, rcEndpoint, record, string, success } from './virtual-contract.js';
|
|
3
|
+
export class AcpEventCarrier {
|
|
4
|
+
context;
|
|
5
|
+
constructor(context) {
|
|
6
|
+
this.context = context;
|
|
7
|
+
}
|
|
8
|
+
async workspaceFollow(signal) {
|
|
9
|
+
const queue = new AsyncValueQueue(signal);
|
|
10
|
+
this.context.workspaceStreams.add(queue);
|
|
11
|
+
queue.push({
|
|
12
|
+
type: 'baseline',
|
|
13
|
+
value: {
|
|
14
|
+
items: this.context.visibleWorkspaces().map(nativeWorkspace),
|
|
15
|
+
archivedSessionIds: [...this.context.archivedSessionIds],
|
|
16
|
+
pinnedSessionIds: [],
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
return queue.iterate(() => this.context.workspaceStreams.delete(queue));
|
|
20
|
+
}
|
|
21
|
+
async sessionControl(signal) {
|
|
22
|
+
const queue = new AsyncValueQueue(signal);
|
|
23
|
+
this.context.controlStreams.add(queue);
|
|
24
|
+
// Session Controller treats the first control frame as the opening
|
|
25
|
+
// snapshot. Without it the Client-side RemoteSnapshotStream never moves
|
|
26
|
+
// to `ready`, so a workspace selected through the Remote modal remains
|
|
27
|
+
// stuck on the empty shell after the page reload.
|
|
28
|
+
queue.push({ type: 'baseline', value: { projections: {} } });
|
|
29
|
+
return queue.iterate(() => this.context.controlStreams.delete(queue));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Background jobs belong to the Host Harness session, not to a backend-scoped
|
|
33
|
+
* virtual Workspace. The native session header mounts a job roster stream as
|
|
34
|
+
* soon as a Session opens, so answer it with an authoritative empty roster
|
|
35
|
+
* instead of a terminal `method-not-found` failure that tears the page down.
|
|
36
|
+
*/
|
|
37
|
+
emptyJobStream(endpoint, signal) {
|
|
38
|
+
const queue = new AsyncValueQueue(signal);
|
|
39
|
+
if (endpoint === 'job/list')
|
|
40
|
+
queue.push({ type: 'rows', jobs: [] });
|
|
41
|
+
return queue.iterate(() => queue.close());
|
|
42
|
+
}
|
|
43
|
+
async remoteEvents(signal) {
|
|
44
|
+
const id = `cursor-events:${Date.now()}:${Math.random()}`;
|
|
45
|
+
const queue = new AsyncValueQueue(signal);
|
|
46
|
+
this.context.eventStreams.set(id, queue);
|
|
47
|
+
const workspace = this.context.selectedWorkspaceId === undefined
|
|
48
|
+
? undefined
|
|
49
|
+
: this.context.workspaceById.get(this.context.selectedWorkspaceId);
|
|
50
|
+
queue.push({
|
|
51
|
+
type: 'ready',
|
|
52
|
+
clientId: id,
|
|
53
|
+
host: { home: workspace?.path ?? '/' },
|
|
54
|
+
});
|
|
55
|
+
return queue.iterate(() => this.context.eventStreams.delete(id));
|
|
56
|
+
}
|
|
57
|
+
emitRemoteEvent(event, args) {
|
|
58
|
+
for (const queue of this.context.eventStreams.values())
|
|
59
|
+
queue.push({ type: 'emit', event, args });
|
|
60
|
+
const sessionId = typeof args[0] === 'string' ? args[0] : undefined;
|
|
61
|
+
if (event === 'api-session/status' && sessionId !== undefined && typeof args[1] === 'boolean') {
|
|
62
|
+
this.broadcastRcHost({ type: 'host/session-status', sessionId, running: args[1] });
|
|
63
|
+
}
|
|
64
|
+
else if (event === 'api-session/removed' && sessionId !== undefined) {
|
|
65
|
+
this.broadcastRcHost({ type: 'host/session-removed', sessionId });
|
|
66
|
+
}
|
|
67
|
+
else if (event === 'api-session/added' && isRecord(args[0])) {
|
|
68
|
+
const summary = args[0];
|
|
69
|
+
this.broadcastRcHost({
|
|
70
|
+
type: 'host/session-added',
|
|
71
|
+
sessionId: summary.sessionId,
|
|
72
|
+
blank: summary.blank === true,
|
|
73
|
+
...(typeof summary.cwd === 'string' ? { cwd: summary.cwd } : {}),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
emitApproval(input) {
|
|
78
|
+
for (const queue of this.context.eventStreams.values())
|
|
79
|
+
queue.push({
|
|
80
|
+
type: 'waterfall',
|
|
81
|
+
event: 'approval/request',
|
|
82
|
+
eventId: input.eventId,
|
|
83
|
+
agentId: input.agentId,
|
|
84
|
+
request: input.request,
|
|
85
|
+
});
|
|
86
|
+
this.broadcastRcMux({
|
|
87
|
+
type: 'approval/requested',
|
|
88
|
+
sessionId: input.agentId,
|
|
89
|
+
approvalId: input.eventId,
|
|
90
|
+
toolName: string(input.request.toolName) ?? this.context.backendLabel(),
|
|
91
|
+
...(typeof input.request.reason === 'string' ? { reason: input.request.reason } : {}),
|
|
92
|
+
}, input.eventId);
|
|
93
|
+
}
|
|
94
|
+
async answerRemoteEvent(args, signal) {
|
|
95
|
+
const eventId = string(args.eventId);
|
|
96
|
+
const outcome = record(args.outcome);
|
|
97
|
+
if (eventId === undefined)
|
|
98
|
+
throw new Error(`The ${this.context.backendLabel()} approval result is missing its event id.`);
|
|
99
|
+
const pending = this.context.pendingApprovals.get(eventId);
|
|
100
|
+
if (pending === undefined)
|
|
101
|
+
return undefined;
|
|
102
|
+
this.context.pendingApprovals.delete(eventId);
|
|
103
|
+
const decision = outcome.kind === 'result' && outcome.value === 'allowed-once'
|
|
104
|
+
? 'allow-once'
|
|
105
|
+
: outcome.kind === 'result' && outcome.value === 'cancelled'
|
|
106
|
+
? 'cancel'
|
|
107
|
+
: 'reject-once';
|
|
108
|
+
await this.context.client.respond(pending.requestHandle, decision, undefined, signal);
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
createApiProxy() {
|
|
112
|
+
const call = (endpoint) => async (request, signal) => {
|
|
113
|
+
const payload = endpoint === 'session.prompt' && isRecord(request.payload)
|
|
114
|
+
? { ...request.payload, requestId: String(request.rpcId) }
|
|
115
|
+
: request.payload;
|
|
116
|
+
const result = await this.context.dispatch(rcEndpoint(endpoint), { args: { request: payload } }, signal ?? new AbortController().signal);
|
|
117
|
+
return {
|
|
118
|
+
rpcId: request.rpcId,
|
|
119
|
+
result: (result.ok
|
|
120
|
+
? success(result.value)
|
|
121
|
+
: failure(result.error.code, result.error.message, result.error.details)),
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
sessions: {
|
|
126
|
+
list: call('session.list'),
|
|
127
|
+
search: call('session.search'),
|
|
128
|
+
create: call('session.create'),
|
|
129
|
+
history: call('session.history'),
|
|
130
|
+
models: call('session.models'),
|
|
131
|
+
selectModel: call('session.selectModel'),
|
|
132
|
+
rename: call('session.rename'),
|
|
133
|
+
fork: call('session.fork'),
|
|
134
|
+
prompt: call('session.prompt'),
|
|
135
|
+
attachment: call('session.attachment'),
|
|
136
|
+
updateQueue: call('session.updateQueue'),
|
|
137
|
+
cancel: call('session.cancel'),
|
|
138
|
+
},
|
|
139
|
+
workspace: {
|
|
140
|
+
list: call('workspace.list'),
|
|
141
|
+
create: call('workspace.create'),
|
|
142
|
+
rename: call('workspace.rename'),
|
|
143
|
+
delete: call('workspace.delete'),
|
|
144
|
+
insertBefore: call('workspace.insertBefore'),
|
|
145
|
+
insertSessionBefore: call('workspace.insertSessionBefore'),
|
|
146
|
+
archiveSession: call('workspace.archiveSession'),
|
|
147
|
+
},
|
|
148
|
+
subagents: {},
|
|
149
|
+
host: {
|
|
150
|
+
describe: call('host.describe'),
|
|
151
|
+
listDirectory: call('host.listDirectory'),
|
|
152
|
+
},
|
|
153
|
+
skills: { list: call('skills.list') },
|
|
154
|
+
agentPresets: {},
|
|
155
|
+
goals: {},
|
|
156
|
+
settings: {},
|
|
157
|
+
credentials: {},
|
|
158
|
+
llm: {},
|
|
159
|
+
events: {
|
|
160
|
+
mux: ((request, signal) => this.rcMux(request, signal)),
|
|
161
|
+
host: ((request, signal) => this.rcHost(request, signal)),
|
|
162
|
+
},
|
|
163
|
+
downloads: {},
|
|
164
|
+
respond: async (message) => {
|
|
165
|
+
const pending = this.context.pendingApprovals.get(String(message.rpcId))
|
|
166
|
+
?? [...this.context.pendingApprovals.values()].find(item => item.requestHandle === String(message.rpcId));
|
|
167
|
+
if (pending === undefined)
|
|
168
|
+
return { accepted: false, reason: 'not-pending' };
|
|
169
|
+
const result = message.result;
|
|
170
|
+
const outcome = result.ok ? result.value : undefined;
|
|
171
|
+
const decision = outcome === 'allowed-once' ? 'allow-once' : outcome === 'cancelled' ? 'cancel' : 'reject-once';
|
|
172
|
+
await this.context.client.respond(pending.requestHandle, decision);
|
|
173
|
+
this.context.pendingApprovals.delete(pending.requestHandle);
|
|
174
|
+
return { accepted: true };
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
async *rcMux(request, signal) {
|
|
179
|
+
const queue = new AsyncValueQueue(signal);
|
|
180
|
+
this.context.rcMuxStreams.add(queue);
|
|
181
|
+
for (const session of this.context.sessions.values()) {
|
|
182
|
+
queue.push({
|
|
183
|
+
rpcId: `${String(request.rpcId)}:${session.sessionId}:subscribed`,
|
|
184
|
+
payload: { type: 'session/subscribed', sessionId: session.sessionId, lastSeq: -1 },
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
yield* queue;
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
this.context.rcMuxStreams.delete(queue);
|
|
192
|
+
queue.close();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async *rcHost(_request, signal) {
|
|
196
|
+
const queue = new AsyncValueQueue(signal);
|
|
197
|
+
this.context.rcHostStreams.add(queue);
|
|
198
|
+
try {
|
|
199
|
+
yield* queue;
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
this.context.rcHostStreams.delete(queue);
|
|
203
|
+
queue.close();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
broadcastRcMux(payload, rpcId = `cursor-mux:${Date.now()}:${Math.random()}`) {
|
|
207
|
+
for (const queue of this.context.rcMuxStreams)
|
|
208
|
+
queue.push({ rpcId, payload });
|
|
209
|
+
}
|
|
210
|
+
broadcastRcHost(payload) {
|
|
211
|
+
const frame = { rpcId: `cursor-host:${Date.now()}:${Math.random()}`, payload };
|
|
212
|
+
for (const queue of this.context.rcHostStreams)
|
|
213
|
+
queue.push(frame);
|
|
214
|
+
}
|
|
215
|
+
publishProjection(sessionId, key, value, seq = this.context.nextProjectionSeq()) {
|
|
216
|
+
for (const queue of this.context.controlStreams) {
|
|
217
|
+
queue.push({ type: 'projection', sessionId, key, value, asOfSeq: seq, seq });
|
|
218
|
+
}
|
|
219
|
+
this.broadcastRcMux({ type: 'session/projection', sessionId, key, value, seq });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=virtual-event-carrier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-event-carrier.js","sourceRoot":"","sources":["../../src/acp/virtual-event-carrier.ts"],"names":[],"mappings":"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"}
|