@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
package/dist/define.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
1
4
|
import { createAgentHandle, nextHarnessName, } from '@agent-relay/sdk';
|
|
2
5
|
import { getHarnessDriver } from './broker-binding.js';
|
|
6
|
+
import { aiSdkAdapterRegistry } from './ai-sdk/adapter-registry.js';
|
|
7
|
+
import { AI_SDK_REFERENCE_OBSERVABILITY_PROFILE, createPtyObservabilityTranslator, getPtyObservabilityProfile, } from './observability.js';
|
|
3
8
|
/** Wrap a static PTY harness definition in a factory with `create`/`new`. */
|
|
4
9
|
export function definePtyHarness(definition) {
|
|
5
10
|
const build = (input = {}) => {
|
|
@@ -17,6 +22,7 @@ export function definePtyHarness(definition) {
|
|
|
17
22
|
cwd: input.cwd ?? definition.cwd,
|
|
18
23
|
env: input.env ?? definition.env,
|
|
19
24
|
definition,
|
|
25
|
+
observability: getPtyObservabilityProfile(definition.command),
|
|
20
26
|
};
|
|
21
27
|
};
|
|
22
28
|
const spawnLive = async (input, relay) => {
|
|
@@ -32,6 +38,48 @@ export function definePtyHarness(definition) {
|
|
|
32
38
|
channels: input.channels,
|
|
33
39
|
cwd,
|
|
34
40
|
});
|
|
41
|
+
const translator = createPtyObservabilityTranslator(definition.command);
|
|
42
|
+
let turnId;
|
|
43
|
+
const emitTranslated = (signal) => {
|
|
44
|
+
for (const event of translator.translate(signal)) {
|
|
45
|
+
// Broker-owned PTY observability is published to Relaycast for every
|
|
46
|
+
// spawn surface. This local bridge only feeds listeners on the
|
|
47
|
+
// AgentRelay instance that created this managed harness.
|
|
48
|
+
relay.emitSessionEvent(runtime.agent.name, event);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const signalFromBroker = async (event) => {
|
|
52
|
+
switch (event.kind) {
|
|
53
|
+
case 'agent_spawned':
|
|
54
|
+
emitTranslated({ type: 'starting' });
|
|
55
|
+
return;
|
|
56
|
+
case 'worker_stream':
|
|
57
|
+
turnId ??= `pty-${randomUUID()}`;
|
|
58
|
+
emitTranslated({ type: 'busy', turnId });
|
|
59
|
+
return;
|
|
60
|
+
case 'agent_idle':
|
|
61
|
+
if (turnId) {
|
|
62
|
+
emitTranslated({ type: 'idle', turnId });
|
|
63
|
+
turnId = undefined;
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
case 'worker_error':
|
|
67
|
+
emitTranslated({ type: 'error', error: event.message, code: event.code });
|
|
68
|
+
return;
|
|
69
|
+
case 'agent_exit':
|
|
70
|
+
case 'agent_exited':
|
|
71
|
+
if (event.kind === 'agent_exited' && event.code === 0)
|
|
72
|
+
return;
|
|
73
|
+
emitTranslated({
|
|
74
|
+
type: 'error',
|
|
75
|
+
error: event.reason ??
|
|
76
|
+
`PTY runtime exited${event.kind === 'agent_exited' && event.code != null ? ` (${event.code})` : ''}`,
|
|
77
|
+
...(event.kind === 'agent_exited' && event.code != null ? { code: String(event.code) } : {}),
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
await runtime.observeBrokerEvents?.(signalFromBroker);
|
|
35
83
|
// Key the handle by the registered agent name so `agent.status.becomes(...)`
|
|
36
84
|
// predicates match the workspace events emitted for that agent.
|
|
37
85
|
const handle = createAgentHandle({ id: runtime.agent.name, name: runtime.agent.name });
|
|
@@ -47,13 +95,166 @@ export function definePtyHarness(definition) {
|
|
|
47
95
|
cwd,
|
|
48
96
|
env: input.env ?? definition.env,
|
|
49
97
|
definition,
|
|
98
|
+
observability: getPtyObservabilityProfile(definition.command),
|
|
50
99
|
};
|
|
51
100
|
};
|
|
52
101
|
return {
|
|
53
102
|
...definition,
|
|
54
103
|
name: definition.command,
|
|
55
|
-
create: async (input = {}) =>
|
|
104
|
+
create: async (input = {}) => {
|
|
105
|
+
if (input.runtime === 'native') {
|
|
106
|
+
throw new Error(`No native harness adapter is registered for ${definition.command}`);
|
|
107
|
+
}
|
|
108
|
+
return input.relay ? spawnLive(input, input.relay) : build(input);
|
|
109
|
+
},
|
|
56
110
|
new: (input) => build(input),
|
|
57
111
|
};
|
|
58
112
|
}
|
|
113
|
+
export function selectHarnessRuntime(adapter, requested = 'auto') {
|
|
114
|
+
if (requested === 'native')
|
|
115
|
+
return 'native';
|
|
116
|
+
if (requested === 'pty') {
|
|
117
|
+
if (!adapter.ptyAvailable)
|
|
118
|
+
throw new Error(`${adapter.name} does not provide a PTY runtime`);
|
|
119
|
+
return 'pty';
|
|
120
|
+
}
|
|
121
|
+
if (adapter.rollout === 'default')
|
|
122
|
+
return 'native';
|
|
123
|
+
if (adapter.ptyAvailable)
|
|
124
|
+
return 'pty';
|
|
125
|
+
throw new Error(`${adapter.name} is an experimental native-only harness; select runtime: 'native' explicitly`);
|
|
126
|
+
}
|
|
127
|
+
/** Resolve a public harness name or alias to the runtime the CLI should launch. */
|
|
128
|
+
export function resolveHarnessRuntime(harness, requested = 'auto') {
|
|
129
|
+
const adapter = aiSdkAdapterRegistry.get(harness);
|
|
130
|
+
if (!adapter) {
|
|
131
|
+
if (requested === 'native') {
|
|
132
|
+
throw new Error(`No native harness adapter is registered for ${harness}`);
|
|
133
|
+
}
|
|
134
|
+
return 'pty';
|
|
135
|
+
}
|
|
136
|
+
return selectHarnessRuntime(adapter, requested);
|
|
137
|
+
}
|
|
138
|
+
function nativeDescriptor(adapter, input, name = nextHarnessName(adapter.name, input.name)) {
|
|
139
|
+
const handle = createAgentHandle({ id: `harness:${adapter.name}:${name}`, name });
|
|
140
|
+
return {
|
|
141
|
+
...handle,
|
|
142
|
+
kind: 'native',
|
|
143
|
+
cli: adapter.name,
|
|
144
|
+
runtime: 'native',
|
|
145
|
+
adapter: adapter.name,
|
|
146
|
+
model: input.model,
|
|
147
|
+
task: input.task,
|
|
148
|
+
args: input.args,
|
|
149
|
+
channels: input.channels,
|
|
150
|
+
cwd: input.cwd,
|
|
151
|
+
env: input.env,
|
|
152
|
+
observability: AI_SDK_REFERENCE_OBSERVABILITY_PROFILE,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function publicNativeLifecycle(adapter) {
|
|
156
|
+
return {
|
|
157
|
+
activeInput: adapter.lifecycle.activeInput,
|
|
158
|
+
toolApprovals: adapter.lifecycle.toolApprovals,
|
|
159
|
+
compact: adapter.lifecycle.compact,
|
|
160
|
+
continueTurn: false,
|
|
161
|
+
suspendTurn: false,
|
|
162
|
+
detach: false,
|
|
163
|
+
stop: false,
|
|
164
|
+
destroy: false,
|
|
165
|
+
stopPreservesConversation: false,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function sessionEventFromAgentEventEnvelope(envelope) {
|
|
169
|
+
const { kind, ...payload } = envelope.event;
|
|
170
|
+
if (typeof kind !== 'string')
|
|
171
|
+
return undefined;
|
|
172
|
+
return { type: kind, ...payload };
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Build the broker launch contract for an AI SDK-backed native harness.
|
|
176
|
+
*
|
|
177
|
+
* Keeping this as a public, side-effect-free resolver lets the CLI launch the
|
|
178
|
+
* sidecar through an already-running broker instead of starting a second one.
|
|
179
|
+
*/
|
|
180
|
+
export function createNativeHarnessLaunch(adapterName, input = {}, sidecarLaunch) {
|
|
181
|
+
const adapter = aiSdkAdapterRegistry.require(adapterName);
|
|
182
|
+
const name = nextHarnessName(adapter.name, input.name);
|
|
183
|
+
const cwd = path.resolve(input.cwd ?? process.cwd());
|
|
184
|
+
const sessionId = `native-${randomUUID()}`;
|
|
185
|
+
const sidecarEntry = fileURLToPath(new URL('./ai-sdk/sidecar-main.js', import.meta.url));
|
|
186
|
+
const sidecarConfig = {
|
|
187
|
+
name,
|
|
188
|
+
harness: adapter.name,
|
|
189
|
+
workspace: cwd,
|
|
190
|
+
sessionId,
|
|
191
|
+
settings: { ...(input.model ? { model: input.model } : {}) },
|
|
192
|
+
};
|
|
193
|
+
return {
|
|
194
|
+
name,
|
|
195
|
+
cli: adapter.name,
|
|
196
|
+
task: input.task,
|
|
197
|
+
model: input.model,
|
|
198
|
+
channels: input.channels,
|
|
199
|
+
cwd,
|
|
200
|
+
transport: 'headless',
|
|
201
|
+
harnessConfig: {
|
|
202
|
+
runtime: 'native',
|
|
203
|
+
command: sidecarLaunch?.command ?? process.execPath,
|
|
204
|
+
args: sidecarLaunch?.args ?? [sidecarEntry],
|
|
205
|
+
cwd,
|
|
206
|
+
env: {
|
|
207
|
+
...input.env,
|
|
208
|
+
RELAY_AI_SDK_SIDECAR_CONFIG: JSON.stringify(sidecarConfig),
|
|
209
|
+
},
|
|
210
|
+
sessionId,
|
|
211
|
+
metadata: {
|
|
212
|
+
runtimeKind: 'native',
|
|
213
|
+
nativeHarnessProtocolVersion: 1,
|
|
214
|
+
// Only operations reachable through the versioned sidecar protocol are
|
|
215
|
+
// public runtime capabilities. The adapter may support additional
|
|
216
|
+
// in-process lifecycle methods that cannot safely cross this boundary.
|
|
217
|
+
nativeHarnessCapabilities: publicNativeLifecycle(adapter),
|
|
218
|
+
observability: AI_SDK_REFERENCE_OBSERVABILITY_PROFILE,
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
async function spawnNative(adapter, input, driver, relay) {
|
|
224
|
+
const launch = createNativeHarnessLaunch(adapter.name, input);
|
|
225
|
+
const runtime = await driver.spawn(launch);
|
|
226
|
+
await runtime.observeAgentEvents?.(async (envelope) => {
|
|
227
|
+
const event = sessionEventFromAgentEventEnvelope(envelope);
|
|
228
|
+
if (event)
|
|
229
|
+
relay.emitSessionEvent(runtime.agent.name, event);
|
|
230
|
+
});
|
|
231
|
+
const descriptor = nativeDescriptor(adapter, { ...input, cwd: launch.cwd }, runtime.agent.name);
|
|
232
|
+
return { ...descriptor, id: runtime.agent.name };
|
|
233
|
+
}
|
|
234
|
+
export function defineManagedHarness(adapterName, ptyDefinition) {
|
|
235
|
+
const adapter = aiSdkAdapterRegistry.require(adapterName);
|
|
236
|
+
if (Boolean(ptyDefinition) !== adapter.ptyAvailable) {
|
|
237
|
+
throw new Error(`PTY availability for ${adapter.name} does not match its registry declaration`);
|
|
238
|
+
}
|
|
239
|
+
const pty = ptyDefinition ? definePtyHarness(ptyDefinition) : undefined;
|
|
240
|
+
const build = (input = {}) => {
|
|
241
|
+
const runtime = selectHarnessRuntime(adapter, input.runtime);
|
|
242
|
+
return runtime === 'pty' ? pty.new({ ...input, runtime: 'pty' }) : nativeDescriptor(adapter, input);
|
|
243
|
+
};
|
|
244
|
+
return {
|
|
245
|
+
runtime: ptyDefinition ? 'pty' : 'native',
|
|
246
|
+
name: adapter.name,
|
|
247
|
+
command: ptyDefinition?.command ?? adapter.name,
|
|
248
|
+
adapter,
|
|
249
|
+
create: async (input = {}) => {
|
|
250
|
+
const runtime = selectHarnessRuntime(adapter, input.runtime);
|
|
251
|
+
if (runtime === 'pty')
|
|
252
|
+
return pty.create({ ...input, runtime: 'pty' });
|
|
253
|
+
return input.relay
|
|
254
|
+
? spawnNative(adapter, input, getHarnessDriver(input.relay), input.relay)
|
|
255
|
+
: nativeDescriptor(adapter, input);
|
|
256
|
+
},
|
|
257
|
+
new: build,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
59
260
|
//# sourceMappingURL=define.js.map
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,eAAe,
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { type PtyHarness } from './define.js';
|
|
2
2
|
export * from './define.js';
|
|
3
3
|
export * from './create-human.js';
|
|
4
|
+
export * from './observability.js';
|
|
5
|
+
export * from './ai-sdk/index.js';
|
|
4
6
|
export { defineHarness, normalizeAgentIdentity, MINIMAL_AGENT_SESSION_CAPABILITIES } from '@agent-relay/sdk';
|
|
5
7
|
export type { AgentSession, AgentSessionCapabilities, HarnessConfig, HarnessCreateContext, } from '@agent-relay/sdk';
|
|
6
|
-
export declare const claude:
|
|
7
|
-
export declare const codex:
|
|
8
|
+
export declare const claude: import("./define.js").ManagedPtyHarness;
|
|
9
|
+
export declare const codex: import("./define.js").ManagedPtyHarness;
|
|
8
10
|
export declare const gemini: PtyHarness;
|
|
9
11
|
export declare const cursor: PtyHarness;
|
|
10
12
|
export declare const droid: PtyHarness;
|
|
11
|
-
export declare const opencode:
|
|
13
|
+
export declare const opencode: import("./define.js").ManagedPtyHarness;
|
|
12
14
|
export declare const aider: PtyHarness;
|
|
13
15
|
export declare const goose: PtyHarness;
|
|
14
16
|
export declare const grok: PtyHarness;
|
|
17
|
+
export declare const pi: import("./define.js").ManagedHarness;
|
|
18
|
+
export declare const deepAgents: import("./define.js").ManagedHarness;
|
|
15
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtF,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;AAC7G,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,aAAa,EACb,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,MAAM,yCAAwE,CAAC;AAE5F,eAAO,MAAM,KAAK,yCAAsE,CAAC;AAEzF,eAAO,MAAM,MAAM,EAAE,UAAoE,CAAC;AAE1F,eAAO,MAAM,MAAM,EAAE,UAA0E,CAAC;AAEhG,eAAO,MAAM,KAAK,EAAE,UAAmE,CAAC;AAExF,eAAO,MAAM,QAAQ,yCAA4E,CAAC;AAElG,eAAO,MAAM,KAAK,EAAE,UAAmE,CAAC;AAExF,eAAO,MAAM,KAAK,EAAE,UAAmE,CAAC;AAExF,eAAO,MAAM,IAAI,EAAE,UAAkE,CAAC;AAEtF,eAAO,MAAM,EAAE,sCAA6B,CAAC;AAE7C,eAAO,MAAM,UAAU,sCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { definePtyHarness } from './define.js';
|
|
1
|
+
import { defineManagedHarness, definePtyHarness } from './define.js';
|
|
2
2
|
export * from './define.js';
|
|
3
3
|
export * from './create-human.js';
|
|
4
|
+
export * from './observability.js';
|
|
5
|
+
export * from './ai-sdk/index.js';
|
|
4
6
|
// Custom (non-PTY) harnesses are defined with the SDK's harness contract;
|
|
5
7
|
// re-export it here so harness authors have one import surface.
|
|
6
8
|
export { defineHarness, normalizeAgentIdentity, MINIMAL_AGENT_SESSION_CAPABILITIES } from '@agent-relay/sdk';
|
|
7
|
-
export const claude =
|
|
8
|
-
export const codex =
|
|
9
|
+
export const claude = defineManagedHarness('claude', { runtime: 'pty', command: 'claude' });
|
|
10
|
+
export const codex = defineManagedHarness('codex', { runtime: 'pty', command: 'codex' });
|
|
9
11
|
export const gemini = definePtyHarness({ runtime: 'pty', command: 'gemini' });
|
|
10
12
|
export const cursor = definePtyHarness({ runtime: 'pty', command: 'cursor-agent' });
|
|
11
13
|
export const droid = definePtyHarness({ runtime: 'pty', command: 'droid' });
|
|
12
|
-
export const opencode =
|
|
14
|
+
export const opencode = defineManagedHarness('opencode', { runtime: 'pty', command: 'opencode' });
|
|
13
15
|
export const aider = definePtyHarness({ runtime: 'pty', command: 'aider' });
|
|
14
16
|
export const goose = definePtyHarness({ runtime: 'pty', command: 'goose' });
|
|
15
17
|
export const grok = definePtyHarness({ runtime: 'pty', command: 'grok' });
|
|
18
|
+
export const pi = defineManagedHarness('pi');
|
|
19
|
+
export const deepAgents = defineManagedHarness('deepagents');
|
|
16
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAEtF,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,0EAA0E;AAC1E,gEAAgE;AAChE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;AAQ7G,MAAM,CAAC,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,MAAM,GAAe,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,MAAM,GAAe,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,KAAK,GAAe,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AAElG,MAAM,CAAC,MAAM,KAAK,GAAe,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,KAAK,GAAe,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,IAAI,GAAe,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type AgentEvent, type AgentObservabilityCapabilities, type AgentSessionEvent } from '@agent-relay/sdk';
|
|
2
|
+
export declare const AI_SDK_REFERENCE_OBSERVABILITY_PROFILE: AgentObservabilityCapabilities;
|
|
3
|
+
declare const PTY_HARNESSES: readonly ["claude", "codex", "gemini", "cursor-agent", "droid", "opencode", "aider", "goose", "grok"];
|
|
4
|
+
export type PtyHarnessName = (typeof PTY_HARNESSES)[number];
|
|
5
|
+
/**
|
|
6
|
+
* PTY observability is deliberately conservative. The broker owns exact
|
|
7
|
+
* process lifecycle signals and can infer a busy/idle turn boundary, but raw
|
|
8
|
+
* terminal bytes are not treated as structured assistant, reasoning, or tool
|
|
9
|
+
* events.
|
|
10
|
+
*/
|
|
11
|
+
export declare const PTY_OBSERVABILITY_PROFILE: AgentObservabilityCapabilities;
|
|
12
|
+
export declare const PTY_OBSERVABILITY_PROFILES: Record<PtyHarnessName, AgentObservabilityCapabilities>;
|
|
13
|
+
export declare function getPtyObservabilityProfile(harnessName: string): AgentObservabilityCapabilities;
|
|
14
|
+
export type PtyObservabilitySignal = {
|
|
15
|
+
type: 'starting';
|
|
16
|
+
at?: Date | string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'busy';
|
|
19
|
+
turnId: string;
|
|
20
|
+
at?: Date | string;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'idle';
|
|
23
|
+
turnId: string;
|
|
24
|
+
at?: Date | string;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'error';
|
|
27
|
+
error: string;
|
|
28
|
+
code?: string;
|
|
29
|
+
at?: Date | string;
|
|
30
|
+
};
|
|
31
|
+
export type PtyAgentEvent = AgentEvent | Extract<AgentSessionEvent, {
|
|
32
|
+
type: 'activity.changed';
|
|
33
|
+
}>;
|
|
34
|
+
export interface PtyObservabilityTranslator {
|
|
35
|
+
readonly capabilities: AgentObservabilityCapabilities;
|
|
36
|
+
translate(signal: PtyObservabilitySignal): PtyAgentEvent[];
|
|
37
|
+
}
|
|
38
|
+
/** Translate broker-owned PTY lifecycle evidence into the canonical contract. */
|
|
39
|
+
export declare function createPtyObservabilityTranslator(harnessName: string): PtyObservabilityTranslator;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,8BAA8B,EACnC,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,sCAAsC,EAAE,8BA0BjD,CAAC;AAEL,QAAA,MAAM,aAAa,uGAUT,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,8BAcvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAElC,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;AAgB5D,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,8BAA8B,CAM9F;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAAC;AAElG,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,EAAE,8BAA8B,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,aAAa,EAAE,CAAC;CAC5D;AAED,iFAAiF;AACjF,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B,CAmGhG"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { createAgentObservabilityCapabilities, EXACT_AND_INFERRED_OBSERVABILITY, EXACT_OBSERVABILITY, INFERRED_OBSERVABILITY, } from '@agent-relay/sdk';
|
|
2
|
+
export const AI_SDK_REFERENCE_OBSERVABILITY_PROFILE = createAgentObservabilityCapabilities({
|
|
3
|
+
activities: {
|
|
4
|
+
starting: EXACT_OBSERVABILITY,
|
|
5
|
+
thinking: EXACT_AND_INFERRED_OBSERVABILITY,
|
|
6
|
+
typing: EXACT_OBSERVABILITY,
|
|
7
|
+
using_tool: EXACT_OBSERVABILITY,
|
|
8
|
+
waiting: EXACT_OBSERVABILITY,
|
|
9
|
+
idle: EXACT_OBSERVABILITY,
|
|
10
|
+
error: EXACT_OBSERVABILITY,
|
|
11
|
+
},
|
|
12
|
+
events: {
|
|
13
|
+
lifecycle: EXACT_OBSERVABILITY,
|
|
14
|
+
turns: EXACT_OBSERVABILITY,
|
|
15
|
+
text: EXACT_OBSERVABILITY,
|
|
16
|
+
reasoning: EXACT_OBSERVABILITY,
|
|
17
|
+
tools: EXACT_OBSERVABILITY,
|
|
18
|
+
tool_approvals: EXACT_OBSERVABILITY,
|
|
19
|
+
files: EXACT_OBSERVABILITY,
|
|
20
|
+
compaction: EXACT_OBSERVABILITY,
|
|
21
|
+
model: EXACT_OBSERVABILITY,
|
|
22
|
+
warnings: EXACT_OBSERVABILITY,
|
|
23
|
+
usage: EXACT_OBSERVABILITY,
|
|
24
|
+
diagnostics: EXACT_OBSERVABILITY,
|
|
25
|
+
errors: EXACT_OBSERVABILITY,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
const PTY_HARNESSES = [
|
|
29
|
+
'claude',
|
|
30
|
+
'codex',
|
|
31
|
+
'gemini',
|
|
32
|
+
'cursor-agent',
|
|
33
|
+
'droid',
|
|
34
|
+
'opencode',
|
|
35
|
+
'aider',
|
|
36
|
+
'goose',
|
|
37
|
+
'grok',
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* PTY observability is deliberately conservative. The broker owns exact
|
|
41
|
+
* process lifecycle signals and can infer a busy/idle turn boundary, but raw
|
|
42
|
+
* terminal bytes are not treated as structured assistant, reasoning, or tool
|
|
43
|
+
* events.
|
|
44
|
+
*/
|
|
45
|
+
export const PTY_OBSERVABILITY_PROFILE = createAgentObservabilityCapabilities({
|
|
46
|
+
activities: {
|
|
47
|
+
starting: EXACT_OBSERVABILITY,
|
|
48
|
+
thinking: INFERRED_OBSERVABILITY,
|
|
49
|
+
idle: INFERRED_OBSERVABILITY,
|
|
50
|
+
error: EXACT_OBSERVABILITY,
|
|
51
|
+
},
|
|
52
|
+
events: {
|
|
53
|
+
lifecycle: EXACT_OBSERVABILITY,
|
|
54
|
+
turns: INFERRED_OBSERVABILITY,
|
|
55
|
+
errors: EXACT_OBSERVABILITY,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
export const PTY_OBSERVABILITY_PROFILES = Object.fromEntries(PTY_HARNESSES.map((name) => [name, PTY_OBSERVABILITY_PROFILE]));
|
|
59
|
+
const PTY_ALIASES = {
|
|
60
|
+
claude: 'claude',
|
|
61
|
+
'claude-code': 'claude',
|
|
62
|
+
codex: 'codex',
|
|
63
|
+
gemini: 'gemini',
|
|
64
|
+
cursor: 'cursor-agent',
|
|
65
|
+
'cursor-agent': 'cursor-agent',
|
|
66
|
+
droid: 'droid',
|
|
67
|
+
opencode: 'opencode',
|
|
68
|
+
aider: 'aider',
|
|
69
|
+
goose: 'goose',
|
|
70
|
+
grok: 'grok',
|
|
71
|
+
};
|
|
72
|
+
export function getPtyObservabilityProfile(harnessName) {
|
|
73
|
+
const canonicalName = PTY_ALIASES[harnessName.toLowerCase()];
|
|
74
|
+
if (!canonicalName) {
|
|
75
|
+
throw new Error(`No PTY observability profile is registered for ${harnessName}`);
|
|
76
|
+
}
|
|
77
|
+
return PTY_OBSERVABILITY_PROFILES[canonicalName];
|
|
78
|
+
}
|
|
79
|
+
/** Translate broker-owned PTY lifecycle evidence into the canonical contract. */
|
|
80
|
+
export function createPtyObservabilityTranslator(harnessName) {
|
|
81
|
+
const capabilities = getPtyObservabilityProfile(harnessName);
|
|
82
|
+
let sequence = 0;
|
|
83
|
+
let activity = 'idle';
|
|
84
|
+
let activeTurnId;
|
|
85
|
+
const observation = (fidelity, at, turnId) => ({
|
|
86
|
+
source: 'broker',
|
|
87
|
+
fidelity,
|
|
88
|
+
sequence: ++sequence,
|
|
89
|
+
timestamp: at,
|
|
90
|
+
...(turnId ? { turnId } : {}),
|
|
91
|
+
});
|
|
92
|
+
const transition = (next, reason, fidelity, at, turnId) => {
|
|
93
|
+
if (activity === next)
|
|
94
|
+
return undefined;
|
|
95
|
+
const previousActivity = activity;
|
|
96
|
+
activity = next;
|
|
97
|
+
return {
|
|
98
|
+
type: 'activity.changed',
|
|
99
|
+
activity: next,
|
|
100
|
+
previousActivity,
|
|
101
|
+
reason,
|
|
102
|
+
at,
|
|
103
|
+
observability: observation(fidelity, at, turnId),
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
capabilities,
|
|
108
|
+
translate(signal) {
|
|
109
|
+
const at = signal.at ?? new Date().toISOString();
|
|
110
|
+
switch (signal.type) {
|
|
111
|
+
case 'starting': {
|
|
112
|
+
const events = [
|
|
113
|
+
{
|
|
114
|
+
type: 'session.starting',
|
|
115
|
+
reason: 'broker_spawn',
|
|
116
|
+
at,
|
|
117
|
+
observability: observation('exact', at),
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
const changed = transition('starting', 'broker_spawn', 'exact', at);
|
|
121
|
+
if (changed)
|
|
122
|
+
events.push(changed);
|
|
123
|
+
return events;
|
|
124
|
+
}
|
|
125
|
+
case 'busy': {
|
|
126
|
+
if (activeTurnId === signal.turnId && activity === 'thinking')
|
|
127
|
+
return [];
|
|
128
|
+
activeTurnId = signal.turnId;
|
|
129
|
+
const events = [
|
|
130
|
+
{
|
|
131
|
+
type: 'turn.started',
|
|
132
|
+
turnId: signal.turnId,
|
|
133
|
+
at,
|
|
134
|
+
observability: observation('inferred', at, signal.turnId),
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
const changed = transition('thinking', 'broker_busy_boundary', 'inferred', at, signal.turnId);
|
|
138
|
+
if (changed)
|
|
139
|
+
events.push(changed);
|
|
140
|
+
return events;
|
|
141
|
+
}
|
|
142
|
+
case 'idle': {
|
|
143
|
+
if (activeTurnId !== signal.turnId)
|
|
144
|
+
return [];
|
|
145
|
+
activeTurnId = undefined;
|
|
146
|
+
const events = [
|
|
147
|
+
{
|
|
148
|
+
type: 'turn.settled',
|
|
149
|
+
turnId: signal.turnId,
|
|
150
|
+
at,
|
|
151
|
+
observability: observation('inferred', at, signal.turnId),
|
|
152
|
+
},
|
|
153
|
+
];
|
|
154
|
+
const changed = transition('idle', 'broker_idle_boundary', 'inferred', at, signal.turnId);
|
|
155
|
+
if (changed)
|
|
156
|
+
events.push(changed);
|
|
157
|
+
return events;
|
|
158
|
+
}
|
|
159
|
+
case 'error': {
|
|
160
|
+
const events = [
|
|
161
|
+
{
|
|
162
|
+
type: 'session.failed',
|
|
163
|
+
error: signal.error,
|
|
164
|
+
...(signal.code ? { code: signal.code } : {}),
|
|
165
|
+
at,
|
|
166
|
+
observability: observation('exact', at, activeTurnId),
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
const changed = transition('error', 'broker_runtime_failure', 'exact', at, activeTurnId);
|
|
170
|
+
if (changed)
|
|
171
|
+
events.push(changed);
|
|
172
|
+
return events;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=observability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/harnesses",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.0.1",
|
|
4
|
+
"engines": {
|
|
5
|
+
"node": ">=22.0.0"
|
|
6
|
+
},
|
|
4
7
|
"description": "Pre-built harness definitions for Agent Relay.",
|
|
5
8
|
"type": "module",
|
|
6
9
|
"main": "dist/index.js",
|
|
@@ -23,8 +26,14 @@
|
|
|
23
26
|
"test": "vitest run"
|
|
24
27
|
},
|
|
25
28
|
"dependencies": {
|
|
26
|
-
"@agent-relay/harness-driver": "
|
|
27
|
-
"@agent-relay/sdk": "
|
|
29
|
+
"@agent-relay/harness-driver": "11.0.1",
|
|
30
|
+
"@agent-relay/sdk": "11.0.1",
|
|
31
|
+
"@ai-sdk/harness": "1.0.34",
|
|
32
|
+
"@ai-sdk/harness-claude-code": "1.0.35",
|
|
33
|
+
"@ai-sdk/harness-codex": "1.0.40",
|
|
34
|
+
"@ai-sdk/harness-deepagents": "1.0.33",
|
|
35
|
+
"@ai-sdk/harness-opencode": "1.0.35",
|
|
36
|
+
"@ai-sdk/harness-pi": "1.0.34"
|
|
28
37
|
},
|
|
29
38
|
"publishConfig": {
|
|
30
39
|
"access": "public"
|