@agent-relay/harnesses 10.6.7 → 11.0.1
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/README.md +71 -4
- package/dist/ai-sdk/adapter-registry.d.ts +47 -0
- package/dist/ai-sdk/adapter-registry.d.ts.map +1 -0
- package/dist/ai-sdk/adapter-registry.js +134 -0
- package/dist/ai-sdk/adapter-registry.js.map +1 -0
- package/dist/ai-sdk/harness-host.d.ts +83 -0
- package/dist/ai-sdk/harness-host.d.ts.map +1 -0
- package/dist/ai-sdk/harness-host.js +573 -0
- package/dist/ai-sdk/harness-host.js.map +1 -0
- package/dist/ai-sdk/index.d.ts +6 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +6 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/ai-sdk/local-host-sandbox.d.ts +119 -0
- package/dist/ai-sdk/local-host-sandbox.d.ts.map +1 -0
- package/dist/ai-sdk/local-host-sandbox.js +475 -0
- package/dist/ai-sdk/local-host-sandbox.js.map +1 -0
- package/dist/ai-sdk/native-relay-tools.d.ts +10 -0
- package/dist/ai-sdk/native-relay-tools.d.ts.map +1 -0
- package/dist/ai-sdk/native-relay-tools.js +178 -0
- package/dist/ai-sdk/native-relay-tools.js.map +1 -0
- package/dist/ai-sdk/relay-session.d.ts +22 -0
- package/dist/ai-sdk/relay-session.d.ts.map +1 -0
- package/dist/ai-sdk/relay-session.js +423 -0
- package/dist/ai-sdk/relay-session.js.map +1 -0
- package/dist/ai-sdk/sidecar-main.d.ts +3 -0
- package/dist/ai-sdk/sidecar-main.d.ts.map +1 -0
- package/dist/ai-sdk/sidecar-main.js +7 -0
- package/dist/ai-sdk/sidecar-main.js.map +1 -0
- package/dist/ai-sdk/sidecar.d.ts +20 -0
- package/dist/ai-sdk/sidecar.d.ts.map +1 -0
- package/dist/ai-sdk/sidecar.js +361 -0
- package/dist/ai-sdk/sidecar.js.map +1 -0
- package/dist/define.d.ts +49 -1
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +202 -1
- package/dist/define.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/observability.d.ts +41 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +178 -0
- package/dist/observability.js.map +1 -0
- package/package.json +12 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar-main.d.ts","sourceRoot":"","sources":["../../src/ai-sdk/sidecar-main.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { runAiSdkSidecarMain } from './sidecar.js';
|
|
3
|
+
runAiSdkSidecarMain().catch((error) => {
|
|
4
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
5
|
+
process.exitCode = 1;
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=sidecar-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar-main.js","sourceRoot":"","sources":["../../src/ai-sdk/sidecar-main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type RelayAdapterSettings } from './adapter-registry.js';
|
|
2
|
+
export interface AiSdkSidecarConfig {
|
|
3
|
+
name: string;
|
|
4
|
+
harness: string;
|
|
5
|
+
workspace: string;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
settings?: RelayAdapterSettings;
|
|
8
|
+
instructions?: string;
|
|
9
|
+
runtimeRoot?: string;
|
|
10
|
+
permissionMode?: 'allow-reads' | 'allow-edits' | 'allow-all';
|
|
11
|
+
/** Bounded native harness command idempotency cache; primarily configurable for tests. */
|
|
12
|
+
maxCommandDedupeEntries?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface AiSdkSidecarIo {
|
|
15
|
+
input: NodeJS.ReadableStream;
|
|
16
|
+
write: (line: string) => void | Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function runAiSdkSidecar(config: AiSdkSidecarConfig, io: AiSdkSidecarIo): Promise<void>;
|
|
19
|
+
export declare function runAiSdkSidecarMain(argv?: readonly string[], env?: NodeJS.ProcessEnv): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=sidecar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/ai-sdk/sidecar.ts"],"names":[],"mappings":"AAeA,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAMxF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;IAC7D,0FAA0F;IAC1F,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAuED,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmRnG;AAgBD,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,SAAS,MAAM,EAA0B,EAC/C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { createInterface } from 'node:readline';
|
|
4
|
+
import { NATIVE_HARNESS_PROTOCOL_VERSION, } from '@agent-relay/harness-driver';
|
|
5
|
+
import { aiSdkAdapterRegistry } from './adapter-registry.js';
|
|
6
|
+
import { HarnessHost } from './harness-host.js';
|
|
7
|
+
import { LocalHostSandboxProvider } from './local-host-sandbox.js';
|
|
8
|
+
import { createNativeRelayTools, NATIVE_RELAY_INSTRUCTIONS } from './native-relay-tools.js';
|
|
9
|
+
import { RelayHarnessSession } from './relay-session.js';
|
|
10
|
+
function errorMessage(error) {
|
|
11
|
+
return error instanceof Error ? error.message : String(error);
|
|
12
|
+
}
|
|
13
|
+
function protocolError(error) {
|
|
14
|
+
return { code: 'native_harness_command_failed', message: errorMessage(error), retryable: false };
|
|
15
|
+
}
|
|
16
|
+
function commandDigest(command) {
|
|
17
|
+
const canonical = JSON.stringify([
|
|
18
|
+
command.kind,
|
|
19
|
+
command.text ?? null,
|
|
20
|
+
command.mode ?? null,
|
|
21
|
+
command.approval_id ?? null,
|
|
22
|
+
command.instructions ?? null,
|
|
23
|
+
]);
|
|
24
|
+
return createHash('sha256').update(canonical).digest('hex');
|
|
25
|
+
}
|
|
26
|
+
function isCommandFrame(value) {
|
|
27
|
+
if (!value || typeof value !== 'object')
|
|
28
|
+
return false;
|
|
29
|
+
const frame = value;
|
|
30
|
+
return (frame.v === 2 &&
|
|
31
|
+
frame.type === 'native_harness_command' &&
|
|
32
|
+
typeof frame.request_id === 'string' &&
|
|
33
|
+
frame.payload?.protocol_version === NATIVE_HARNESS_PROTOCOL_VERSION);
|
|
34
|
+
}
|
|
35
|
+
function isWorkerInputFrame(value) {
|
|
36
|
+
return Boolean(value && typeof value === 'object' && value.v === 2);
|
|
37
|
+
}
|
|
38
|
+
function eventPayload(event, sequence, timestamp) {
|
|
39
|
+
const { type, agent: _agent, ...payload } = event;
|
|
40
|
+
const observability = event.observability ? { ...event.observability, sequence, timestamp } : undefined;
|
|
41
|
+
return JSON.parse(JSON.stringify({ kind: type, ...payload, ...(observability ? { observability } : {}) }));
|
|
42
|
+
}
|
|
43
|
+
function diagnosticPayload(diagnostic) {
|
|
44
|
+
return {
|
|
45
|
+
level: diagnostic.level === 'warn'
|
|
46
|
+
? 'warning'
|
|
47
|
+
: diagnostic.level === 'trace'
|
|
48
|
+
? 'debug'
|
|
49
|
+
: diagnostic.level,
|
|
50
|
+
message: 'message' in diagnostic && typeof diagnostic.message === 'string'
|
|
51
|
+
? diagnostic.message
|
|
52
|
+
: JSON.stringify(diagnostic),
|
|
53
|
+
subsystem: diagnostic.subsystem,
|
|
54
|
+
diagnostic: JSON.parse(JSON.stringify(diagnostic)),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export async function runAiSdkSidecar(config, io) {
|
|
58
|
+
const entry = aiSdkAdapterRegistry.require(config.harness);
|
|
59
|
+
const harness = await entry.createHarness(config.settings);
|
|
60
|
+
const provider = new LocalHostSandboxProvider({
|
|
61
|
+
workspace: config.workspace,
|
|
62
|
+
runtimeRoot: config.runtimeRoot,
|
|
63
|
+
});
|
|
64
|
+
const relayTools = createNativeRelayTools();
|
|
65
|
+
const instructions = [relayTools.length > 0 ? NATIVE_RELAY_INSTRUCTIONS : undefined, config.instructions]
|
|
66
|
+
.filter((value) => Boolean(value))
|
|
67
|
+
.join('\n\n');
|
|
68
|
+
let diagnosticSequence = 0;
|
|
69
|
+
let agentEventSequence = 0;
|
|
70
|
+
let agentEventWrites = Promise.resolve();
|
|
71
|
+
const write = async (frame) => io.write(`${JSON.stringify(frame)}\n`);
|
|
72
|
+
const publishEvent = (event) => {
|
|
73
|
+
agentEventWrites = agentEventWrites.then(async () => {
|
|
74
|
+
const sequence = ++agentEventSequence;
|
|
75
|
+
const timestamp = new Date().toISOString();
|
|
76
|
+
const envelope = {
|
|
77
|
+
protocol_version: NATIVE_HARNESS_PROTOCOL_VERSION,
|
|
78
|
+
sequence,
|
|
79
|
+
timestamp,
|
|
80
|
+
event: eventPayload(event, sequence, timestamp),
|
|
81
|
+
};
|
|
82
|
+
await write({ v: 2, type: 'agent_event', payload: envelope });
|
|
83
|
+
});
|
|
84
|
+
return agentEventWrites;
|
|
85
|
+
};
|
|
86
|
+
const host = new HarnessHost({
|
|
87
|
+
harness,
|
|
88
|
+
sandboxProvider: provider,
|
|
89
|
+
workspace: config.workspace,
|
|
90
|
+
sessionId: config.sessionId,
|
|
91
|
+
instructions: instructions || undefined,
|
|
92
|
+
tools: relayTools,
|
|
93
|
+
permissionMode: config.permissionMode,
|
|
94
|
+
onDiagnostic: async (diagnostic) => {
|
|
95
|
+
const envelope = {
|
|
96
|
+
protocol_version: NATIVE_HARNESS_PROTOCOL_VERSION,
|
|
97
|
+
sequence: ++diagnosticSequence,
|
|
98
|
+
timestamp: new Date().toISOString(),
|
|
99
|
+
diagnostic: diagnosticPayload(diagnostic),
|
|
100
|
+
};
|
|
101
|
+
await write({ v: 2, type: 'native_harness_diagnostic', payload: envelope });
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
const relaySession = new RelayHarnessSession({
|
|
105
|
+
identity: {
|
|
106
|
+
id: config.name,
|
|
107
|
+
name: config.name,
|
|
108
|
+
handle: config.name.toLowerCase().replaceAll(/[^a-z0-9_-]/g, '-'),
|
|
109
|
+
},
|
|
110
|
+
host,
|
|
111
|
+
});
|
|
112
|
+
const relayDeliveries = new Map();
|
|
113
|
+
relaySession.onEvent?.(async (event) => {
|
|
114
|
+
await publishEvent(event);
|
|
115
|
+
if (event.type === 'delivery.accepted' && event.deliveryId) {
|
|
116
|
+
const delivery = relayDeliveries.get(event.deliveryId);
|
|
117
|
+
if (!delivery)
|
|
118
|
+
return;
|
|
119
|
+
relayDeliveries.delete(event.deliveryId);
|
|
120
|
+
await write({
|
|
121
|
+
v: 2,
|
|
122
|
+
type: 'delivery_ack',
|
|
123
|
+
payload: { delivery_id: event.deliveryId, event_id: delivery.eventId },
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
await host.start();
|
|
128
|
+
const maxCommandDedupeEntries = Math.max(1, config.maxCommandDedupeEntries ?? 10_000);
|
|
129
|
+
const acknowledgements = new Map();
|
|
130
|
+
const lines = createInterface({ input: io.input, crlfDelay: Infinity });
|
|
131
|
+
for await (const line of lines) {
|
|
132
|
+
if (!line.trim())
|
|
133
|
+
continue;
|
|
134
|
+
let frame;
|
|
135
|
+
try {
|
|
136
|
+
frame = JSON.parse(line);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
await write({
|
|
140
|
+
v: 2,
|
|
141
|
+
type: 'native_harness_diagnostic',
|
|
142
|
+
payload: {
|
|
143
|
+
protocol_version: NATIVE_HARNESS_PROTOCOL_VERSION,
|
|
144
|
+
sequence: ++diagnosticSequence,
|
|
145
|
+
timestamp: new Date().toISOString(),
|
|
146
|
+
diagnostic: {
|
|
147
|
+
level: 'error',
|
|
148
|
+
message: `Invalid native harness command JSON: ${errorMessage(error)}`,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (!isWorkerInputFrame(frame))
|
|
155
|
+
continue;
|
|
156
|
+
if (frame.type === 'init_worker') {
|
|
157
|
+
await write({
|
|
158
|
+
v: 2,
|
|
159
|
+
type: 'worker_ready',
|
|
160
|
+
payload: { name: config.name, runtime: 'headless', sessionId: host.sessionId },
|
|
161
|
+
});
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (frame.type === 'ping') {
|
|
165
|
+
await write({ v: 2, type: 'pong', payload: frame.payload });
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
if (frame.type === 'deliver_relay') {
|
|
169
|
+
const delivery = frame.payload;
|
|
170
|
+
try {
|
|
171
|
+
relayDeliveries.set(delivery.delivery_id, { eventId: delivery.event_id });
|
|
172
|
+
const receipt = await relaySession.receiveMessage({
|
|
173
|
+
id: delivery.event_id,
|
|
174
|
+
messageId: delivery.event_id,
|
|
175
|
+
kind: delivery.thread_id ? 'thread_reply' : delivery.target.startsWith('#') ? 'channel' : 'dm',
|
|
176
|
+
text: delivery.body,
|
|
177
|
+
from: { id: delivery.from, name: delivery.from, type: 'agent' },
|
|
178
|
+
target: delivery.target.startsWith('#')
|
|
179
|
+
? { kind: 'channel', channelName: delivery.target.slice(1) }
|
|
180
|
+
: { kind: 'agent', agentName: delivery.target },
|
|
181
|
+
threadId: delivery.thread_id,
|
|
182
|
+
}, {
|
|
183
|
+
id: delivery.delivery_id,
|
|
184
|
+
idempotencyKey: delivery.delivery_id,
|
|
185
|
+
mode: delivery.injection_mode === 'wait' ? 'on-idle' : 'immediate',
|
|
186
|
+
reason: delivery.thread_id ? 'thread-reply' : delivery.target.startsWith('#') ? 'mention' : 'dm',
|
|
187
|
+
});
|
|
188
|
+
if (receipt.status === 'failed')
|
|
189
|
+
throw new Error(receipt.reason);
|
|
190
|
+
if (receipt.status === 'accepted') {
|
|
191
|
+
const pending = relayDeliveries.get(delivery.delivery_id);
|
|
192
|
+
if (pending) {
|
|
193
|
+
relayDeliveries.delete(delivery.delivery_id);
|
|
194
|
+
await write({
|
|
195
|
+
v: 2,
|
|
196
|
+
type: 'delivery_ack',
|
|
197
|
+
payload: { delivery_id: delivery.delivery_id, event_id: pending.eventId },
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
relayDeliveries.delete(delivery.delivery_id);
|
|
204
|
+
await write({
|
|
205
|
+
v: 2,
|
|
206
|
+
type: 'delivery_failed',
|
|
207
|
+
payload: {
|
|
208
|
+
delivery_id: delivery.delivery_id,
|
|
209
|
+
event_id: delivery.event_id,
|
|
210
|
+
reason: errorMessage(error),
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (frame.type === 'shutdown_worker') {
|
|
217
|
+
await host.destroy();
|
|
218
|
+
await write({ v: 2, type: 'worker_exited', payload: { code: 0 } });
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
if (!isCommandFrame(frame))
|
|
222
|
+
continue;
|
|
223
|
+
const command = frame.payload;
|
|
224
|
+
const digest = commandDigest(command);
|
|
225
|
+
const previous = acknowledgements.get(command.idempotency_key);
|
|
226
|
+
if (previous) {
|
|
227
|
+
if (previous.digest !== digest) {
|
|
228
|
+
await write({
|
|
229
|
+
v: 2,
|
|
230
|
+
type: 'native_harness_command_response',
|
|
231
|
+
request_id: frame.request_id,
|
|
232
|
+
payload: {
|
|
233
|
+
protocol_version: NATIVE_HARNESS_PROTOCOL_VERSION,
|
|
234
|
+
request_id: frame.request_id,
|
|
235
|
+
idempotency_key: command.idempotency_key,
|
|
236
|
+
accepted: false,
|
|
237
|
+
active_turn: host.hasActiveTurn,
|
|
238
|
+
error: {
|
|
239
|
+
code: 'idempotency_conflict',
|
|
240
|
+
message: 'Native harness command idempotency key was already used for a different command',
|
|
241
|
+
retryable: false,
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
await write({
|
|
248
|
+
v: 2,
|
|
249
|
+
type: 'native_harness_command_response',
|
|
250
|
+
request_id: frame.request_id,
|
|
251
|
+
payload: {
|
|
252
|
+
...previous.acknowledgement,
|
|
253
|
+
request_id: frame.request_id,
|
|
254
|
+
duplicate: true,
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
let acknowledgement;
|
|
260
|
+
try {
|
|
261
|
+
switch (command.kind) {
|
|
262
|
+
case 'submit_user_message': {
|
|
263
|
+
if (typeof command.text !== 'string')
|
|
264
|
+
throw new Error('submit_user_message requires text');
|
|
265
|
+
if (command.mode === 'active' && !host.hasActiveTurn) {
|
|
266
|
+
throw new Error('No active turn is available for active input');
|
|
267
|
+
}
|
|
268
|
+
if (command.mode === 'idle' && host.hasActiveTurn) {
|
|
269
|
+
throw new Error('An active turn is already running');
|
|
270
|
+
}
|
|
271
|
+
if (host.hasActiveTurn)
|
|
272
|
+
await host.submitUserMessage(command.text);
|
|
273
|
+
else
|
|
274
|
+
await host.startTurn(command.text, command.idempotency_key);
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
case 'approve_tool':
|
|
278
|
+
case 'reject_tool':
|
|
279
|
+
if (!command.approval_id)
|
|
280
|
+
throw new Error(`${command.kind} requires approval_id`);
|
|
281
|
+
await host.submitToolApproval({
|
|
282
|
+
approvalId: command.approval_id,
|
|
283
|
+
approved: command.kind === 'approve_tool',
|
|
284
|
+
});
|
|
285
|
+
break;
|
|
286
|
+
case 'interrupt':
|
|
287
|
+
await host.interrupt();
|
|
288
|
+
break;
|
|
289
|
+
case 'compact':
|
|
290
|
+
if (command.instructions !== undefined && typeof command.instructions !== 'string') {
|
|
291
|
+
throw new Error('compact instructions must be a string');
|
|
292
|
+
}
|
|
293
|
+
await host.compact(command.instructions);
|
|
294
|
+
break;
|
|
295
|
+
case 'release':
|
|
296
|
+
await relaySession.release('native_harness_command');
|
|
297
|
+
break;
|
|
298
|
+
default:
|
|
299
|
+
throw new Error(`Unsupported native harness command kind: ${String(command.kind)}`);
|
|
300
|
+
}
|
|
301
|
+
acknowledgement = {
|
|
302
|
+
protocol_version: NATIVE_HARNESS_PROTOCOL_VERSION,
|
|
303
|
+
request_id: frame.request_id,
|
|
304
|
+
idempotency_key: command.idempotency_key,
|
|
305
|
+
accepted: true,
|
|
306
|
+
active_turn: host.hasActiveTurn,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
acknowledgement = {
|
|
311
|
+
protocol_version: NATIVE_HARNESS_PROTOCOL_VERSION,
|
|
312
|
+
request_id: frame.request_id,
|
|
313
|
+
idempotency_key: command.idempotency_key,
|
|
314
|
+
accepted: false,
|
|
315
|
+
active_turn: host.hasActiveTurn,
|
|
316
|
+
error: protocolError(error),
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
acknowledgements.set(command.idempotency_key, { digest, acknowledgement });
|
|
320
|
+
while (acknowledgements.size > maxCommandDedupeEntries) {
|
|
321
|
+
const oldest = acknowledgements.keys().next().value;
|
|
322
|
+
if (oldest === undefined)
|
|
323
|
+
break;
|
|
324
|
+
acknowledgements.delete(oldest);
|
|
325
|
+
}
|
|
326
|
+
await write({
|
|
327
|
+
v: 2,
|
|
328
|
+
type: 'native_harness_command_response',
|
|
329
|
+
request_id: frame.request_id,
|
|
330
|
+
payload: acknowledgement,
|
|
331
|
+
});
|
|
332
|
+
if (command.kind === 'release' && acknowledgement.accepted)
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
if (host.state !== 'destroyed' && host.state !== 'detached')
|
|
336
|
+
await host.destroy();
|
|
337
|
+
await agentEventWrites;
|
|
338
|
+
}
|
|
339
|
+
async function loadConfig(argv, env) {
|
|
340
|
+
const configIndex = argv.indexOf('--config');
|
|
341
|
+
const serialized = configIndex >= 0 && argv[configIndex + 1]
|
|
342
|
+
? await readFile(argv[configIndex + 1], 'utf8')
|
|
343
|
+
: env.RELAY_AI_SDK_SIDECAR_CONFIG;
|
|
344
|
+
if (!serialized)
|
|
345
|
+
throw new Error('Missing sidecar config (--config or RELAY_AI_SDK_SIDECAR_CONFIG)');
|
|
346
|
+
const config = JSON.parse(serialized);
|
|
347
|
+
if (!config.name || !config.harness || !config.workspace) {
|
|
348
|
+
throw new Error('Sidecar config requires name, harness, and workspace');
|
|
349
|
+
}
|
|
350
|
+
return config;
|
|
351
|
+
}
|
|
352
|
+
export async function runAiSdkSidecarMain(argv = process.argv.slice(2), env = process.env) {
|
|
353
|
+
const config = await loadConfig(argv, env);
|
|
354
|
+
await runAiSdkSidecar(config, {
|
|
355
|
+
input: process.stdin,
|
|
356
|
+
write: (line) => new Promise((resolveWrite, reject) => {
|
|
357
|
+
process.stdout.write(line, (error) => (error ? reject(error) : resolveWrite()));
|
|
358
|
+
}),
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=sidecar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../../src/ai-sdk/sidecar.ts"],"names":[],"mappings":"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"}
|
package/dist/define.d.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { type AgentRelay, type HarnessFactory, type RelayHarnessAgent } from '@agent-relay/sdk';
|
|
2
|
-
import type { StaticPtyHarnessDefinition } from '@agent-relay/harness-driver';
|
|
2
|
+
import type { SpawnRuntimeInput, StaticPtyHarnessDefinition } from '@agent-relay/harness-driver';
|
|
3
|
+
import { type AiSdkAdapterRegistryEntry } from './ai-sdk/adapter-registry.js';
|
|
4
|
+
import { AI_SDK_REFERENCE_OBSERVABILITY_PROFILE, getPtyObservabilityProfile } from './observability.js';
|
|
5
|
+
export type HarnessRuntime = 'auto' | 'native' | 'pty';
|
|
6
|
+
export type SelectedHarnessRuntime = Exclude<HarnessRuntime, 'auto'>;
|
|
7
|
+
export interface NativeHarnessSidecarLaunch {
|
|
8
|
+
command: string;
|
|
9
|
+
args: string[];
|
|
10
|
+
}
|
|
3
11
|
/** Options accepted when creating an agent from a harness. */
|
|
4
12
|
export interface HarnessCreateInput {
|
|
13
|
+
/** Runtime selection. `auto` uses only adapters promoted to default. */
|
|
14
|
+
runtime?: HarnessRuntime;
|
|
5
15
|
/** Explicit agent name/handle. Defaults to `<command>-<n>`. */
|
|
6
16
|
name?: string;
|
|
7
17
|
/** Model passed through to the harness CLI (e.g. `sonnet`, `gpt-5.5`). */
|
|
@@ -39,7 +49,32 @@ export interface HarnessAgent extends RelayHarnessAgent {
|
|
|
39
49
|
cwd?: string;
|
|
40
50
|
env?: Record<string, string>;
|
|
41
51
|
definition: StaticPtyHarnessDefinition;
|
|
52
|
+
observability: ReturnType<typeof getPtyObservabilityProfile>;
|
|
53
|
+
}
|
|
54
|
+
export interface NativeHarnessAgent extends RelayHarnessAgent {
|
|
55
|
+
kind: 'native';
|
|
56
|
+
cli: string;
|
|
57
|
+
runtime: 'native';
|
|
58
|
+
adapter: string;
|
|
59
|
+
model?: string;
|
|
60
|
+
task?: string;
|
|
61
|
+
args?: string[];
|
|
62
|
+
channels?: string[];
|
|
63
|
+
cwd?: string;
|
|
64
|
+
env?: Record<string, string>;
|
|
65
|
+
observability: typeof AI_SDK_REFERENCE_OBSERVABILITY_PROFILE;
|
|
42
66
|
}
|
|
67
|
+
export type ManagedHarnessAgent = HarnessAgent | NativeHarnessAgent;
|
|
68
|
+
export interface ManagedHarness extends HarnessFactory<HarnessCreateInput, ManagedHarnessAgent> {
|
|
69
|
+
readonly runtime: 'pty' | 'native';
|
|
70
|
+
readonly command: string;
|
|
71
|
+
readonly adapter: AiSdkAdapterRegistryEntry;
|
|
72
|
+
create(input?: HarnessCreateInput): Promise<ManagedHarnessAgent>;
|
|
73
|
+
new: (input?: HarnessCreateInput) => ManagedHarnessAgent;
|
|
74
|
+
}
|
|
75
|
+
export type ManagedPtyHarness = ManagedHarness & StaticPtyHarnessDefinition & {
|
|
76
|
+
readonly runtime: 'pty';
|
|
77
|
+
};
|
|
43
78
|
/**
|
|
44
79
|
* A harness factory. Remains structurally a {@link StaticPtyHarnessDefinition}
|
|
45
80
|
* (so the runtime can resolve it) while adding the {@link HarnessFactory}
|
|
@@ -57,4 +92,17 @@ export interface PtyHarness extends StaticPtyHarnessDefinition, HarnessFactory<H
|
|
|
57
92
|
}
|
|
58
93
|
/** Wrap a static PTY harness definition in a factory with `create`/`new`. */
|
|
59
94
|
export declare function definePtyHarness(definition: StaticPtyHarnessDefinition): PtyHarness;
|
|
95
|
+
export declare function selectHarnessRuntime(adapter: AiSdkAdapterRegistryEntry, requested?: HarnessRuntime): SelectedHarnessRuntime;
|
|
96
|
+
/** Resolve a public harness name or alias to the runtime the CLI should launch. */
|
|
97
|
+
export declare function resolveHarnessRuntime(harness: string, requested?: HarnessRuntime): SelectedHarnessRuntime;
|
|
98
|
+
/**
|
|
99
|
+
* Build the broker launch contract for an AI SDK-backed native harness.
|
|
100
|
+
*
|
|
101
|
+
* Keeping this as a public, side-effect-free resolver lets the CLI launch the
|
|
102
|
+
* sidecar through an already-running broker instead of starting a second one.
|
|
103
|
+
*/
|
|
104
|
+
export declare function createNativeHarnessLaunch(adapterName: string, input?: HarnessCreateInput, sidecarLaunch?: NativeHarnessSidecarLaunch): SpawnRuntimeInput;
|
|
105
|
+
/** Define a harness that can select between one official adapter and PTY. */
|
|
106
|
+
export declare function defineManagedHarness(adapterName: string, ptyDefinition: StaticPtyHarnessDefinition): ManagedPtyHarness;
|
|
107
|
+
export declare function defineManagedHarness(adapterName: string): ManagedHarness;
|
|
60
108
|
//# sourceMappingURL=define.d.ts.map
|
package/dist/define.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|