agenticreplay 0.1.4 → 0.1.6
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 +3 -3
- package/node_modules/@agenticreplay/adapters/dist/claude-code.d.ts.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/claude-code.js +0 -8
- package/node_modules/@agenticreplay/adapters/dist/claude-code.js.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/codex.d.ts.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/codex.js +0 -18
- package/node_modules/@agenticreplay/adapters/dist/codex.js.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/contract.d.ts +1 -1
- package/node_modules/@agenticreplay/adapters/dist/contract.d.ts.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/contract.js +0 -46
- package/node_modules/@agenticreplay/adapters/dist/contract.js.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/indexrag.d.ts.map +1 -1
- package/node_modules/@agenticreplay/adapters/dist/indexrag.js +0 -6
- package/node_modules/@agenticreplay/adapters/dist/indexrag.js.map +1 -1
- package/node_modules/@agenticreplay/adapters/package.json +6 -6
- package/node_modules/@agenticreplay/core/dist/graph.d.ts +0 -24
- package/node_modules/@agenticreplay/core/dist/graph.d.ts.map +1 -1
- package/node_modules/@agenticreplay/core/dist/graph.js +0 -68
- package/node_modules/@agenticreplay/core/dist/graph.js.map +1 -1
- package/node_modules/@agenticreplay/core/dist/paths.d.ts +1 -12
- package/node_modules/@agenticreplay/core/dist/paths.d.ts.map +1 -1
- package/node_modules/@agenticreplay/core/dist/paths.js +1 -22
- package/node_modules/@agenticreplay/core/dist/paths.js.map +1 -1
- package/node_modules/@agenticreplay/core/dist/writer.d.ts +0 -9
- package/node_modules/@agenticreplay/core/dist/writer.d.ts.map +1 -1
- package/node_modules/@agenticreplay/core/dist/writer.js +0 -5
- package/node_modules/@agenticreplay/core/dist/writer.js.map +1 -1
- package/node_modules/@agenticreplay/core/package.json +3 -3
- package/node_modules/@agenticreplay/fs-capture/dist/capture.d.ts +4 -15
- package/node_modules/@agenticreplay/fs-capture/dist/capture.d.ts.map +1 -1
- package/node_modules/@agenticreplay/fs-capture/dist/capture.js +22 -33
- package/node_modules/@agenticreplay/fs-capture/dist/capture.js.map +1 -1
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.d.ts +0 -39
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.d.ts.map +1 -1
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.js +0 -63
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.js.map +1 -1
- package/node_modules/@agenticreplay/fs-capture/package.json +2 -2
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.d.ts +0 -2
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.d.ts.map +1 -1
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.js +2 -92
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.js.map +1 -1
- package/node_modules/@agenticreplay/mcp-shim/dist/index.d.ts +0 -1
- package/node_modules/@agenticreplay/mcp-shim/dist/index.d.ts.map +1 -1
- package/node_modules/@agenticreplay/mcp-shim/dist/index.js +0 -1
- package/node_modules/@agenticreplay/mcp-shim/dist/index.js.map +1 -1
- package/node_modules/@agenticreplay/mcp-shim/package.json +1 -1
- package/node_modules/@agenticreplay/node-instrument/package.json +1 -1
- package/node_modules/@agenticreplay/plugin-api/dist/plugins.d.ts +9 -212
- package/node_modules/@agenticreplay/plugin-api/dist/plugins.d.ts.map +1 -1
- package/node_modules/@agenticreplay/plugin-api/package.json +1 -1
- package/node_modules/@agenticreplay/providers/package.json +3 -3
- package/node_modules/@agenticreplay/proxy/dist/dialects.d.ts +3 -29
- package/node_modules/@agenticreplay/proxy/dist/dialects.d.ts.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/dialects.js +3 -69
- package/node_modules/@agenticreplay/proxy/dist/dialects.js.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/index.d.ts +0 -2
- package/node_modules/@agenticreplay/proxy/dist/index.d.ts.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/index.js +0 -2
- package/node_modules/@agenticreplay/proxy/dist/index.js.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/intercept.d.ts +0 -48
- package/node_modules/@agenticreplay/proxy/dist/intercept.d.ts.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/intercept.js +32 -157
- package/node_modules/@agenticreplay/proxy/dist/intercept.js.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/server.d.ts +2 -148
- package/node_modules/@agenticreplay/proxy/dist/server.d.ts.map +1 -1
- package/node_modules/@agenticreplay/proxy/dist/server.js +25 -874
- package/node_modules/@agenticreplay/proxy/dist/server.js.map +1 -1
- package/node_modules/@agenticreplay/proxy/package.json +5 -5
- package/node_modules/@agenticreplay/schema/package.json +1 -1
- package/node_modules/@agenticreplay/shell-shim/package.json +3 -3
- package/node_modules/@agenticreplay/viewer/package.json +2 -2
- package/package.json +13 -14
- package/packages/cli/dist/api.d.ts +1 -27
- package/packages/cli/dist/api.d.ts.map +1 -1
- package/packages/cli/dist/api.js +2 -31
- package/packages/cli/dist/api.js.map +1 -1
- package/packages/cli/dist/args.d.ts.map +1 -1
- package/packages/cli/dist/args.js +0 -7
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/commands/attach.d.ts +1 -4
- package/packages/cli/dist/commands/attach.d.ts.map +1 -1
- package/packages/cli/dist/commands/attach.js +24 -109
- package/packages/cli/dist/commands/attach.js.map +1 -1
- package/packages/cli/dist/commands/cost.d.ts +3 -0
- package/packages/cli/dist/commands/cost.d.ts.map +1 -0
- package/packages/cli/dist/commands/cost.js +13 -0
- package/packages/cli/dist/commands/cost.js.map +1 -0
- package/packages/cli/dist/commands/gc.d.ts +0 -2
- package/packages/cli/dist/commands/gc.d.ts.map +1 -1
- package/packages/cli/dist/commands/gc.js +3 -47
- package/packages/cli/dist/commands/gc.js.map +1 -1
- package/packages/cli/dist/commands/inspect.d.ts +0 -2
- package/packages/cli/dist/commands/inspect.d.ts.map +1 -1
- package/packages/cli/dist/commands/inspect.js +4 -30
- package/packages/cli/dist/commands/inspect.js.map +1 -1
- package/packages/cli/dist/commands/quickstart.d.ts +2 -34
- package/packages/cli/dist/commands/quickstart.d.ts.map +1 -1
- package/packages/cli/dist/commands/quickstart.js +32 -340
- package/packages/cli/dist/commands/quickstart.js.map +1 -1
- package/packages/cli/dist/commands/record.d.ts.map +1 -1
- package/packages/cli/dist/commands/record.js +34 -103
- package/packages/cli/dist/commands/record.js.map +1 -1
- package/packages/cli/dist/commands/setup.d.ts.map +1 -1
- package/packages/cli/dist/commands/setup.js +1 -30
- package/packages/cli/dist/commands/setup.js.map +1 -1
- package/packages/cli/dist/commands/sync.js +1 -1
- package/packages/cli/dist/commands/sync.js.map +1 -1
- package/packages/cli/dist/config.d.ts +1 -4
- package/packages/cli/dist/config.d.ts.map +1 -1
- package/packages/cli/dist/config.js.map +1 -1
- package/packages/cli/dist/flags.d.ts.map +1 -1
- package/packages/cli/dist/flags.js +4 -45
- package/packages/cli/dist/flags.js.map +1 -1
- package/packages/cli/dist/fs-events.d.ts +2 -13
- package/packages/cli/dist/fs-events.d.ts.map +1 -1
- package/packages/cli/dist/fs-events.js +5 -64
- package/packages/cli/dist/fs-events.js.map +1 -1
- package/packages/cli/dist/index.d.ts +0 -2
- package/packages/cli/dist/index.d.ts.map +1 -1
- package/packages/cli/dist/index.js +0 -2
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +12 -67
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/mcp-server.d.ts.map +1 -1
- package/packages/cli/dist/mcp-server.js +3 -86
- package/packages/cli/dist/mcp-server.js.map +1 -1
- package/packages/cli/dist/mcp.d.ts +1 -73
- package/packages/cli/dist/mcp.d.ts.map +1 -1
- package/packages/cli/dist/mcp.js +3 -113
- package/packages/cli/dist/mcp.js.map +1 -1
- package/packages/cli/dist/share-card.d.ts +0 -20
- package/packages/cli/dist/share-card.d.ts.map +1 -1
- package/packages/cli/dist/share-card.js +0 -63
- package/packages/cli/dist/share-card.js.map +1 -1
- package/packages/cli/dist/snapshot.d.ts +2 -5
- package/packages/cli/dist/snapshot.d.ts.map +1 -1
- package/packages/cli/dist/snapshot.js +2 -3
- package/packages/cli/dist/snapshot.js.map +1 -1
- package/packages/cli/dist/tls-capture.d.ts +1 -17
- package/packages/cli/dist/tls-capture.d.ts.map +1 -1
- package/packages/cli/dist/tls-capture.js +7 -77
- package/packages/cli/dist/tls-capture.js.map +1 -1
- package/packages/cli/package.json +11 -11
|
@@ -6,15 +6,9 @@ export function anthropicDialect(translators) {
|
|
|
6
6
|
// OpenCode catalog providers mount Anthropic under /anthropic/v1, /coding/v1, etc.
|
|
7
7
|
// Keep the version segment: an arbitrary /messages route may belong to another API.
|
|
8
8
|
matches: (p) => p.startsWith('/v1/messages') || p.endsWith('/v1/messages'),
|
|
9
|
-
// Claude is the only family Anthropic serves, so the test is the name rather than a list that
|
|
10
|
-
// would need editing every time a model ships.
|
|
11
|
-
ownsModel: (m) => /^(?:.*\/)?claude[-.]/i.test(m.trim()),
|
|
12
9
|
toCanonicalRequest: translators.toCanonicalRequest,
|
|
13
10
|
toCanonicalResponse: translators.toCanonicalResponse,
|
|
14
11
|
parseStream: translators.parseSse,
|
|
15
|
-
withModel: (raw, model) => ({ ...raw, model }),
|
|
16
|
-
fromCanonicalRequest: translators.fromCanonicalRequest,
|
|
17
|
-
fromCanonicalResponse: (res, streamed) => streamed ? translators.toSse(res) : JSON.stringify(translators.fromCanonicalResponse(res)),
|
|
18
12
|
};
|
|
19
13
|
}
|
|
20
14
|
export function openaiDialect(translators) {
|
|
@@ -26,23 +20,16 @@ export function openaiDialect(translators) {
|
|
|
26
20
|
// depending on how their SDK joins the base URL. Accept either rather than making the user
|
|
27
21
|
// discover which one their harness picked.
|
|
28
22
|
matches: (p) => p.endsWith('/chat/completions') || p.endsWith('/completions'),
|
|
29
|
-
// Everything that is not Claude. The chat-completions shape is what GLM, Qwen, DeepSeek and
|
|
30
|
-
// every gateway speak, so it is the right default rather than a list of known vendors — an
|
|
31
|
-
// unknown model reaches an OpenAI-compatible endpoint, which is where an unknown model lives.
|
|
32
|
-
ownsModel: (m) => !/^(?:.*\/)?claude[-.]/i.test(m.trim()),
|
|
33
23
|
toCanonicalRequest: translators.toCanonicalRequest,
|
|
34
24
|
toCanonicalResponse: translators.toCanonicalResponse,
|
|
35
25
|
parseStream: translators.parseSse,
|
|
36
|
-
withModel: (raw, model) => ({ ...raw, model }),
|
|
37
|
-
fromCanonicalRequest: translators.fromCanonicalRequest,
|
|
38
|
-
fromCanonicalResponse: (res, streamed) => streamed ? translators.toSse(res) : JSON.stringify(translators.fromCanonicalResponse(res)),
|
|
39
26
|
};
|
|
40
27
|
}
|
|
41
28
|
/**
|
|
42
29
|
* The Codex CLI's subscription transport is an OpenAI Responses-shaped endpoint, but it is not
|
|
43
30
|
* the public `/v1/responses` API: it lives at `/backend-api/codex/responses`, sends zstd-compressed
|
|
44
|
-
* JSON and returns a Responses SSE stream.
|
|
45
|
-
*
|
|
31
|
+
* JSON and returns a Responses SSE stream. The recording proxy parses these calls into the
|
|
32
|
+
* common trace format while preserving the received wire evidence.
|
|
46
33
|
*/
|
|
47
34
|
export function codexDialect() {
|
|
48
35
|
return {
|
|
@@ -50,15 +37,9 @@ export function codexDialect() {
|
|
|
50
37
|
defaultUpstream: 'https://chatgpt.com',
|
|
51
38
|
requestPath: '/backend-api/codex/responses',
|
|
52
39
|
matches: (p) => p === '/backend-api/codex/responses',
|
|
53
|
-
// Only Codex subscription model ids belong here. Generic GPT names must continue to route to
|
|
54
|
-
// the public OpenAI dialect when a fork changes an ordinary provider request.
|
|
55
|
-
ownsModel: (model) => /^gpt-5\.6-(?:sol|terra|luna)$/i.test(model.trim()),
|
|
56
40
|
toCanonicalRequest: codexToCanonicalRequest,
|
|
57
41
|
toCanonicalResponse: codexToCanonicalResponse,
|
|
58
42
|
parseStream: parseCodexSse,
|
|
59
|
-
withModel: (raw, model) => ({ ...raw, model }),
|
|
60
|
-
fromCanonicalRequest: canonicalToCodexRequest,
|
|
61
|
-
fromCanonicalResponse: (res, streamed) => streamed ? canonicalToCodexSse(res) : JSON.stringify(canonicalToCodexResponse(res)),
|
|
62
43
|
};
|
|
63
44
|
}
|
|
64
45
|
function codexToCanonicalRequest(raw) {
|
|
@@ -225,46 +206,6 @@ function codexTools(raw) {
|
|
|
225
206
|
}
|
|
226
207
|
return out;
|
|
227
208
|
}
|
|
228
|
-
function canonicalToCodexRequest(req) {
|
|
229
|
-
const input = [];
|
|
230
|
-
for (const message of req.messages) {
|
|
231
|
-
const blocks = message.content.filter((block) => block.type === 'text');
|
|
232
|
-
if (blocks.length) {
|
|
233
|
-
input.push({
|
|
234
|
-
type: 'message',
|
|
235
|
-
role: message.role,
|
|
236
|
-
content: blocks.map((block) => ({
|
|
237
|
-
type: 'input_text',
|
|
238
|
-
text: block.type === 'text' ? block.text : '',
|
|
239
|
-
})),
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return {
|
|
244
|
-
model: req.model,
|
|
245
|
-
...(req.system === undefined ? {} : { instructions: req.system }),
|
|
246
|
-
input,
|
|
247
|
-
...(req.tools === undefined
|
|
248
|
-
? {}
|
|
249
|
-
: { tools: req.tools.map((tool) => ({ type: 'function', ...tool })) }),
|
|
250
|
-
...(req.max_tokens === undefined ? {} : { max_output_tokens: req.max_tokens }),
|
|
251
|
-
...(req.temperature === undefined ? {} : { temperature: req.temperature }),
|
|
252
|
-
...(req.top_p === undefined ? {} : { top_p: req.top_p }),
|
|
253
|
-
...(req.stream === undefined ? {} : { stream: req.stream }),
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
function canonicalToCodexResponse(res) {
|
|
257
|
-
return {
|
|
258
|
-
id: res.id,
|
|
259
|
-
object: 'response',
|
|
260
|
-
model: res.model,
|
|
261
|
-
status: 'completed',
|
|
262
|
-
output: res.content,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
function canonicalToCodexSse(res) {
|
|
266
|
-
return `event: response.completed\ndata: ${JSON.stringify({ type: 'response.completed', response: canonicalToCodexResponse(res) })}\n\n`;
|
|
267
|
-
}
|
|
268
209
|
function asRecord(raw) {
|
|
269
210
|
return raw !== null && typeof raw === 'object' && !Array.isArray(raw)
|
|
270
211
|
? raw
|
|
@@ -301,10 +242,7 @@ function omitUndefined(value) {
|
|
|
301
242
|
* top-level items, and the stream is typed events rather than choice deltas. One dialect trying to
|
|
302
243
|
* be both would have to sniff the body shape on every request, and guess wrong on the empty ones.
|
|
303
244
|
*
|
|
304
|
-
* It is registered
|
|
305
|
-
* cannot distinguish them — both serve everything that is not Claude — so the later position means
|
|
306
|
-
* an ordinary chat-completions run forking to another OpenAI model still goes to chat completions.
|
|
307
|
-
* A Responses run stays on Responses through the recorded-dialect preference in `goLive`.
|
|
245
|
+
* It is registered after `openaiDialect`; the request path selects the wire protocol.
|
|
308
246
|
*/
|
|
309
247
|
export function responsesDialect(translators) {
|
|
310
248
|
return {
|
|
@@ -314,13 +252,9 @@ export function responsesDialect(translators) {
|
|
|
314
252
|
// Agents reach it as `/v1/responses` or `/responses` depending on whether their SDK considers
|
|
315
253
|
// the version segment part of the base url, and a gateway may mount it under a prefix.
|
|
316
254
|
matches: (p) => p.endsWith('/responses'),
|
|
317
|
-
ownsModel: (m) => !/^(?:.*\/)?claude[-.]/i.test(m.trim()),
|
|
318
255
|
toCanonicalRequest: translators.toCanonicalRequest,
|
|
319
256
|
toCanonicalResponse: translators.toCanonicalResponse,
|
|
320
257
|
parseStream: translators.parseSse,
|
|
321
|
-
withModel: (raw, model) => ({ ...raw, model }),
|
|
322
|
-
fromCanonicalRequest: translators.fromCanonicalRequest,
|
|
323
|
-
fromCanonicalResponse: (res, streamed) => streamed ? translators.toSse(res) : JSON.stringify(translators.fromCanonicalResponse(res)),
|
|
324
258
|
};
|
|
325
259
|
}
|
|
326
260
|
export function selectDialect(dialects, path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialects.js","sourceRoot":"","sources":["../src/dialects.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialects.js","sourceRoot":"","sources":["../src/dialects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -77,26 +77,6 @@ export interface NetExchange {
|
|
|
77
77
|
* used against.
|
|
78
78
|
*/
|
|
79
79
|
intercepted?: boolean;
|
|
80
|
-
/**
|
|
81
|
-
* The retrieval rule that claimed this call, when one did.
|
|
82
|
-
*
|
|
83
|
-
* A `net.*` pair carrying this and {@link replayKey} is not opaque traffic: it is a call whose
|
|
84
|
-
* answer is a function of its request, and a replay can serve it back. See `retrieval.ts`.
|
|
85
|
-
*/
|
|
86
|
-
rule?: string;
|
|
87
|
-
/** What a replay looks this call up by. Its presence is what makes the pair replayable. */
|
|
88
|
-
replayKey?: string;
|
|
89
|
-
/**
|
|
90
|
-
* A second key that ignores the order of a batch, where the rule offers one. It is what lets a
|
|
91
|
-
* pipeline whose worker pool assembles its batch differently on every run still replay; see
|
|
92
|
-
* `BatchRetrieval`.
|
|
93
|
-
*/
|
|
94
|
-
batchKey?: string;
|
|
95
|
-
/**
|
|
96
|
-
* SHA-256 of the response body, present when `--retrieval-store=digest` kept the digest instead
|
|
97
|
-
* of the bytes. Enough to prove a later run got the same answer; not enough to serve one.
|
|
98
|
-
*/
|
|
99
|
-
responseDigest?: string;
|
|
100
80
|
durationMs: number;
|
|
101
81
|
}
|
|
102
82
|
/** A decrypted request before it is sent to the origin. */
|
|
@@ -112,25 +92,6 @@ export interface NetRequest {
|
|
|
112
92
|
requestBytes: Buffer;
|
|
113
93
|
requestTruncated: boolean;
|
|
114
94
|
}
|
|
115
|
-
/** A response supplied by replay for a request inside an intercepted TLS session. */
|
|
116
|
-
export interface InterceptResponse {
|
|
117
|
-
status: number;
|
|
118
|
-
headers?: Record<string, string>;
|
|
119
|
-
body: string;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Forward this decrypted request to the origin, but with a different body.
|
|
123
|
-
*
|
|
124
|
-
* The CONNECT target stays the recorded host — a TLS-intercepted harness is still talking to the
|
|
125
|
-
* origin it named — while a fork's `--model` has to change what that origin is asked. Returning a
|
|
126
|
-
* full {@link InterceptResponse} would answer from agenticreplay and never reach the origin; returning
|
|
127
|
-
* nothing would reach it with the recorded model. This is the third option that `--model` needs.
|
|
128
|
-
*/
|
|
129
|
-
export interface InterceptForward {
|
|
130
|
-
outboundBody: Buffer;
|
|
131
|
-
}
|
|
132
|
-
export type InterceptDecision = InterceptResponse | InterceptForward;
|
|
133
|
-
export declare function isInterceptResponse(decision: InterceptDecision): decision is InterceptResponse;
|
|
134
95
|
/** Decode a recorded body, whichever of the two forms it was stored in. */
|
|
135
96
|
export declare function readRecordedBody(body: string): Buffer;
|
|
136
97
|
/**
|
|
@@ -197,15 +158,6 @@ export interface TlsInterceptOptions {
|
|
|
197
158
|
maxCapturedBytes?: number;
|
|
198
159
|
maxBufferedBytes?: number;
|
|
199
160
|
onRequestStart?: (request: NetRequest) => void | Promise<void>;
|
|
200
|
-
/**
|
|
201
|
-
* Answer a decrypted request from a recording, or rewrite it before the origin sees it.
|
|
202
|
-
*
|
|
203
|
-
* Undefined falls through to the live origin with the client's bytes unchanged. An
|
|
204
|
-
* {@link InterceptResponse} is served locally and never opens an origin connection. An
|
|
205
|
-
* {@link InterceptForward} still opens one, with a substituted body — the `--model` path on a
|
|
206
|
-
* TLS-intercepted fork.
|
|
207
|
-
*/
|
|
208
|
-
onRequest?: (request: NetRequest) => InterceptDecision | undefined | Promise<InterceptDecision | undefined>;
|
|
209
161
|
onNetExchange?: (exchange: NetExchange) => void;
|
|
210
162
|
onTunnel?: (tunnel: TunnelRecord) => void;
|
|
211
163
|
onFailure?: (failure: InterceptFailure) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intercept.d.ts","sourceRoot":"","sources":["../src/intercept.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAUnB,OAAO,EAA+B,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AASpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAuC5C;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAAmB,CAAC;AAC3D,eAAO,MAAM,0BAA0B,QAAoB,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAC5C,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC1C,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB
|
|
1
|
+
{"version":3,"file":"intercept.d.ts","sourceRoot":"","sources":["../src/intercept.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,18 +49,6 @@ const SECRET_RESPONSE_HEADERS = new Set(AUTH_RESPONSE_HEADERS);
|
|
|
49
49
|
*/
|
|
50
50
|
export const DEFAULT_MAX_CAPTURED_BYTES = 64 * 1024 * 1024;
|
|
51
51
|
export const DEFAULT_MAX_BUFFERED_BYTES = 256 * 1024 * 1024;
|
|
52
|
-
export function isInterceptResponse(decision) {
|
|
53
|
-
return 'status' in decision;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* A rewritten body is uncompressed JSON even when the client sent gzip/zstd. The origin must not
|
|
57
|
-
* be told the old encoding, or it will try to inflate plaintext and the substitution is lost.
|
|
58
|
-
*/
|
|
59
|
-
function applyRewrittenBody(headers, body) {
|
|
60
|
-
delete headers['content-encoding'];
|
|
61
|
-
delete headers['content-length'];
|
|
62
|
-
headers['content-length'] = String(body.length);
|
|
63
|
-
}
|
|
64
52
|
/** Decode a recorded body, whichever of the two forms it was stored in. */
|
|
65
53
|
export function readRecordedBody(body) {
|
|
66
54
|
return body.startsWith(BINARY_BODY_PREFIX)
|
|
@@ -453,7 +441,6 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
453
441
|
const requestBody = new Capture(maxCaptured, budget);
|
|
454
442
|
const responseBody = new Capture(maxCaptured, budget);
|
|
455
443
|
const contentEncoding = headerText(normalizeHeaderValue(headers['content-encoding']));
|
|
456
|
-
let rewrittenBody;
|
|
457
444
|
const requestStart = {
|
|
458
445
|
requestId,
|
|
459
446
|
requestStartedAt: startedAt,
|
|
@@ -491,52 +478,6 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
491
478
|
}
|
|
492
479
|
throw err;
|
|
493
480
|
}
|
|
494
|
-
// Replay answers from the recording and must never reach the origin. The HTTP/1.1 twin has
|
|
495
|
-
// consulted this hook since interception existed; without the same call here, a run recorded
|
|
496
|
-
// over HTTP/1.1 and replayed by a client that now negotiates h2 would be forwarded live --
|
|
497
|
-
// real model calls, on the caller's own credential, during what the operator ran offline.
|
|
498
|
-
if (options.onRequest) {
|
|
499
|
-
try {
|
|
500
|
-
for await (const chunk of stream)
|
|
501
|
-
requestBody.add(Buffer.from(chunk));
|
|
502
|
-
}
|
|
503
|
-
catch (err) {
|
|
504
|
-
requestBody.release();
|
|
505
|
-
responseBody.release();
|
|
506
|
-
throw err;
|
|
507
|
-
}
|
|
508
|
-
const request = {
|
|
509
|
-
requestId,
|
|
510
|
-
requestStartedAt: startedAt,
|
|
511
|
-
host: target.host,
|
|
512
|
-
port: target.port,
|
|
513
|
-
method,
|
|
514
|
-
path,
|
|
515
|
-
requestHeaders: recordableHeaders,
|
|
516
|
-
requestBytes: requestBody.buffer(),
|
|
517
|
-
requestTruncated: requestBody.truncated,
|
|
518
|
-
};
|
|
519
|
-
const decision = await options.onRequest(request);
|
|
520
|
-
if (decision && isInterceptResponse(decision)) {
|
|
521
|
-
requestBody.release();
|
|
522
|
-
if (stream.destroyed)
|
|
523
|
-
return;
|
|
524
|
-
stream.respond({ ':status': decision.status, ...(decision.headers ?? {}) });
|
|
525
|
-
stream.end(decision.body);
|
|
526
|
-
counters.intercepted += 1;
|
|
527
|
-
return;
|
|
528
|
-
}
|
|
529
|
-
if (decision) {
|
|
530
|
-
rewrittenBody = decision.outboundBody;
|
|
531
|
-
applyRewrittenBody(outbound, rewrittenBody);
|
|
532
|
-
}
|
|
533
|
-
// The bounded capture size is also the maximum replayable request size: forwarding a
|
|
534
|
-
// truncated body upstream is worse than refusing clearly, which is what HTTP/1.1 does.
|
|
535
|
-
if (requestBody.truncated) {
|
|
536
|
-
requestBody.release();
|
|
537
|
-
throw new Error(`request exceeded capture limit of ${maxCaptured} bytes`);
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
481
|
await new Promise((resolve, reject) => {
|
|
541
482
|
const upstream = upstreamH2(target).request(outbound);
|
|
542
483
|
let settled = false;
|
|
@@ -568,22 +509,17 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
568
509
|
// skipped there -- and an exception in this callback would take the process down with the
|
|
569
510
|
// exchange unrecorded. server.ts already decodes inside a try/catch for the same reason.
|
|
570
511
|
let recordedRequest;
|
|
571
|
-
|
|
572
|
-
recordedRequest =
|
|
512
|
+
try {
|
|
513
|
+
recordedRequest = decodeBody(requestBody.buffer(), contentEncoding, requestBody.limit);
|
|
573
514
|
}
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
reason: `request body left opaque: ${String(err)}`,
|
|
583
|
-
kind: 'body_opaque',
|
|
584
|
-
});
|
|
585
|
-
recordedRequest = requestBody.text();
|
|
586
|
-
}
|
|
515
|
+
catch (err) {
|
|
516
|
+
options.onFailure?.({
|
|
517
|
+
host: target.host,
|
|
518
|
+
port: target.port,
|
|
519
|
+
reason: `request body left opaque: ${String(err)}`,
|
|
520
|
+
kind: 'body_opaque',
|
|
521
|
+
});
|
|
522
|
+
recordedRequest = requestBody.text();
|
|
587
523
|
}
|
|
588
524
|
const decoded = recordableResponseBody(responseBody, headerText(recordableResponse['content-encoding']), !abandoned);
|
|
589
525
|
if (decoded.error !== undefined) {
|
|
@@ -665,22 +601,14 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
665
601
|
};
|
|
666
602
|
stream.on('aborted', abandon);
|
|
667
603
|
stream.on('close', abandon);
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
upstream.
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
stream.pause();
|
|
677
|
-
upstream.once('drain', () => stream.resume());
|
|
678
|
-
}
|
|
679
|
-
});
|
|
680
|
-
// Without this, a client that aborts mid-upload never emits `end`, `upstream.end()` is
|
|
681
|
-
// never called, and the origin waits for a body that will not arrive.
|
|
682
|
-
stream.on('end', () => upstream.end());
|
|
683
|
-
}
|
|
604
|
+
stream.on('data', (chunk) => {
|
|
605
|
+
requestBody.add(chunk);
|
|
606
|
+
if (!upstream.write(chunk)) {
|
|
607
|
+
stream.pause();
|
|
608
|
+
upstream.once('drain', () => stream.resume());
|
|
609
|
+
}
|
|
610
|
+
});
|
|
611
|
+
stream.on('end', () => upstream.end());
|
|
684
612
|
stream.on('error', (err) => {
|
|
685
613
|
responseError = String(err);
|
|
686
614
|
emit(false);
|
|
@@ -781,7 +709,6 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
781
709
|
// depends on it; the CONNECT target is the fallback for an HTTP/1.0 client that sent none.
|
|
782
710
|
outboundHeaders.host = req.headers.host ?? target.host;
|
|
783
711
|
const requestBody = new Capture(maxCaptured, budget);
|
|
784
|
-
let rewrittenBody;
|
|
785
712
|
const requestStart = {
|
|
786
713
|
requestId,
|
|
787
714
|
requestStartedAt: startedAt,
|
|
@@ -817,41 +744,6 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
817
744
|
}
|
|
818
745
|
throw err;
|
|
819
746
|
}
|
|
820
|
-
// Replay has to decide before opening an origin connection. Buffer only when that hook is in
|
|
821
|
-
// use; the recording path below retains the original streaming behaviour and bounded capture.
|
|
822
|
-
if (options.onRequest) {
|
|
823
|
-
try {
|
|
824
|
-
for await (const chunk of req)
|
|
825
|
-
requestBody.add(Buffer.from(chunk));
|
|
826
|
-
}
|
|
827
|
-
catch (err) {
|
|
828
|
-
requestBody.release();
|
|
829
|
-
throw err;
|
|
830
|
-
}
|
|
831
|
-
const request = {
|
|
832
|
-
requestId,
|
|
833
|
-
requestStartedAt: startedAt,
|
|
834
|
-
host: target.host,
|
|
835
|
-
port: target.port,
|
|
836
|
-
method: req.method ?? 'GET',
|
|
837
|
-
path,
|
|
838
|
-
requestHeaders: recordableHeaders,
|
|
839
|
-
requestBytes: requestBody.buffer(),
|
|
840
|
-
requestTruncated: requestBody.truncated,
|
|
841
|
-
};
|
|
842
|
-
const decision = await options.onRequest(request);
|
|
843
|
-
if (decision && isInterceptResponse(decision)) {
|
|
844
|
-
res.writeHead(decision.status, decision.headers ?? {});
|
|
845
|
-
res.end(decision.body);
|
|
846
|
-
counters.intercepted += 1;
|
|
847
|
-
requestBody.release();
|
|
848
|
-
return;
|
|
849
|
-
}
|
|
850
|
-
if (decision) {
|
|
851
|
-
rewrittenBody = decision.outboundBody;
|
|
852
|
-
applyRewrittenBody(outboundHeaders, rewrittenBody);
|
|
853
|
-
}
|
|
854
|
-
}
|
|
855
747
|
const upstream = httpsRequest({
|
|
856
748
|
host: target.host,
|
|
857
749
|
port: target.port,
|
|
@@ -863,20 +755,8 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
863
755
|
...(isIP(target.host) === 0 ? { servername: target.host } : {}),
|
|
864
756
|
...(originTrust ? { ca: originTrust } : {}),
|
|
865
757
|
});
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
// request size; sending a truncated body upstream would be worse than a clear failure.
|
|
869
|
-
if (requestBody.truncated) {
|
|
870
|
-
upstream.destroy(new Error(`request exceeded capture limit of ${maxCaptured} bytes`));
|
|
871
|
-
}
|
|
872
|
-
else {
|
|
873
|
-
upstream.end(rewrittenBody ?? requestBody.buffer());
|
|
874
|
-
}
|
|
875
|
-
}
|
|
876
|
-
else {
|
|
877
|
-
req.on('data', (chunk) => requestBody.add(chunk));
|
|
878
|
-
req.pipe(upstream);
|
|
879
|
-
}
|
|
758
|
+
req.on('data', (chunk) => requestBody.add(chunk));
|
|
759
|
+
req.pipe(upstream);
|
|
880
760
|
const finished = new Promise((resolve, reject) => {
|
|
881
761
|
/**
|
|
882
762
|
* What has been read so far, hoisted out of the response handler so that an exchange the
|
|
@@ -902,24 +782,19 @@ export function attachTlsIntercept(server, options, counters) {
|
|
|
902
782
|
// A body agenticreplay cannot decode is still an exchange worth having, and an exception thrown in
|
|
903
783
|
// this callback would take the process down with it. Same guard, same reason, as h2.
|
|
904
784
|
let recordedRequest;
|
|
905
|
-
|
|
906
|
-
recordedRequest =
|
|
785
|
+
try {
|
|
786
|
+
recordedRequest = decodeBody(requestBody.buffer(), typeof req.headers['content-encoding'] === 'string'
|
|
787
|
+
? req.headers['content-encoding']
|
|
788
|
+
: undefined, requestBody.limit);
|
|
907
789
|
}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
host: target.host,
|
|
917
|
-
port: target.port,
|
|
918
|
-
reason: `request body left opaque: ${String(err)}`,
|
|
919
|
-
kind: 'body_opaque',
|
|
920
|
-
});
|
|
921
|
-
recordedRequest = requestBody.text();
|
|
922
|
-
}
|
|
790
|
+
catch (err) {
|
|
791
|
+
options.onFailure?.({
|
|
792
|
+
host: target.host,
|
|
793
|
+
port: target.port,
|
|
794
|
+
reason: `request body left opaque: ${String(err)}`,
|
|
795
|
+
kind: 'body_opaque',
|
|
796
|
+
});
|
|
797
|
+
recordedRequest = requestBody.text();
|
|
923
798
|
}
|
|
924
799
|
const decoded = recordableResponseBody(responseBody, headerText(responseHeaders['content-encoding']), !abandoned);
|
|
925
800
|
if (decoded.error !== undefined) {
|