@agent-harness-experimental/adapter-pi 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.
Files changed (48) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +101 -2
  3. package/dist/adapter.d.ts +18 -0
  4. package/dist/adapter.d.ts.map +1 -0
  5. package/dist/adapter.js +143 -0
  6. package/dist/adapter.js.map +1 -0
  7. package/dist/index.d.ts +4 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +3 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/model-resolver.d.mts +31 -0
  12. package/dist/model-resolver.d.mts.map +1 -0
  13. package/dist/model-resolver.mjs +42 -0
  14. package/dist/model-resolver.mjs.map +1 -0
  15. package/dist/model-resolver.mts +76 -0
  16. package/dist/prepare-step-extension.d.ts +31 -0
  17. package/dist/prepare-step-extension.d.ts.map +1 -0
  18. package/dist/prepare-step-extension.js +48 -0
  19. package/dist/prepare-step-extension.js.map +1 -0
  20. package/dist/remote-ops.d.ts +40 -0
  21. package/dist/remote-ops.d.ts.map +1 -0
  22. package/dist/remote-ops.js +217 -0
  23. package/dist/remote-ops.js.map +1 -0
  24. package/dist/setup.d.ts +6 -0
  25. package/dist/setup.d.ts.map +1 -0
  26. package/dist/setup.js +56 -0
  27. package/dist/setup.js.map +1 -0
  28. package/dist/shared.d.ts +7 -0
  29. package/dist/shared.d.ts.map +1 -0
  30. package/dist/shared.js +41 -0
  31. package/dist/shared.js.map +1 -0
  32. package/dist/split-runtime-support.d.ts +92 -0
  33. package/dist/split-runtime-support.d.ts.map +1 -0
  34. package/dist/split-runtime-support.js +429 -0
  35. package/dist/split-runtime-support.js.map +1 -0
  36. package/dist/split-runtime.d.ts +63 -0
  37. package/dist/split-runtime.d.ts.map +1 -0
  38. package/dist/split-runtime.js +894 -0
  39. package/dist/split-runtime.js.map +1 -0
  40. package/dist/workspace-mirror.d.ts +8 -0
  41. package/dist/workspace-mirror.d.ts.map +1 -0
  42. package/dist/workspace-mirror.js +150 -0
  43. package/dist/workspace-mirror.js.map +1 -0
  44. package/dist/workspace-vfs.d.ts +8 -0
  45. package/dist/workspace-vfs.d.ts.map +1 -0
  46. package/dist/workspace-vfs.js +300 -0
  47. package/dist/workspace-vfs.js.map +1 -0
  48. package/package.json +59 -3
