@agent-harness-experimental/adapter-openai-agents 0.0.0 → 0.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.
@@ -0,0 +1,10 @@
1
+ import type { AdapterContext } from 'agent-harness-experimental';
2
+ type HttpHandler = NonNullable<NonNullable<AdapterContext['sandboxConfig']>['httpHandler']>;
3
+ export type OpenAIAgentsReplayProxy = {
4
+ targetBaseURL: string;
5
+ baseURL: string;
6
+ close(): Promise<void>;
7
+ };
8
+ export declare function createOpenAIAgentsReplayProxy(handler: HttpHandler, targetBaseURL: string): Promise<OpenAIAgentsReplayProxy>;
9
+ export {};
10
+ //# sourceMappingURL=replay-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-proxy.d.ts","sourceRoot":"","sources":["../src/replay-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,KAAK,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAE5F,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAsHF,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAyCjI"}
@@ -0,0 +1,140 @@
1
+ import { createServer } from 'node:http';
2
+ import { Readable } from 'node:stream';
3
+ function toRequestHeaders(req) {
4
+ const headers = new Headers();
5
+ for (const [name, value] of Object.entries(req.headers)) {
6
+ if (Array.isArray(value)) {
7
+ for (const entry of value) {
8
+ headers.append(name, entry);
9
+ }
10
+ continue;
11
+ }
12
+ if (typeof value === 'string') {
13
+ headers.set(name, value);
14
+ }
15
+ }
16
+ return headers;
17
+ }
18
+ function mergeTargetUrl(req, targetBaseURL) {
19
+ const incoming = new URL(req.url ?? '/', 'http://127.0.0.1');
20
+ const target = new URL(targetBaseURL);
21
+ const targetBasePath = target.pathname.replace(/\/$/u, '');
22
+ const incomingPath = incoming.pathname.startsWith('/') ? incoming.pathname : `/${incoming.pathname}`;
23
+ target.pathname =
24
+ targetBasePath && targetBasePath !== '/' && !incomingPath.startsWith(`${targetBasePath}/`) ? `${targetBasePath}${incomingPath}` : incomingPath;
25
+ for (const [key, value] of incoming.searchParams) {
26
+ target.searchParams.set(key, value);
27
+ }
28
+ return target;
29
+ }
30
+ function toProxyRequest(req, targetBaseURL) {
31
+ const url = mergeTargetUrl(req, targetBaseURL);
32
+ const method = req.method ?? 'GET';
33
+ const init = {
34
+ method,
35
+ headers: toRequestHeaders(req),
36
+ };
37
+ if (method !== 'GET' && method !== 'HEAD') {
38
+ init.body = Readable.toWeb(req);
39
+ init.duplex = 'half';
40
+ }
41
+ return new Request(url, init);
42
+ }
43
+ async function writeProxyResponse(nodeResponse, response) {
44
+ nodeResponse.statusCode = response.status;
45
+ nodeResponse.statusMessage = response.statusText;
46
+ response.headers.forEach((value, key) => {
47
+ nodeResponse.setHeader(key, value);
48
+ });
49
+ if (!response.body) {
50
+ nodeResponse.end();
51
+ return;
52
+ }
53
+ const reader = response.body.getReader();
54
+ let closed = false;
55
+ const handleClose = () => {
56
+ closed = true;
57
+ };
58
+ nodeResponse.once('close', handleClose);
59
+ try {
60
+ while (!closed) {
61
+ const { done, value } = await reader.read();
62
+ if (done || closed) {
63
+ break;
64
+ }
65
+ const canContinue = nodeResponse.write(Buffer.from(value));
66
+ if (!canContinue) {
67
+ await new Promise((resolve, reject) => {
68
+ const cleanup = () => {
69
+ nodeResponse.off('drain', onDrain);
70
+ nodeResponse.off('error', onError);
71
+ nodeResponse.off('close', onClose);
72
+ };
73
+ const onDrain = () => {
74
+ cleanup();
75
+ resolve();
76
+ };
77
+ const onError = (error) => {
78
+ cleanup();
79
+ reject(error);
80
+ };
81
+ const onClose = () => {
82
+ cleanup();
83
+ closed = true;
84
+ resolve();
85
+ };
86
+ nodeResponse.once('drain', onDrain);
87
+ nodeResponse.once('error', onError);
88
+ nodeResponse.once('close', onClose);
89
+ });
90
+ }
91
+ }
92
+ }
93
+ finally {
94
+ nodeResponse.off('close', handleClose);
95
+ if (!closed && !nodeResponse.writableEnded) {
96
+ nodeResponse.end();
97
+ }
98
+ }
99
+ }
100
+ export async function createOpenAIAgentsReplayProxy(handler, targetBaseURL) {
101
+ const server = createServer(async (req, res) => {
102
+ try {
103
+ const response = await handler(toProxyRequest(req, targetBaseURL));
104
+ await writeProxyResponse(res, response);
105
+ }
106
+ catch (error) {
107
+ if (!res.writableEnded && !res.destroyed) {
108
+ res.statusCode = 500;
109
+ res.end(error instanceof Error ? error.message : String(error));
110
+ }
111
+ }
112
+ });
113
+ await new Promise((resolve, reject) => {
114
+ server.once('error', reject);
115
+ server.listen(0, '127.0.0.1', () => {
116
+ server.off('error', reject);
117
+ resolve();
118
+ });
119
+ });
120
+ const address = server.address();
121
+ if (!address || typeof address === 'string') {
122
+ throw new Error('OpenAI Agents replay proxy did not expose a numeric port');
123
+ }
124
+ return {
125
+ targetBaseURL,
126
+ baseURL: `http://127.0.0.1:${address.port}`,
127
+ async close() {
128
+ await new Promise((resolve, reject) => {
129
+ server.close((error) => {
130
+ if (error) {
131
+ reject(error);
132
+ return;
133
+ }
134
+ resolve();
135
+ });
136
+ });
137
+ },
138
+ };
139
+ }
140
+ //# sourceMappingURL=replay-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-proxy.js","sourceRoot":"","sources":["../src/replay-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AdapterSandboxSetup, AdapterSupportMatrixRow } from 'agent-harness-experimental';
2
+ export declare const OPENAI_AGENTS_SANDBOX_SETUP: AdapterSandboxSetup;
3
+ export declare const OPENAI_AGENTS_SUPPORT_MATRIX_ROW: AdapterSupportMatrixRow;
4
+ export declare function getOpenAIAgentsSandboxSetup(): AdapterSandboxSetup;
5
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA6B,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1H,eAAO,MAAM,2BAA2B,EAAE,mBAQzC,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,uBA8B9C,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,mBAAmB,CAEjE"}
package/dist/setup.js ADDED
@@ -0,0 +1,44 @@
1
+ export const OPENAI_AGENTS_SANDBOX_SETUP = {
2
+ deps: [],
3
+ getBridgeFiles() {
4
+ return [];
5
+ },
6
+ getSandboxFiles(_ctx) {
7
+ return [];
8
+ },
9
+ };
10
+ export const OPENAI_AGENTS_SUPPORT_MATRIX_ROW = {
11
+ key: 'openai-agents',
12
+ readmeName: 'OpenAI Agents',
13
+ skills: 'SDK `skills()` eager/lazy descriptors',
14
+ subagents: 'Host-side `delegate_task` tool with shared split sandbox session',
15
+ prepareStep: '`step`',
16
+ mcp: 'AI SDK tools via `@ai-sdk/mcp`',
17
+ capabilities: {
18
+ customTools: { status: 'supported' },
19
+ toolFiltering: { status: 'supported' },
20
+ postToolUseHooks: { status: 'supported' },
21
+ toolInterception: { status: 'supported' },
22
+ usage: { status: 'unsupported' },
23
+ cost: { status: 'unsupported' },
24
+ httpMocking: { status: 'supported' },
25
+ prepareStep: { status: 'supported', normalized: true, note: 'Normalized at step boundaries.' },
26
+ subagents: { status: 'supported', normalized: true, note: 'Host-side subagents emit normalized start/finish events.' },
27
+ toolApprovals: { status: 'supported', normalized: true },
28
+ streamingApprovals: { status: 'unsupported', note: 'Approval continuation is not normalized for stream mode yet.' },
29
+ sameAgentResume: { status: 'supported' },
30
+ conversationResume: {
31
+ status: 'partial',
32
+ note: 'Same-agent resume preserves conversation context; core-history import/export is not a separate contract yet.',
33
+ },
34
+ hostNetworkApproval: { status: 'supported', normalized: true },
35
+ persistence: { status: 'supported' },
36
+ streaming: { status: 'supported' },
37
+ tokenStreaming: { status: 'supported' },
38
+ interactiveTerminal: { status: 'unsupported', note: 'The SDK command tool is one-shot; PTY/write-stdin sessions are not exposed.' },
39
+ },
40
+ };
41
+ export function getOpenAIAgentsSandboxSetup() {
42
+ return OPENAI_AGENTS_SANDBOX_SETUP;
43
+ }
44
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAwB;IAC9D,IAAI,EAAE,EAAE;IACR,cAAc;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,eAAe,CAAC,IAA+B;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAA4B;IACvE,GAAG,EAAE,eAAe;IACpB,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,uCAAuC;IAC/C,SAAS,EAAE,kEAAkE;IAC7E,WAAW,EAAE,QAAQ;IACrB,GAAG,EAAE,gCAAgC;IACrC,YAAY,EAAE;QACZ,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACpC,aAAa,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACtC,gBAAgB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACzC,gBAAgB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACzC,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;QAChC,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;QAC/B,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACpC,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE;QAC9F,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,0DAA0D,EAAE;QACtH,aAAa,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE;QACxD,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,8DAA8D,EAAE;QACnH,eAAe,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACxC,kBAAkB,EAAE;YAClB,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,8GAA8G;SACrH;QACD,mBAAmB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE;QAC9D,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACpC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QAClC,cAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QACvC,mBAAmB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,6EAA6E,EAAE;KACpI;CACF,CAAC;AAEF,MAAM,UAAU,2BAA2B;IACzC,OAAO,2BAA2B,CAAC;AACrC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { AgentInputItem } from '@openai/agents';
2
+ import { z } from 'zod';
3
+ export type OpenAIAgentsAdapterState = {
4
+ history?: AgentInputItem[];
5
+ };
6
+ export declare const openAIAgentsAdapterStateSchema: z.ZodType<OpenAIAgentsAdapterState>;
7
+ export declare function parseOpenAIAgentsAdapterState(state: unknown): OpenAIAgentsAdapterState;
8
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAErC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAE1C,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAEtF"}
package/dist/state.js ADDED
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export const openAIAgentsAdapterStateSchema = z.object({
3
+ history: z.array(z.unknown()).optional(),
4
+ });
5
+ export function parseOpenAIAgentsAdapterState(state) {
6
+ return openAIAgentsAdapterStateSchema.catch({}).parse(state);
7
+ }
8
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAwC,CAAC;AAE1C,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,OAAO,8BAA8B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { AdapterContext, ToolSchema } from 'agent-harness-experimental';
2
+ import { type FunctionTool, type Tool } from '@openai/agents';
3
+ export declare class OpenAIAgentsToolBridge {
4
+ private ctx;
5
+ private readonly pendingToolResults;
6
+ private readonly pendingToolDecisions;
7
+ private readonly hostContinuationWaiters;
8
+ private continuationPending;
9
+ constructor(ctx: AdapterContext);
10
+ attachContext(ctx: AdapterContext): void;
11
+ settlePending(reason: string): void;
12
+ requestBuiltinApproval(toolName: string, input: unknown, toolCallId?: string): Promise<{
13
+ approved: boolean;
14
+ reason?: string;
15
+ }>;
16
+ waitForHostContinuation(): Promise<void>;
17
+ clearHostContinuationWaiters(): void;
18
+ notifyHostContinuation(): void;
19
+ wrapBuiltinTools(tools: Tool[]): Tool[];
20
+ createUserTools(toolSchemas: ToolSchema[]): FunctionTool[];
21
+ private wrapBuiltinFunctionTool;
22
+ private createApplyPatchFunctionTool;
23
+ private wrapEmitForHostContinuation;
24
+ private notifyContinuationWaiters;
25
+ }
26
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAA8E,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAgB1I,qBAAa,sBAAsB;IAMrB,OAAO,CAAC,GAAG;IALvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAC3E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0C;IAC/E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAyB;IACjE,OAAO,CAAC,mBAAmB,CAAS;gBAEhB,GAAG,EAAE,cAAc;IAIvC,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAaxC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAa7B,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBpI,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxC,4BAA4B,IAAI,IAAI;IAKpC,sBAAsB,IAAI,IAAI;IAI9B,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;IASvC,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE;IAmC1D,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,4BAA4B;IAqCpC,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,yBAAyB;CAWlC"}
package/dist/tools.js ADDED
@@ -0,0 +1,296 @@
1
+ import { tool } from '@openai/agents';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { parseJsonOrString } from './parse-json.js';
4
+ import { msg as protocolMessage } from '@agent-harness-experimental/protocol';
5
+ const EMIT_WRAPPER = Symbol.for('@agent-harness-experimental/adapter-openai-agents.emit-wrapper');
6
+ export class OpenAIAgentsToolBridge {
7
+ ctx;
8
+ pendingToolResults = new Map();
9
+ pendingToolDecisions = new Map();
10
+ hostContinuationWaiters = new Set();
11
+ continuationPending = false;
12
+ constructor(ctx) {
13
+ this.ctx = ctx;
14
+ this.attachContext(ctx);
15
+ }
16
+ attachContext(ctx) {
17
+ this.ctx = ctx;
18
+ this.wrapEmitForHostContinuation(ctx);
19
+ ctx.sendToolResult = (requestId, output) => {
20
+ this.pendingToolResults.get(requestId)?.(output);
21
+ this.pendingToolResults.delete(requestId);
22
+ };
23
+ ctx.sendToolDecision = (requestId, approved, reason) => {
24
+ this.pendingToolDecisions.get(requestId)?.({ approved, reason });
25
+ this.pendingToolDecisions.delete(requestId);
26
+ };
27
+ }
28
+ settlePending(reason) {
29
+ for (const resolve of this.pendingToolResults.values()) {
30
+ resolve({ error: reason });
31
+ }
32
+ this.pendingToolResults.clear();
33
+ for (const resolve of this.pendingToolDecisions.values()) {
34
+ resolve({ approved: false, reason });
35
+ }
36
+ this.pendingToolDecisions.clear();
37
+ this.notifyContinuationWaiters();
38
+ }
39
+ async requestBuiltinApproval(toolName, input, toolCallId) {
40
+ const requestId = randomUUID();
41
+ const resolvedToolCallId = toolCallId ?? `${toolName}_${requestId}`;
42
+ let settled = false;
43
+ const decision = new Promise((resolve) => {
44
+ this.pendingToolDecisions.set(requestId, (value) => {
45
+ settled = true;
46
+ resolve(value);
47
+ });
48
+ });
49
+ this.ctx.emit(protocolMessage.toolCall({ requestId, toolName, toolCallId: resolvedToolCallId, input }));
50
+ setTimeout(() => {
51
+ if (!settled && this.pendingToolDecisions.has(requestId)) {
52
+ this.notifyContinuationWaiters();
53
+ }
54
+ }, 0);
55
+ return await decision;
56
+ }
57
+ waitForHostContinuation() {
58
+ if (this.continuationPending) {
59
+ this.continuationPending = false;
60
+ return Promise.resolve();
61
+ }
62
+ return new Promise((resolve) => {
63
+ this.hostContinuationWaiters.add(resolve);
64
+ });
65
+ }
66
+ clearHostContinuationWaiters() {
67
+ this.hostContinuationWaiters.clear();
68
+ this.continuationPending = false;
69
+ }
70
+ notifyHostContinuation() {
71
+ this.notifyContinuationWaiters();
72
+ }
73
+ wrapBuiltinTools(tools) {
74
+ return tools.map((candidate) => {
75
+ if (candidate.type === 'apply_patch') {
76
+ return this.createApplyPatchFunctionTool(candidate);
77
+ }
78
+ return candidate.type === 'function' && candidate.name !== 'apply_patch' ? this.wrapBuiltinFunctionTool(candidate) : candidate;
79
+ });
80
+ }
81
+ createUserTools(toolSchemas) {
82
+ return toolSchemas.map((schema) => tool({
83
+ name: schema.name,
84
+ description: schema.description ?? `Run ${schema.name}.`,
85
+ parameters: schema.inputSchema,
86
+ strict: false,
87
+ execute: async (input, _runContext, details) => {
88
+ const requestId = randomUUID();
89
+ const toolCallId = details?.toolCall?.callId ?? `${schema.name}_${requestId}`;
90
+ const result = new Promise((resolve) => {
91
+ this.pendingToolResults.set(requestId, resolve);
92
+ });
93
+ this.ctx.emit(protocolMessage.toolCall({ requestId, toolName: schema.name, toolCallId, input }));
94
+ setTimeout(() => {
95
+ if (this.pendingToolResults.has(requestId)) {
96
+ this.notifyContinuationWaiters();
97
+ }
98
+ }, 0);
99
+ const output = await result;
100
+ this.ctx.emit(protocolMessage.toolResult({ toolName: schema.name, toolCallId, output }));
101
+ return output;
102
+ },
103
+ }));
104
+ }
105
+ wrapBuiltinFunctionTool(toolToWrap) {
106
+ const originalInvoke = toolToWrap.invoke.bind(toolToWrap);
107
+ return {
108
+ ...toolToWrap,
109
+ invoke: async (runContext, rawInput, details) => {
110
+ const input = parseToolInput(rawInput);
111
+ const toolCallId = details?.toolCall?.callId ?? `${toolToWrap.name}_${randomUUID()}`;
112
+ const decision = await this.requestBuiltinApproval(toolToWrap.name, input, toolCallId);
113
+ if (!decision.approved) {
114
+ const output = {
115
+ type: 'execution-denied',
116
+ reason: decision.reason ?? `Tool "${toolToWrap.name}" was denied.`,
117
+ };
118
+ this.ctx.emit(protocolMessage.toolResult({ toolName: toolToWrap.name, toolCallId, output }));
119
+ return JSON.stringify(output);
120
+ }
121
+ const output = coerceBuiltinOutputForModel(toolToWrap.name, await originalInvoke(runContext, rawInput, details));
122
+ this.ctx.emit(protocolMessage.toolResult({ toolName: toolToWrap.name, toolCallId, output }));
123
+ return output;
124
+ },
125
+ };
126
+ }
127
+ createApplyPatchFunctionTool(applyPatch) {
128
+ return tool({
129
+ name: applyPatch.name,
130
+ description: 'Applies a create, update, move, or delete file patch in the sandbox workspace. Accepts a freeform patch string or structured apply_patch operations.',
131
+ parameters: {
132
+ type: 'object',
133
+ properties: {
134
+ patch: { type: 'string' },
135
+ operation: { type: 'object' },
136
+ operations: { type: 'array', items: { type: 'object' } },
137
+ command: { type: 'array', items: { type: 'string' } },
138
+ type: { type: 'string', enum: ['create_file', 'update_file', 'delete_file'] },
139
+ path: { type: 'string' },
140
+ diff: { type: 'string' },
141
+ moveTo: { type: 'string' },
142
+ },
143
+ },
144
+ strict: false,
145
+ execute: async (input, runContext) => {
146
+ const parsed = parseApplyPatchInput(input);
147
+ if (!parsed.ok) {
148
+ return parsed.error;
149
+ }
150
+ const outputs = [];
151
+ for (const operation of parsed.operations) {
152
+ const result = await applyPatchOperation(applyPatch, operation, runContext);
153
+ if (result) {
154
+ outputs.push(result);
155
+ }
156
+ }
157
+ return outputs.join('\n') || 'Patch applied.';
158
+ },
159
+ });
160
+ }
161
+ wrapEmitForHostContinuation(ctx) {
162
+ const wrappedCtx = ctx;
163
+ if (wrappedCtx[EMIT_WRAPPER]?.bridge === this) {
164
+ return;
165
+ }
166
+ const originalEmit = wrappedCtx[EMIT_WRAPPER]?.originalEmit ?? ctx.emit.bind(ctx);
167
+ ctx.emit = (message) => {
168
+ originalEmit(message);
169
+ if (message.type === 'host-approval-request') {
170
+ this.notifyContinuationWaiters();
171
+ }
172
+ };
173
+ wrappedCtx[EMIT_WRAPPER] = {
174
+ bridge: this,
175
+ originalEmit,
176
+ };
177
+ }
178
+ notifyContinuationWaiters() {
179
+ if (this.hostContinuationWaiters.size === 0) {
180
+ this.continuationPending = true;
181
+ return;
182
+ }
183
+ for (const resolve of this.hostContinuationWaiters) {
184
+ resolve();
185
+ }
186
+ this.hostContinuationWaiters.clear();
187
+ this.continuationPending = false;
188
+ }
189
+ }
190
+ function coerceBuiltinOutputForModel(toolName, output) {
191
+ if (toolName !== 'view_image' || !output || typeof output !== 'object') {
192
+ return output;
193
+ }
194
+ const image = output.image;
195
+ return typeof image === 'string' ? image : output;
196
+ }
197
+ function parseToolInput(rawInput) {
198
+ return parseJsonOrString(rawInput);
199
+ }
200
+ function parseApplyPatchInput(input) {
201
+ const value = typeof input === 'string' ? parseJsonOrString(input) : input;
202
+ if (typeof value === 'string') {
203
+ return parseFreeformPatch(value);
204
+ }
205
+ if (!value || typeof value !== 'object') {
206
+ return { ok: false, error: 'Invalid apply_patch input.' };
207
+ }
208
+ const record = value;
209
+ if (typeof record.patch === 'string') {
210
+ return parseFreeformPatch(record.patch);
211
+ }
212
+ if (Array.isArray(record.command)) {
213
+ const patch = record.command.find((entry) => typeof entry === 'string' && entry.includes('*** Begin Patch'));
214
+ if (patch) {
215
+ return parseFreeformPatch(patch);
216
+ }
217
+ }
218
+ if (Array.isArray(record.operations)) {
219
+ const operations = record.operations.filter(isApplyPatchOperation);
220
+ return operations.length === record.operations.length && operations.length > 0
221
+ ? { ok: true, operations }
222
+ : { ok: false, error: 'Invalid apply_patch operations.' };
223
+ }
224
+ if (isApplyPatchOperation(record.operation)) {
225
+ return { ok: true, operations: [record.operation] };
226
+ }
227
+ if (isApplyPatchOperation(record)) {
228
+ return { ok: true, operations: [record] };
229
+ }
230
+ return { ok: false, error: 'Invalid apply_patch operation.' };
231
+ }
232
+ function isApplyPatchOperation(value) {
233
+ if (!value || typeof value !== 'object') {
234
+ return false;
235
+ }
236
+ const record = value;
237
+ if (record.type === 'delete_file') {
238
+ return typeof record.path === 'string';
239
+ }
240
+ if (record.type === 'create_file' || record.type === 'update_file') {
241
+ return typeof record.path === 'string' && typeof record.diff === 'string';
242
+ }
243
+ return false;
244
+ }
245
+ function parseFreeformPatch(patch) {
246
+ const lines = patch.split(/\r?\n/u);
247
+ const operations = [];
248
+ let index = 0;
249
+ while (index < lines.length) {
250
+ const line = lines[index] ?? '';
251
+ if (line.startsWith('*** Add File: ')) {
252
+ const filePath = line.slice('*** Add File: '.length).trim();
253
+ const diffLines = [];
254
+ index += 1;
255
+ while (index < lines.length && !(lines[index] ?? '').startsWith('*** ')) {
256
+ diffLines.push(lines[index] ?? '');
257
+ index += 1;
258
+ }
259
+ operations.push({ type: 'create_file', path: filePath, diff: `${diffLines.join('\n')}\n` });
260
+ continue;
261
+ }
262
+ if (line.startsWith('*** Update File: ')) {
263
+ const filePath = line.slice('*** Update File: '.length).trim();
264
+ const diffLines = [];
265
+ index += 1;
266
+ while (index < lines.length && !(lines[index] ?? '').startsWith('*** ')) {
267
+ diffLines.push(lines[index] ?? '');
268
+ index += 1;
269
+ }
270
+ operations.push({ type: 'update_file', path: filePath, diff: `${diffLines.join('\n')}\n` });
271
+ continue;
272
+ }
273
+ if (line.startsWith('*** Delete File: ')) {
274
+ operations.push({ type: 'delete_file', path: line.slice('*** Delete File: '.length).trim() });
275
+ }
276
+ index += 1;
277
+ }
278
+ return operations.length > 0 ? { ok: true, operations } : { ok: false, error: 'Invalid apply_patch patch.' };
279
+ }
280
+ async function applyPatchOperation(applyPatch, operation, runContext) {
281
+ let result;
282
+ if (operation.type === 'create_file') {
283
+ result = (await applyPatch.editor.createFile(operation, { runContext: runContext })) ?? undefined;
284
+ }
285
+ else if (operation.type === 'update_file') {
286
+ result = (await applyPatch.editor.updateFile(operation, { runContext: runContext })) ?? undefined;
287
+ }
288
+ else {
289
+ result = (await applyPatch.editor.deleteFile(operation, { runContext: runContext })) ?? undefined;
290
+ }
291
+ if (result?.status === 'failed') {
292
+ return result.output ? `Patch failed: ${result.output}` : 'Patch failed.';
293
+ }
294
+ return result?.output ?? 'Patch applied.';
295
+ }
296
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}