@modelprofile.com/mcp-crossharness 5.0.0
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/.smartconfig.json +34 -0
- package/cli.js +4 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.connection.codex.d.ts +66 -0
- package/dist_ts/classes.connection.codex.js +941 -0
- package/dist_ts/classes.connection.opencode.d.ts +34 -0
- package/dist_ts/classes.connection.opencode.js +365 -0
- package/dist_ts/classes.connectionregistry.d.ts +32 -0
- package/dist_ts/classes.connectionregistry.js +246 -0
- package/dist_ts/classes.dispatchregistry.d.ts +39 -0
- package/dist_ts/classes.dispatchregistry.js +177 -0
- package/dist_ts/classes.mcpserver.d.ts +21 -0
- package/dist_ts/classes.mcpserver.js +276 -0
- package/dist_ts/helpers.d.ts +4 -0
- package/dist_ts/helpers.js +17 -0
- package/dist_ts/index.d.ts +5 -0
- package/dist_ts/index.js +9 -0
- package/dist_ts/interfaces.d.ts +57 -0
- package/dist_ts/interfaces.js +2 -0
- package/dist_ts/plugins.d.ts +17 -0
- package/dist_ts/plugins.js +14 -0
- package/license.md +21 -0
- package/package.json +51 -0
- package/readme.hints.md +52 -0
- package/readme.md +204 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/classes.connection.codex.ts +1120 -0
- package/ts/classes.connection.opencode.ts +443 -0
- package/ts/classes.connectionregistry.ts +309 -0
- package/ts/classes.dispatchregistry.ts +216 -0
- package/ts/classes.mcpserver.ts +363 -0
- package/ts/helpers.ts +20 -0
- package/ts/index.ts +10 -0
- package/ts/interfaces.ts +71 -0
- package/ts/plugins.ts +30 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type * as interfaces from './interfaces.js';
|
|
2
|
+
import type { IOpenCodeCredentials } from './classes.connectionregistry.js';
|
|
3
|
+
export declare class OpencodeConnection implements interfaces.IHarnessConnection {
|
|
4
|
+
readonly connectionId: string;
|
|
5
|
+
readonly serverUrl: string;
|
|
6
|
+
readonly directory: string;
|
|
7
|
+
private onClosing?;
|
|
8
|
+
private onClosed?;
|
|
9
|
+
private readonly credentials?;
|
|
10
|
+
readonly harness: "opencode";
|
|
11
|
+
state: interfaces.TConnectionState;
|
|
12
|
+
private connectedAt;
|
|
13
|
+
private serverVersion;
|
|
14
|
+
private activeControllers;
|
|
15
|
+
private connectStarted;
|
|
16
|
+
constructor(connectionId: string, serverUrl: string, directory: string, onClosing?: (() => void) | undefined, onClosed?: (() => void) | undefined, credentials?: IOpenCodeCredentials | undefined);
|
|
17
|
+
connect(): Promise<void>;
|
|
18
|
+
getInfo(): interfaces.IConnectionInfo;
|
|
19
|
+
getStatus(): Promise<interfaces.IConnectionStatus>;
|
|
20
|
+
listChats(limitArg: number): Promise<interfaces.IChatSummary[]>;
|
|
21
|
+
readChat(chatIdArg: string, limitArg: number, maxCharsArg: number): Promise<interfaces.IChatTranscript>;
|
|
22
|
+
sendMessage(chatIdArg: string, messageArg: string, timeoutSecondsArg: number, signalArg?: AbortSignal): Promise<interfaces.ISendResult>;
|
|
23
|
+
close(reasonArg?: string): Promise<void>;
|
|
24
|
+
private requireSession;
|
|
25
|
+
private parseSession;
|
|
26
|
+
private parseMessage;
|
|
27
|
+
private parseMessageEnvelope;
|
|
28
|
+
private requestJson;
|
|
29
|
+
private readResponseText;
|
|
30
|
+
private authHeaders;
|
|
31
|
+
private redactCredentials;
|
|
32
|
+
private remainingSendMs;
|
|
33
|
+
private assertChatId;
|
|
34
|
+
}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import * as helpers from './helpers.js';
|
|
3
|
+
const serverApiVersion = '1.18.13';
|
|
4
|
+
export class OpencodeConnection {
|
|
5
|
+
connectionId;
|
|
6
|
+
serverUrl;
|
|
7
|
+
directory;
|
|
8
|
+
onClosing;
|
|
9
|
+
onClosed;
|
|
10
|
+
credentials;
|
|
11
|
+
harness = 'opencode';
|
|
12
|
+
state = 'connecting';
|
|
13
|
+
connectedAt = new Date().toISOString();
|
|
14
|
+
serverVersion;
|
|
15
|
+
activeControllers = new Set();
|
|
16
|
+
connectStarted = false;
|
|
17
|
+
constructor(connectionId, serverUrl, directory, onClosing, onClosed, credentials) {
|
|
18
|
+
this.connectionId = connectionId;
|
|
19
|
+
this.serverUrl = serverUrl;
|
|
20
|
+
this.directory = directory;
|
|
21
|
+
this.onClosing = onClosing;
|
|
22
|
+
this.onClosed = onClosed;
|
|
23
|
+
this.credentials = credentials;
|
|
24
|
+
}
|
|
25
|
+
async connect() {
|
|
26
|
+
if (this.connectStarted) {
|
|
27
|
+
throw new Error(`OpenCode connection ${this.connectionId} has already been started`);
|
|
28
|
+
}
|
|
29
|
+
this.connectStarted = true;
|
|
30
|
+
const health = await this.requestJson('/global/health', { timeoutMs: 5000 }, true);
|
|
31
|
+
if (!helpers.isRecord(health) || health.healthy !== true || typeof health.version !== 'string') {
|
|
32
|
+
throw new Error(`OpenCode server at ${this.serverUrl} returned an invalid health response (expected API verified against ${serverApiVersion})`);
|
|
33
|
+
}
|
|
34
|
+
this.serverVersion = health.version;
|
|
35
|
+
this.state = 'connected';
|
|
36
|
+
}
|
|
37
|
+
getInfo() {
|
|
38
|
+
return {
|
|
39
|
+
connectionId: this.connectionId,
|
|
40
|
+
harness: this.harness,
|
|
41
|
+
serverUrl: this.serverUrl,
|
|
42
|
+
directory: this.directory,
|
|
43
|
+
state: this.state,
|
|
44
|
+
connectedAt: this.connectedAt,
|
|
45
|
+
serverVersion: this.serverVersion,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async getStatus() {
|
|
49
|
+
if (this.state !== 'connected') {
|
|
50
|
+
return { ...this.getInfo(), healthy: false, detail: `connection is ${this.state}` };
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const health = await this.requestJson('/global/health', { timeoutMs: 5000 });
|
|
54
|
+
const healthy = helpers.isRecord(health) && health.healthy === true;
|
|
55
|
+
return {
|
|
56
|
+
...this.getInfo(),
|
|
57
|
+
healthy,
|
|
58
|
+
detail: healthy ? 'OpenCode /global/health reported healthy' : 'invalid health response',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return { ...this.getInfo(), healthy: false, detail: helpers.errorMessage(error) };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async listChats(limitArg) {
|
|
66
|
+
const payload = await this.requestJson('/session', {
|
|
67
|
+
query: { directory: this.directory, roots: 'true', limit: String(limitArg) },
|
|
68
|
+
timeoutMs: 30000,
|
|
69
|
+
});
|
|
70
|
+
if (!Array.isArray(payload)) {
|
|
71
|
+
throw new Error('OpenCode server returned an invalid session list');
|
|
72
|
+
}
|
|
73
|
+
const sessions = payload.map((entry) => this.parseSession(entry));
|
|
74
|
+
if (sessions.some((session) => session.directory !== this.directory)) {
|
|
75
|
+
throw new Error('OpenCode server returned a session outside the connection directory');
|
|
76
|
+
}
|
|
77
|
+
return sessions
|
|
78
|
+
.filter((session) => session.parentID === undefined)
|
|
79
|
+
.slice(0, limitArg)
|
|
80
|
+
.map((session) => ({
|
|
81
|
+
harness: this.harness,
|
|
82
|
+
chatId: session.id,
|
|
83
|
+
title: session.title,
|
|
84
|
+
directory: session.directory,
|
|
85
|
+
updatedAt: new Date(session.updatedMs).toISOString(),
|
|
86
|
+
isActive: Date.now() - session.updatedMs < 120000,
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
async readChat(chatIdArg, limitArg, maxCharsArg) {
|
|
90
|
+
this.assertChatId(chatIdArg);
|
|
91
|
+
const session = await this.requireSession(chatIdArg);
|
|
92
|
+
const payload = await this.requestJson(`/session/${encodeURIComponent(chatIdArg)}/message`, {
|
|
93
|
+
query: { directory: this.directory, limit: String(limitArg) },
|
|
94
|
+
timeoutMs: 30000,
|
|
95
|
+
});
|
|
96
|
+
if (!Array.isArray(payload)) {
|
|
97
|
+
throw new Error('OpenCode server returned an invalid message list');
|
|
98
|
+
}
|
|
99
|
+
const messages = payload.map((entry) => this.parseMessage(entry, chatIdArg, maxCharsArg));
|
|
100
|
+
return {
|
|
101
|
+
harness: this.harness,
|
|
102
|
+
chatId: chatIdArg,
|
|
103
|
+
title: session.title,
|
|
104
|
+
directory: session.directory,
|
|
105
|
+
messages,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
async sendMessage(chatIdArg, messageArg, timeoutSecondsArg, signalArg) {
|
|
109
|
+
this.assertChatId(chatIdArg);
|
|
110
|
+
if (messageArg.length > 1024 * 1024) {
|
|
111
|
+
throw new Error('OpenCode message exceeds the 1 MiB character limit');
|
|
112
|
+
}
|
|
113
|
+
const deadline = Date.now() + timeoutSecondsArg * 1000;
|
|
114
|
+
await this.requireSession(chatIdArg, this.remainingSendMs(deadline, timeoutSecondsArg), signalArg);
|
|
115
|
+
const requestMessageId = `msg_${plugins.crypto.randomUUID().replaceAll('-', '')}`;
|
|
116
|
+
let payload;
|
|
117
|
+
try {
|
|
118
|
+
payload = await this.requestJson(`/session/${encodeURIComponent(chatIdArg)}/message`, {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
query: { directory: this.directory },
|
|
121
|
+
body: {
|
|
122
|
+
messageID: requestMessageId,
|
|
123
|
+
parts: [{ type: 'text', text: messageArg }],
|
|
124
|
+
},
|
|
125
|
+
timeoutMs: this.remainingSendMs(deadline, timeoutSecondsArg),
|
|
126
|
+
signal: signalArg,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw new Error(`OpenCode send failed; the server may still have queued or started the turn, and Crossharness did not retry: ${helpers.errorMessage(error)}`, { cause: error });
|
|
131
|
+
}
|
|
132
|
+
const parsed = this.parseMessageEnvelope(payload, chatIdArg);
|
|
133
|
+
if (parsed.info.role !== 'assistant' || parsed.info.parentID !== requestMessageId) {
|
|
134
|
+
throw new Error('OpenCode server returned an assistant response for a different prompt');
|
|
135
|
+
}
|
|
136
|
+
if (parsed.info.error !== undefined && parsed.info.error !== null) {
|
|
137
|
+
throw new Error('OpenCode server returned an assistant error');
|
|
138
|
+
}
|
|
139
|
+
const reply = parsed.parts
|
|
140
|
+
.filter((part) => part.type === 'text' && typeof part.text === 'string')
|
|
141
|
+
.map((part) => part.text)
|
|
142
|
+
.join('\n')
|
|
143
|
+
.trim();
|
|
144
|
+
if (!reply) {
|
|
145
|
+
throw new Error('OpenCode server returned no assistant text');
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
harness: this.harness,
|
|
149
|
+
chatId: chatIdArg,
|
|
150
|
+
reply,
|
|
151
|
+
via: `http:${this.serverUrl}`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
async close(reasonArg = 'connection disconnected') {
|
|
155
|
+
if (this.state === 'closed')
|
|
156
|
+
return;
|
|
157
|
+
this.state = 'closing';
|
|
158
|
+
this.onClosing?.();
|
|
159
|
+
this.onClosing = undefined;
|
|
160
|
+
for (const controller of this.activeControllers) {
|
|
161
|
+
controller.abort(new Error(reasonArg));
|
|
162
|
+
}
|
|
163
|
+
this.activeControllers.clear();
|
|
164
|
+
this.state = 'closed';
|
|
165
|
+
this.onClosed?.();
|
|
166
|
+
this.onClosed = undefined;
|
|
167
|
+
}
|
|
168
|
+
async requireSession(chatIdArg, timeoutMsArg = 30000, signalArg) {
|
|
169
|
+
const payload = await this.requestJson(`/session/${encodeURIComponent(chatIdArg)}`, {
|
|
170
|
+
query: { directory: this.directory },
|
|
171
|
+
timeoutMs: timeoutMsArg,
|
|
172
|
+
signal: signalArg,
|
|
173
|
+
});
|
|
174
|
+
const session = this.parseSession(payload);
|
|
175
|
+
if (session.id !== chatIdArg) {
|
|
176
|
+
throw new Error(`OpenCode server returned a different session for ${chatIdArg}`);
|
|
177
|
+
}
|
|
178
|
+
if (session.directory !== this.directory) {
|
|
179
|
+
throw new Error(`OpenCode session ${chatIdArg} is outside the connection directory`);
|
|
180
|
+
}
|
|
181
|
+
return session;
|
|
182
|
+
}
|
|
183
|
+
parseSession(valueArg) {
|
|
184
|
+
if (!helpers.isRecord(valueArg) || !helpers.isRecord(valueArg.time)) {
|
|
185
|
+
throw new Error('OpenCode server returned an invalid session');
|
|
186
|
+
}
|
|
187
|
+
const updatedMs = Number(valueArg.time.updated);
|
|
188
|
+
if (typeof valueArg.id !== 'string' ||
|
|
189
|
+
typeof valueArg.title !== 'string' ||
|
|
190
|
+
typeof valueArg.directory !== 'string' ||
|
|
191
|
+
!Number.isFinite(updatedMs) ||
|
|
192
|
+
(valueArg.parentID !== undefined && typeof valueArg.parentID !== 'string')) {
|
|
193
|
+
throw new Error('OpenCode server returned an invalid session');
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
id: valueArg.id,
|
|
197
|
+
title: valueArg.title,
|
|
198
|
+
directory: valueArg.directory,
|
|
199
|
+
updatedMs,
|
|
200
|
+
parentID: valueArg.parentID,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
parseMessage(valueArg, chatIdArg, maxCharsArg) {
|
|
204
|
+
const parsed = this.parseMessageEnvelope(valueArg, chatIdArg);
|
|
205
|
+
const textParts = parsed.parts
|
|
206
|
+
.filter((part) => part.type === 'text' && typeof part.text === 'string')
|
|
207
|
+
.map((part) => part.text);
|
|
208
|
+
const toolParts = parsed.parts
|
|
209
|
+
.filter((part) => part.type === 'tool' && typeof part.tool === 'string')
|
|
210
|
+
.map((part) => `[tool: ${part.tool}]`);
|
|
211
|
+
const created = helpers.isRecord(parsed.info.time) ? Number(parsed.info.time.created) : NaN;
|
|
212
|
+
return {
|
|
213
|
+
role: parsed.info.role,
|
|
214
|
+
text: helpers.truncateText([...textParts, ...toolParts].join('\n').trim(), maxCharsArg),
|
|
215
|
+
timestamp: Number.isFinite(created) ? new Date(created).toISOString() : undefined,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
parseMessageEnvelope(valueArg, chatIdArg) {
|
|
219
|
+
if (!helpers.isRecord(valueArg) || !helpers.isRecord(valueArg.info) || !Array.isArray(valueArg.parts)) {
|
|
220
|
+
throw new Error('OpenCode server returned an invalid message');
|
|
221
|
+
}
|
|
222
|
+
const info = valueArg.info;
|
|
223
|
+
if (typeof info.id !== 'string' ||
|
|
224
|
+
typeof info.role !== 'string' ||
|
|
225
|
+
info.sessionID !== chatIdArg ||
|
|
226
|
+
(info.parentID !== undefined && typeof info.parentID !== 'string')) {
|
|
227
|
+
throw new Error('OpenCode server returned an invalid message identity');
|
|
228
|
+
}
|
|
229
|
+
const parts = valueArg.parts.map((part) => {
|
|
230
|
+
if (!helpers.isRecord(part) ||
|
|
231
|
+
typeof part.type !== 'string' ||
|
|
232
|
+
part.sessionID !== chatIdArg ||
|
|
233
|
+
part.messageID !== info.id) {
|
|
234
|
+
throw new Error('OpenCode server returned an invalid message part');
|
|
235
|
+
}
|
|
236
|
+
return part;
|
|
237
|
+
});
|
|
238
|
+
return {
|
|
239
|
+
info: info,
|
|
240
|
+
parts,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
async requestJson(pathArg, optionsArg, allowConnectingArg = false) {
|
|
244
|
+
if (!allowConnectingArg && this.state !== 'connected') {
|
|
245
|
+
throw new Error(`OpenCode connection ${this.connectionId} is ${this.state}`);
|
|
246
|
+
}
|
|
247
|
+
const url = new URL(pathArg, `${this.serverUrl}/`);
|
|
248
|
+
for (const [key, value] of Object.entries(optionsArg.query ?? {})) {
|
|
249
|
+
url.searchParams.set(key, value);
|
|
250
|
+
}
|
|
251
|
+
const controller = new AbortController();
|
|
252
|
+
if (this.activeControllers.size >= 100) {
|
|
253
|
+
throw new Error('OpenCode connection has too many active requests');
|
|
254
|
+
}
|
|
255
|
+
this.activeControllers.add(controller);
|
|
256
|
+
const abortFromCaller = () => controller.abort(optionsArg.signal?.reason);
|
|
257
|
+
if (optionsArg.signal?.aborted)
|
|
258
|
+
abortFromCaller();
|
|
259
|
+
else
|
|
260
|
+
optionsArg.signal?.addEventListener('abort', abortFromCaller, { once: true });
|
|
261
|
+
const timer = setTimeout(() => controller.abort(new Error(`OpenCode request timed out after ${optionsArg.timeoutMs}ms`)), optionsArg.timeoutMs);
|
|
262
|
+
try {
|
|
263
|
+
const response = await fetch(url, {
|
|
264
|
+
method: optionsArg.method ?? 'GET',
|
|
265
|
+
headers: {
|
|
266
|
+
...this.authHeaders(),
|
|
267
|
+
accept: 'application/json',
|
|
268
|
+
...(optionsArg.body === undefined ? {} : { 'content-type': 'application/json' }),
|
|
269
|
+
},
|
|
270
|
+
body: optionsArg.body === undefined ? undefined : JSON.stringify(optionsArg.body),
|
|
271
|
+
redirect: 'error',
|
|
272
|
+
signal: controller.signal,
|
|
273
|
+
});
|
|
274
|
+
if (!response.ok) {
|
|
275
|
+
const responseText = await this.readResponseText(response, 64 * 1024).catch(() => '[response body unavailable or too large]');
|
|
276
|
+
const redactedResponseText = this.redactCredentials(responseText);
|
|
277
|
+
throw new Error(`OpenCode server returned HTTP ${response.status}${redactedResponseText ? `: ${redactedResponseText.slice(0, 2000)}` : ''}`);
|
|
278
|
+
}
|
|
279
|
+
const responseText = await this.readResponseText(response, 16 * 1024 * 1024);
|
|
280
|
+
const payload = helpers.parseJson(responseText);
|
|
281
|
+
if (payload === undefined) {
|
|
282
|
+
throw new Error('OpenCode server returned invalid JSON');
|
|
283
|
+
}
|
|
284
|
+
return payload;
|
|
285
|
+
}
|
|
286
|
+
finally {
|
|
287
|
+
clearTimeout(timer);
|
|
288
|
+
optionsArg.signal?.removeEventListener('abort', abortFromCaller);
|
|
289
|
+
this.activeControllers.delete(controller);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
async readResponseText(responseArg, maxBytesArg) {
|
|
293
|
+
const contentLength = Number(responseArg.headers.get('content-length'));
|
|
294
|
+
if (Number.isFinite(contentLength) && contentLength > maxBytesArg) {
|
|
295
|
+
await responseArg.body?.cancel().catch(() => { });
|
|
296
|
+
throw new Error(`OpenCode response exceeds ${maxBytesArg} bytes`);
|
|
297
|
+
}
|
|
298
|
+
if (!responseArg.body)
|
|
299
|
+
return '';
|
|
300
|
+
const reader = responseArg.body.getReader();
|
|
301
|
+
const decoder = new TextDecoder();
|
|
302
|
+
let bytes = 0;
|
|
303
|
+
let text = '';
|
|
304
|
+
try {
|
|
305
|
+
while (true) {
|
|
306
|
+
const { done, value } = await reader.read();
|
|
307
|
+
if (done)
|
|
308
|
+
break;
|
|
309
|
+
bytes += value.byteLength;
|
|
310
|
+
if (bytes > maxBytesArg) {
|
|
311
|
+
await reader.cancel().catch(() => { });
|
|
312
|
+
throw new Error(`OpenCode response exceeds ${maxBytesArg} bytes`);
|
|
313
|
+
}
|
|
314
|
+
text += decoder.decode(value, { stream: true });
|
|
315
|
+
}
|
|
316
|
+
return text + decoder.decode();
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
reader.releaseLock();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
authHeaders() {
|
|
323
|
+
const password = this.credentials?.password ?? process.env.OPENCODE_SERVER_PASSWORD;
|
|
324
|
+
if (!password) {
|
|
325
|
+
throw new Error('OPENCODE_SERVER_PASSWORD is required for OpenCode connections');
|
|
326
|
+
}
|
|
327
|
+
const username = this.credentials
|
|
328
|
+
? (this.credentials.username ?? 'opencode')
|
|
329
|
+
: (process.env.OPENCODE_SERVER_USERNAME ?? 'opencode');
|
|
330
|
+
return {
|
|
331
|
+
authorization: `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
redactCredentials(valueArg) {
|
|
335
|
+
const password = this.credentials?.password ?? process.env.OPENCODE_SERVER_PASSWORD;
|
|
336
|
+
const username = this.credentials
|
|
337
|
+
? (this.credentials.username ?? 'opencode')
|
|
338
|
+
: (process.env.OPENCODE_SERVER_USERNAME ?? 'opencode');
|
|
339
|
+
const authorization = password
|
|
340
|
+
? `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`
|
|
341
|
+
: '';
|
|
342
|
+
let value = valueArg;
|
|
343
|
+
const secrets = [authorization, password, username]
|
|
344
|
+
.filter((secret) => Boolean(secret))
|
|
345
|
+
.sort((left, right) => right.length - left.length);
|
|
346
|
+
for (const secret of secrets) {
|
|
347
|
+
if (secret)
|
|
348
|
+
value = value.replaceAll(secret, '[redacted]');
|
|
349
|
+
}
|
|
350
|
+
return value;
|
|
351
|
+
}
|
|
352
|
+
remainingSendMs(deadlineArg, timeoutSecondsArg) {
|
|
353
|
+
const remainingMs = deadlineArg - Date.now();
|
|
354
|
+
if (remainingMs <= 0) {
|
|
355
|
+
throw new Error(`OpenCode send timed out after ${timeoutSecondsArg}s before dispatch; no message was delivered`);
|
|
356
|
+
}
|
|
357
|
+
return remainingMs;
|
|
358
|
+
}
|
|
359
|
+
assertChatId(chatIdArg) {
|
|
360
|
+
if (!chatIdArg || chatIdArg.length > 1024) {
|
|
361
|
+
throw new Error('OpenCode chatId must contain 1-1024 characters');
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb25uZWN0aW9uLm9wZW5jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5jb25uZWN0aW9uLm9wZW5jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBSXhDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0FBVW5DLE1BQU0sT0FBTyxrQkFBa0I7SUFTWDtJQUNBO0lBQ0E7SUFDUjtJQUNBO0lBQ1M7SUFiSCxPQUFPLEdBQUcsVUFBbUIsQ0FBQztJQUN2QyxLQUFLLEdBQWdDLFlBQVksQ0FBQztJQUNqRCxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxhQUFhLENBQXFCO0lBQ2xDLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBQy9DLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFL0IsWUFDa0IsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsU0FBaUIsRUFDekIsU0FBc0IsRUFDdEIsUUFBcUIsRUFDWixXQUFrQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQXVCO0lBQ2xELENBQUM7SUFFRyxLQUFLLENBQUMsT0FBTztRQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsWUFBWSwyQkFBMkIsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztR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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type * as interfaces from './interfaces.js';
|
|
2
|
+
export interface IConnectionRegistryOptions {
|
|
3
|
+
allowedServerUrls?: string[];
|
|
4
|
+
maxConnections?: number;
|
|
5
|
+
openCodeCredentials?: IOpenCodeCredentials;
|
|
6
|
+
}
|
|
7
|
+
export interface IOpenCodeCredentials {
|
|
8
|
+
serverUrl: string;
|
|
9
|
+
username?: string;
|
|
10
|
+
password: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class ConnectionRegistry {
|
|
13
|
+
private connections;
|
|
14
|
+
private connecting;
|
|
15
|
+
private closingConnections;
|
|
16
|
+
private allowedServerUrls;
|
|
17
|
+
private maxConnections;
|
|
18
|
+
private openCodeCredentials;
|
|
19
|
+
private closing;
|
|
20
|
+
private closingTasks;
|
|
21
|
+
private shutdownPromise;
|
|
22
|
+
constructor(optionsArg?: IConnectionRegistryOptions);
|
|
23
|
+
connect(harnessArg: interfaces.THarnessName, serverUrlArg: string, directoryArg: string, signalArg?: AbortSignal): Promise<interfaces.IConnectionInfo>;
|
|
24
|
+
get(connectionIdArg: string): interfaces.IHarnessConnection;
|
|
25
|
+
list(): interfaces.IConnectionInfo[];
|
|
26
|
+
disconnect(connectionIdArg: string): Promise<interfaces.IConnectionInfo>;
|
|
27
|
+
closeAll(): Promise<void>;
|
|
28
|
+
private closeConnection;
|
|
29
|
+
private validateAllowedUrl;
|
|
30
|
+
private normalizeUrl;
|
|
31
|
+
private abortError;
|
|
32
|
+
}
|