@@ -0,0 +1,429 @@
1
+ import { resolveCustomEnvAuthOptions, resolveSecretInput, selectConfiguredAuthBag } from 'agent-harness-experimental';
2
+ import { createServer } from 'node:http';
3
+ import path from 'node:path';
4
+ import { Readable } from 'node:stream';
5
+ import { z } from 'zod';
6
+ import { DEFAULT_PI_GATEWAY_MODEL } from './model-resolver.mjs';
7
+ import { renderPiAgentFile, renderPiSkillFile } from './shared.js';
8
+ export const splitPiAdapterStateSchema = z.object({
9
+ sessionFile: z.string().optional(),
10
+ localRoot: z.string().optional(),
11
+ });
12
+ export function parseSplitPiAdapterState(state) {
13
+ return state === undefined ? undefined : splitPiAdapterStateSchema.parse(state);
14
+ }
15
+ export const PI_SPLIT_BUILTIN_NAMES = ['read', 'write', 'edit', 'bash', 'grep', 'find', 'ls'];
16
+ export const REQUEST_HOST_ACCESS_TOOL_NAME = 'RequestHostAccess';
17
+ const DEFAULT_OPENAI_BASE_URL = 'https://api.openai.com/v1';
18
+ const DEFAULT_ANTHROPIC_BASE_URL = 'https://api.anthropic.com';
19
+ const DEFAULT_GATEWAY_BASE_URL = DEFAULT_PI_GATEWAY_MODEL.baseUrl ?? 'https://ai-gateway.vercel.sh';
20
+ export const PI_VFS_ROOT = path.join(path.sep, 'vfs', 'pi');
21
+ const PI_CODING_AGENT_MODULE_LOADER_KEY = Symbol.for('ai-sdk.agent.piCodingAgentModuleLoader');
22
+ let piCodingAgentPromise = null;
23
+ function defaultPiCodingAgentModuleLoader() {
24
+ return import('@mariozechner/pi-coding-agent');
25
+ }
26
+ function getPiCodingAgentModuleLoader() {
27
+ const globalState = globalThis;
28
+ const loader = globalState[PI_CODING_AGENT_MODULE_LOADER_KEY];
29
+ if (typeof loader === 'function') {
30
+ return loader;
31
+ }
32
+ return defaultPiCodingAgentModuleLoader;
33
+ }
34
+ export function __setPiCodingAgentModuleLoaderForTests(loader) {
35
+ piCodingAgentPromise = null;
36
+ const globalState = globalThis;
37
+ if (loader) {
38
+ globalState[PI_CODING_AGENT_MODULE_LOADER_KEY] = loader;
39
+ return;
40
+ }
41
+ delete globalState[PI_CODING_AGENT_MODULE_LOADER_KEY];
42
+ }
43
+ export function loadPiCodingAgent() {
44
+ piCodingAgentPromise ??= getPiCodingAgentModuleLoader()();
45
+ return piCodingAgentPromise;
46
+ }
47
+ export function getErrorText(error) {
48
+ return error instanceof Error ? error.message : String(error);
49
+ }
50
+ function toRequestHeaders(req) {
51
+ const headers = new Headers();
52
+ for (const [name, value] of Object.entries(req.headers)) {
53
+ if (Array.isArray(value)) {
54
+ for (const entry of value) {
55
+ headers.append(name, entry);
56
+ }
57
+ continue;
58
+ }
59
+ if (typeof value === 'string') {
60
+ headers.set(name, value);
61
+ }
62
+ }
63
+ return headers;
64
+ }
65
+ function toProxyRequest(req, targetBaseURL) {
66
+ const url = new URL(req.url ?? '/', targetBaseURL);
67
+ const method = req.method ?? 'GET';
68
+ const init = {
69
+ method,
70
+ headers: toRequestHeaders(req),
71
+ };
72
+ if (method !== 'GET' && method !== 'HEAD') {
73
+ init.body = Readable.toWeb(req);
74
+ init.duplex = 'half';
75
+ }
76
+ return new Request(url, init);
77
+ }
78
+ async function writeProxyResponse(nodeResponse, response) {
79
+ nodeResponse.statusCode = response.status;
80
+ nodeResponse.statusMessage = response.statusText;
81
+ response.headers.forEach((value, key) => {
82
+ nodeResponse.setHeader(key, value);
83
+ });
84
+ if (!response.body) {
85
+ nodeResponse.end();
86
+ return;
87
+ }
88
+ const reader = response.body.getReader();
89
+ let closed = false;
90
+ const handleClose = () => {
91
+ closed = true;
92
+ };
93
+ nodeResponse.once('close', handleClose);
94
+ try {
95
+ while (!closed) {
96
+ const { done, value } = await reader.read();
97
+ if (done || closed) {
98
+ break;
99
+ }
100
+ const canContinue = nodeResponse.write(Buffer.from(value));
101
+ if (!canContinue) {
102
+ await new Promise((resolve, reject) => {
103
+ const cleanup = () => {
104
+ nodeResponse.off('drain', onDrain);
105
+ nodeResponse.off('error', onError);
106
+ nodeResponse.off('close', onClose);
107
+ };
108
+ const onDrain = () => {
109
+ cleanup();
110
+ resolve();
111
+ };
112
+ const onError = (error) => {
113
+ cleanup();
114
+ reject(error);
115
+ };
116
+ const onClose = () => {
117
+ cleanup();
118
+ closed = true;
119
+ resolve();
120
+ };
121
+ nodeResponse.once('drain', onDrain);
122
+ nodeResponse.once('error', onError);
123
+ nodeResponse.once('close', onClose);
124
+ });
125
+ }
126
+ }
127
+ }
128
+ finally {
129
+ nodeResponse.off('close', handleClose);
130
+ if (!closed && !nodeResponse.writableEnded) {
131
+ nodeResponse.end();
132
+ }
133
+ }
134
+ }
135
+ async function createReplayProxy(handler, target) {
136
+ const server = createServer(async (req, res) => {
137
+ try {
138
+ const response = await handler(toProxyRequest(req, target.targetBaseURL));
139
+ await writeProxyResponse(res, response);
140
+ }
141
+ catch (error) {
142
+ res.statusCode = 500;
143
+ res.end(error instanceof Error ? error.message : String(error));
144
+ }
145
+ });
146
+ await new Promise((resolve, reject) => {
147
+ server.once('error', reject);
148
+ server.listen(0, '127.0.0.1', () => {
149
+ server.off('error', reject);
150
+ resolve();
151
+ });
152
+ });
153
+ const address = server.address();
154
+ if (!address || typeof address === 'string') {
155
+ throw new Error(`Pi replay proxy for ${target.provider} did not expose a numeric port`);
156
+ }
157
+ return {
158
+ provider: target.provider,
159
+ targetBaseURL: target.targetBaseURL,
160
+ baseURL: `http://127.0.0.1:${address.port}`,
161
+ async close() {
162
+ await new Promise((resolve, reject) => {
163
+ server.close((error) => {
164
+ if (error) {
165
+ reject(error);
166
+ return;
167
+ }
168
+ resolve();
169
+ });
170
+ });
171
+ },
172
+ };
173
+ }
174
+ export async function createReplayProxies(handler, targets) {
175
+ const proxies = [];
176
+ try {
177
+ for (const target of targets) {
178
+ proxies.push(await createReplayProxy(handler, target));
179
+ }
180
+ return proxies;
181
+ }
182
+ catch (error) {
183
+ await Promise.allSettled(proxies.map((proxy) => proxy.close()));
184
+ throw error;
185
+ }
186
+ }
187
+ export function getPiTerminalError(event) {
188
+ const isTerminalStopReason = (value) => value === 'error' || value === 'aborted';
189
+ if (typeof event.error === 'string' && event.error.trim()) {
190
+ return event.error.trim();
191
+ }
192
+ if (event.error && typeof event.error === 'object') {
193
+ const errorMessage = event.error.errorMessage?.trim();
194
+ if (errorMessage) {
195
+ return errorMessage;
196
+ }
197
+ const stopReason = event.error.stopReason?.trim();
198
+ if (isTerminalStopReason(stopReason)) {
199
+ return stopReason;
200
+ }
201
+ }
202
+ const messageError = event.message?.errorMessage?.trim();
203
+ if (messageError) {
204
+ return messageError;
205
+ }
206
+ const messageStopReason = event.message?.stopReason?.trim();
207
+ if (isTerminalStopReason(messageStopReason)) {
208
+ return messageStopReason;
209
+ }
210
+ if (event.isError && typeof event.content === 'string' && event.content.trim()) {
211
+ return event.content.trim();
212
+ }
213
+ return undefined;
214
+ }
215
+ export function serializeToolOutput(output) {
216
+ if (typeof output === 'string') {
217
+ return output;
218
+ }
219
+ const serialized = JSON.stringify(output);
220
+ return serialized ?? 'null';
221
+ }
222
+ export function extractAssistantText(message) {
223
+ if (!message || message.role !== 'assistant') {
224
+ return '';
225
+ }
226
+ if (typeof message.content === 'string') {
227
+ return message.content;
228
+ }
229
+ if (!Array.isArray(message.content)) {
230
+ return '';
231
+ }
232
+ return message.content
233
+ .flatMap((part) => {
234
+ if (!part || typeof part !== 'object') {
235
+ return [];
236
+ }
237
+ const contentPart = part;
238
+ return contentPart.type === 'text' && typeof contentPart.text === 'string' ? [contentPart.text] : [];
239
+ })
240
+ .join('');
241
+ }
242
+ function resolveGatewayState(options, env, baseURLOverride) {
243
+ const gatewayKey = resolveSecretInput(options?.auth?.gateway?.apiKey, env) ?? env.AI_GATEWAY_API_KEY;
244
+ const baseURL = baseURLOverride ?? options?.auth?.gateway?.baseURL ?? env.AI_GATEWAY_BASE_URL ?? DEFAULT_GATEWAY_BASE_URL;
245
+ return gatewayKey ? { apiKey: gatewayKey, baseURL } : undefined;
246
+ }
247
+ export function resolveReplayProxyTargets(options, env) {
248
+ const selectedAuth = selectConfiguredAuthBag(options?.auth, ['customEnv', 'gateway']);
249
+ if (selectedAuth === 'gateway') {
250
+ const gateway = resolveGatewayState(options, env);
251
+ return gateway ? [{ provider: 'vercel-ai-gateway', targetBaseURL: gateway.baseURL }] : [];
252
+ }
253
+ if (selectedAuth === 'customEnv') {
254
+ const customEnv = resolveCustomEnvAuthOptions(options?.auth?.customEnv, env);
255
+ const targets = [];
256
+ if (customEnv.AI_GATEWAY_API_KEY) {
257
+ targets.push({
258
+ provider: 'vercel-ai-gateway',
259
+ targetBaseURL: customEnv.AI_GATEWAY_BASE_URL ?? DEFAULT_GATEWAY_BASE_URL,
260
+ });
261
+ }
262
+ if (customEnv.OPENAI_API_KEY) {
263
+ targets.push({
264
+ provider: 'openai',
265
+ targetBaseURL: customEnv.OPENAI_BASE_URL ?? DEFAULT_OPENAI_BASE_URL,
266
+ });
267
+ }
268
+ if (customEnv.ANTHROPIC_API_KEY) {
269
+ targets.push({
270
+ provider: 'anthropic',
271
+ targetBaseURL: customEnv.ANTHROPIC_BASE_URL ?? DEFAULT_ANTHROPIC_BASE_URL,
272
+ });
273
+ }
274
+ for (const [name, apiKey] of Object.entries(customEnv)) {
275
+ if (!name.endsWith('_API_KEY') || !apiKey) {
276
+ continue;
277
+ }
278
+ const prefix = name.slice(0, -'_API_KEY'.length);
279
+ if (prefix === 'AI_GATEWAY' || prefix === 'OPENAI' || prefix === 'ANTHROPIC') {
280
+ continue;
281
+ }
282
+ const baseURL = customEnv[`${prefix}_BASE_URL`];
283
+ if (!baseURL) {
284
+ continue;
285
+ }
286
+ targets.push({
287
+ provider: prefix.toLowerCase().replace(/_/g, '-'),
288
+ targetBaseURL: baseURL,
289
+ });
290
+ }
291
+ return targets;
292
+ }
293
+ const gateway = resolveGatewayState(undefined, env);
294
+ return gateway ? [{ provider: 'vercel-ai-gateway', targetBaseURL: gateway.baseURL }] : [];
295
+ }
296
+ function registerProvider(authStorage, modelRegistry, provider, apiKey, config) {
297
+ authStorage.setRuntimeApiKey(provider, apiKey);
298
+ modelRegistry.registerProvider?.(provider, config);
299
+ }
300
+ export function configureAuth(options, authStorage, modelRegistry, env, baseURLOverrides = {}) {
301
+ const selectedAuth = selectConfiguredAuthBag(options?.auth, ['customEnv', 'gateway']);
302
+ if (selectedAuth === 'gateway') {
303
+ const gateway = resolveGatewayState(options, env, baseURLOverrides['vercel-ai-gateway']);
304
+ if (gateway?.apiKey) {
305
+ registerProvider(authStorage, modelRegistry, 'vercel-ai-gateway', gateway.apiKey, {
306
+ apiKey: gateway.apiKey,
307
+ baseUrl: gateway.baseURL,
308
+ authHeader: true,
309
+ });
310
+ return {
311
+ AI_GATEWAY_API_KEY: gateway.apiKey,
312
+ AI_GATEWAY_BASE_URL: gateway.baseURL,
313
+ };
314
+ }
315
+ return {};
316
+ }
317
+ if (selectedAuth === 'customEnv') {
318
+ const customEnv = resolveCustomEnvAuthOptions(options?.auth?.customEnv, env);
319
+ const gatewayApiKey = customEnv.AI_GATEWAY_API_KEY;
320
+ if (gatewayApiKey) {
321
+ const gatewayBaseURL = baseURLOverrides['vercel-ai-gateway'] ?? customEnv.AI_GATEWAY_BASE_URL ?? DEFAULT_GATEWAY_BASE_URL;
322
+ registerProvider(authStorage, modelRegistry, 'vercel-ai-gateway', gatewayApiKey, {
323
+ apiKey: gatewayApiKey,
324
+ baseUrl: gatewayBaseURL,
325
+ authHeader: true,
326
+ });
327
+ }
328
+ if (customEnv.OPENAI_API_KEY) {
329
+ const openAIBaseURL = baseURLOverrides.openai ?? customEnv.OPENAI_BASE_URL;
330
+ registerProvider(authStorage, modelRegistry, 'openai', customEnv.OPENAI_API_KEY, {
331
+ apiKey: customEnv.OPENAI_API_KEY,
332
+ ...(openAIBaseURL ? { baseUrl: openAIBaseURL } : {}),
333
+ authHeader: true,
334
+ });
335
+ }
336
+ if (customEnv.ANTHROPIC_API_KEY) {
337
+ const anthropicBaseURL = baseURLOverrides.anthropic ?? customEnv.ANTHROPIC_BASE_URL;
338
+ registerProvider(authStorage, modelRegistry, 'anthropic', customEnv.ANTHROPIC_API_KEY, {
339
+ apiKey: customEnv.ANTHROPIC_API_KEY,
340
+ ...(anthropicBaseURL ? { baseUrl: anthropicBaseURL } : {}),
341
+ ...(customEnv.ANTHROPIC_AUTH_TOKEN
342
+ ? {
343
+ headers: {
344
+ authorization: `Bearer ${customEnv.ANTHROPIC_AUTH_TOKEN}`,
345
+ },
346
+ }
347
+ : {}),
348
+ });
349
+ }
350
+ for (const [name, apiKey] of Object.entries(customEnv)) {
351
+ if (!name.endsWith('_API_KEY') || !apiKey) {
352
+ continue;
353
+ }
354
+ const prefix = name.slice(0, -'_API_KEY'.length);
355
+ if (prefix === 'AI_GATEWAY' || prefix === 'OPENAI' || prefix === 'ANTHROPIC') {
356
+ continue;
357
+ }
358
+ const provider = prefix.toLowerCase().replace(/_/g, '-');
359
+ const providerBaseURL = baseURLOverrides[provider] ?? customEnv[`${prefix}_BASE_URL`];
360
+ registerProvider(authStorage, modelRegistry, provider, apiKey, {
361
+ apiKey,
362
+ ...(providerBaseURL ? { baseUrl: providerBaseURL } : {}),
363
+ authHeader: true,
364
+ });
365
+ }
366
+ return gatewayApiKey
367
+ ? {
368
+ AI_GATEWAY_API_KEY: gatewayApiKey,
369
+ AI_GATEWAY_BASE_URL: baseURLOverrides['vercel-ai-gateway'] ?? customEnv.AI_GATEWAY_BASE_URL ?? DEFAULT_GATEWAY_BASE_URL,
370
+ }
371
+ : {};
372
+ }
373
+ const gateway = resolveGatewayState(undefined, env, baseURLOverrides['vercel-ai-gateway']);
374
+ if (gateway?.apiKey) {
375
+ registerProvider(authStorage, modelRegistry, 'vercel-ai-gateway', gateway.apiKey, {
376
+ apiKey: gateway.apiKey,
377
+ baseUrl: gateway.baseURL,
378
+ authHeader: true,
379
+ });
380
+ return {
381
+ AI_GATEWAY_API_KEY: gateway.apiKey,
382
+ AI_GATEWAY_BASE_URL: gateway.baseURL,
383
+ };
384
+ }
385
+ return {};
386
+ }
387
+ function safePiMetadataSegment(name, label) {
388
+ if (!/^[A-Za-z0-9._-]+$/.test(name) || name === '.' || name === '..') {
389
+ throw new Error(`Invalid Pi ${label} name: ${name}`);
390
+ }
391
+ return name;
392
+ }
393
+ function resolveRemoteWorkspacePath(workDir, relativePath) {
394
+ if (path.posix.isAbsolute(relativePath)) {
395
+ throw new Error(`Pi sandbox file path must be relative to the workspace: ${relativePath}`);
396
+ }
397
+ const normalizedWorkDir = path.posix.normalize(workDir);
398
+ const resolved = path.posix.normalize(path.posix.join(normalizedWorkDir, relativePath));
399
+ const relative = path.posix.relative(normalizedWorkDir, resolved);
400
+ if (relative.startsWith('..') || path.posix.isAbsolute(relative)) {
401
+ throw new Error(`Pi sandbox file path escapes the workspace: ${relativePath}`);
402
+ }
403
+ return resolved;
404
+ }
405
+ export function buildRemotePiMetadata(ctx, workDir) {
406
+ const files = [];
407
+ for (const skill of ctx.skills ?? []) {
408
+ const name = safePiMetadataSegment(skill.name, 'skill');
409
+ files.push({
410
+ path: resolveRemoteWorkspacePath(workDir, `.pi/skills/${name}/SKILL.md`),
411
+ content: renderPiSkillFile(skill),
412
+ });
413
+ }
414
+ for (const [name, definition] of Object.entries(ctx.agents ?? {})) {
415
+ const safeName = safePiMetadataSegment(name, 'agent');
416
+ files.push({
417
+ path: resolveRemoteWorkspacePath(workDir, `.pi/agents/${safeName}.md`),
418
+ content: renderPiAgentFile(name, definition),
419
+ });
420
+ }
421
+ for (const [relativePath, content] of Object.entries(ctx.files ?? {})) {
422
+ files.push({
423
+ path: resolveRemoteWorkspacePath(workDir, relativePath),
424
+ content,
425
+ });
426
+ }
427
+ return files;
428
+ }
429
+ //# sourceMappingURL=split-runtime-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-runtime-support.js","sourceRoot":"","sources":["../src/split-runtime-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { AdapterContext } from 'agent-harness-experimental';
2
+ import type { PiAdapterOptions } from './adapter.js';
3
+ import { type SplitPiAdapterState } from './split-runtime-support.js';
4
+ export { __setPiCodingAgentModuleLoaderForTests, configureAuth, resolveReplayProxyTargets } from './split-runtime-support.js';
5
+ export declare class SplitPiRuntime {
6
+ private readonly options;
7
+ private readonly splitSandboxImageName?;
8
+ private ctx;
9
+ private splitSandbox;
10
+ private workspaceVfs;
11
+ private session;
12
+ private resourceLoader;
13
+ private authStorage;
14
+ private modelRegistry;
15
+ private settingsManager;
16
+ private resolverEnv;
17
+ private localRoot;
18
+ private localWorkDir;
19
+ private localAgentDir;
20
+ private localSessionDir;
21
+ private logicalRoot;
22
+ private logicalWorkDir;
23
+ private logicalAgentDir;
24
+ private logicalSessionDir;
25
+ private sessionFile;
26
+ private importedState;
27
+ private unsubscribeSession;
28
+ private pendingToolResults;
29
+ private pendingToolDecisions;
30
+ private readonly observedToolNames;
31
+ private currentInstructions;
32
+ private turnTerminalError;
33
+ private resolveTurnTerminalError;
34
+ private resolvePromptPause;
35
+ private resolvePromptCompletion;
36
+ private promptStarted;
37
+ private streamedAssistantText;
38
+ private replayProxies;
39
+ private readonly prepareStepBridge;
40
+ constructor(options: PiAdapterOptions | undefined, splitSandboxImageName?: string | undefined);
41
+ importState(state: unknown): void;
42
+ exportState(): SplitPiAdapterState | undefined;
43
+ private resolveLocalPaths;
44
+ private ensureLocalMirror;
45
+ private mountWorkspaceVfs;
46
+ private syncLocalWorkspace;
47
+ private waitForToolDecision;
48
+ private waitForToolResult;
49
+ private buildToolDefinitions;
50
+ start(ctx: AdapterContext): Promise<void>;
51
+ prompt(message: string, ctx: AdapterContext): Promise<void>;
52
+ private settlePending;
53
+ private closeReplayProxies;
54
+ private attachContext;
55
+ private buildCurrentPrepareStepConfig;
56
+ private buildVisibleToolOutputForAgent;
57
+ private bindSession;
58
+ private rebuildSession;
59
+ private initializeHostSession;
60
+ stop(): Promise<void>;
61
+ detach(): Promise<void>;
62
+ }
63
+ //# sourceMappingURL=split-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-runtime.d.ts","sourceRoot":"","sources":["../src/split-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,4BAA4B,CAAC;AAgB1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKrD,OAAO,EA0BL,KAAK,mBAAmB,EAEzB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,sCAAsC,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AA4B9H,qBAAa,cAAc;IAmCvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAnCzC,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,kBAAkB,CAAgD;IAC1E,OAAO,CAAC,oBAAoB,CAAuD;IACnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,wBAAwB,CAA0C;IAC1E,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;gBAG5C,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,qBAAqB,CAAC,EAAE,MAAM,YAAA;IAGjD,WAAW,CAAC,KAAK,EAAE,OAAO;IAI1B,WAAW,IAAI,mBAAmB,GAAG,SAAS;IAW9C,OAAO,CAAC,iBAAiB;YAiBX,iBAAiB;IAgB/B,OAAO,CAAC,iBAAiB;YAQX,kBAAkB;YAYlB,mBAAmB;YASnB,iBAAiB;YASjB,oBAAoB;IA+b5B,KAAK,CAAC,GAAG,EAAE,cAAc;IAoDzB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc;IAkHjD,OAAO,CAAC,aAAa;YAYP,kBAAkB;IAUhC,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,8BAA8B;IAsBtC,OAAO,CAAC,WAAW;YA0EL,cAAc;YAiDd,qBAAqB;IA+B7B,IAAI;IAoBJ,MAAM;CAmBb"}