@rynfar/meridian 1.65.2 → 1.66.0
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 +9 -3
- package/dist/{cli-pdpry6q0.js → cli-5jxyma6z.js} +5 -2
- package/dist/{cli-0ed6j0vk.js → cli-m9wqgk1q.js} +50 -16
- package/dist/{cli-syjqjygv.js → cli-nzvbaqjp.js} +413 -54
- package/dist/cli.js +5 -5
- package/dist/{profileCli-ap7eg985.js → profileCli-qhcr87tm.js} +1 -1
- package/dist/{profiles-4ajzjqhm.js → profiles-wch9h234.js} +1 -1
- package/dist/proxy/adapter.d.ts +14 -0
- package/dist/proxy/adapter.d.ts.map +1 -1
- package/dist/proxy/adapters/claudecode.d.ts +29 -0
- package/dist/proxy/adapters/claudecode.d.ts.map +1 -1
- package/dist/proxy/adapters/prime.d.ts.map +1 -1
- package/dist/proxy/models.d.ts +26 -8
- package/dist/proxy/models.d.ts.map +1 -1
- package/dist/proxy/oauthUsage.d.ts.map +1 -1
- package/dist/proxy/openai.d.ts +15 -0
- package/dist/proxy/openai.d.ts.map +1 -1
- package/dist/proxy/openaiResponses.d.ts +4 -11
- package/dist/proxy/openaiResponses.d.ts.map +1 -1
- package/dist/proxy/retryAfter.d.ts +90 -0
- package/dist/proxy/retryAfter.d.ts.map +1 -0
- package/dist/proxy/routing.d.ts +11 -0
- package/dist/proxy/routing.d.ts.map +1 -1
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/proxy/sessionTree.d.ts +113 -0
- package/dist/proxy/sessionTree.d.ts.map +1 -0
- package/dist/server.js +3 -3
- package/dist/telemetry/dashboard.d.ts.map +1 -1
- package/dist/telemetry/routes.d.ts +10 -1
- package/dist/telemetry/routes.d.ts.map +1 -1
- package/dist/telemetry/types.d.ts +16 -0
- package/dist/telemetry/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
startProxyServer
|
|
4
|
-
} from "./cli-
|
|
5
|
-
import"./cli-
|
|
4
|
+
} from "./cli-nzvbaqjp.js";
|
|
5
|
+
import"./cli-5jxyma6z.js";
|
|
6
6
|
import"./cli-sry5aqdj.js";
|
|
7
7
|
import"./cli-8yp89fan.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveClaudeExecutableAsync
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-m9wqgk1q.js";
|
|
11
11
|
import"./cli-khhjyk04.js";
|
|
12
12
|
import"./cli-vj9cv18n.js";
|
|
13
13
|
import"./cli-n8t34zmq.js";
|
|
@@ -60,7 +60,7 @@ See https://github.com/rynfar/meridian for full documentation.`);
|
|
|
60
60
|
process.exit(0);
|
|
61
61
|
}
|
|
62
62
|
if (args[0] === "profile") {
|
|
63
|
-
const { profileAdd, profileAddOauthToken, profileList, profileRemove, profileSwitch, profileLogin, profileHelp } = await import("./profileCli-
|
|
63
|
+
const { profileAdd, profileAddOauthToken, profileList, profileRemove, profileSwitch, profileLogin, profileHelp } = await import("./profileCli-qhcr87tm.js");
|
|
64
64
|
const subcommand = args[1];
|
|
65
65
|
const profileId = args[2];
|
|
66
66
|
const headless = args.includes("--headless");
|
|
@@ -230,7 +230,7 @@ async function runCli(start = startProxyServer, runAuthCheck = async () => {
|
|
|
230
230
|
console.error("\x1B[33m⚠ Could not verify Claude auth status. If requests fail, run: claude login\x1B[0m");
|
|
231
231
|
}
|
|
232
232
|
if (!profiles) {
|
|
233
|
-
const { enableDiskProfileDiscovery } = await import("./profiles-
|
|
233
|
+
const { enableDiskProfileDiscovery } = await import("./profiles-wch9h234.js");
|
|
234
234
|
enableDiskProfileDiscovery();
|
|
235
235
|
}
|
|
236
236
|
const proxy = await start({ port, host, idleTimeoutSeconds, pluginDir, pluginConfigPath, profiles, defaultProfile, version, installProcessErrorHandlers: true });
|
package/dist/proxy/adapter.d.ts
CHANGED
|
@@ -27,6 +27,20 @@ export interface AgentIdentity {
|
|
|
27
27
|
* Returns undefined if the agent doesn't provide session tracking.
|
|
28
28
|
*/
|
|
29
29
|
getSessionId(c: Context, body?: unknown): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Optional IMMEDIATE parent session key, for clients that declare a subagent
|
|
32
|
+
* tree (Prime Agent's RLM children stamp it in `metadata.user_id`).
|
|
33
|
+
*
|
|
34
|
+
* Two rules make this safe to consume:
|
|
35
|
+
* - the value must be a key `getSessionId` could itself have produced, so
|
|
36
|
+
* the returned string is directly comparable to another request's key;
|
|
37
|
+
* - it must never alter this request's own key.
|
|
38
|
+
*
|
|
39
|
+
* Deeper trees name one level each, so consumers walk the chain. Returning
|
|
40
|
+
* undefined (the default) means the client declares no lineage, which is what
|
|
41
|
+
* keeps parent→child cancellation inert for every other client.
|
|
42
|
+
*/
|
|
43
|
+
getParentSessionId?(c: Context, body?: unknown): string | undefined;
|
|
30
44
|
/**
|
|
31
45
|
* Optional client-declared agent mode. Adapters own their header/protocol
|
|
32
46
|
* details; the proxy uses the normalized value for model-tier selection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/proxy/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/proxy/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,36 @@
|
|
|
17
17
|
* fingerprinting and a system-prompt hint (see server.ts + query.ts).
|
|
18
18
|
*/
|
|
19
19
|
import type { AgentAdapter } from "../adapter";
|
|
20
|
+
/**
|
|
21
|
+
* Session identity declared in `metadata.user_id`.
|
|
22
|
+
*
|
|
23
|
+
* `sessionId` is the whole of the session key — nothing is appended, prefixed,
|
|
24
|
+
* or normalized — because it is what every cached mapping is already stored
|
|
25
|
+
* under. `parentSessionId` is additive: a client that does not stamp it gets
|
|
26
|
+
* exactly the identity it got before the field existed.
|
|
27
|
+
*/
|
|
28
|
+
export interface ClaudeCodeSessionIdentity {
|
|
29
|
+
readonly sessionId: string;
|
|
30
|
+
/**
|
|
31
|
+
* The IMMEDIATE parent's session id, when the client declares subagent
|
|
32
|
+
* lineage. Deeper trees are expressed by each level naming its own parent, so
|
|
33
|
+
* consumers walk the chain rather than expecting a root here.
|
|
34
|
+
*/
|
|
35
|
+
readonly parentSessionId?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse the identity envelope Claude Code (and Prime Agent's extension) embeds
|
|
39
|
+
* in `metadata.user_id`.
|
|
40
|
+
*
|
|
41
|
+
* Strict by design: `user_id` must be, or parse to, an object carrying a
|
|
42
|
+
* non-empty string `session_id`. Anything else yields undefined and the caller
|
|
43
|
+
* falls back to fingerprint resume, so unrelated Anthropic-API clients that put
|
|
44
|
+
* their own value in `user_id` are never mistaken for a keyed session.
|
|
45
|
+
*/
|
|
46
|
+
export declare function extractClaudeCodeSessionIdentity(body: unknown): ClaudeCodeSessionIdentity | undefined;
|
|
20
47
|
/** Extract the stable conversation ID embedded by Claude Code in metadata.user_id. */
|
|
21
48
|
export declare function extractClaudeCodeSessionId(body: unknown): string | undefined;
|
|
49
|
+
/** Extract the immediate parent session key, when the client declares lineage. */
|
|
50
|
+
export declare function extractClaudeCodeParentSessionId(body: unknown): string | undefined;
|
|
22
51
|
export declare const claudeCodeAdapter: AgentAdapter;
|
|
23
52
|
//# sourceMappingURL=claudecode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudecode.d.ts","sourceRoot":"","sources":["../../../src/proxy/adapters/claudecode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAiC9C,sFAAsF;AACtF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"claudecode.d.ts","sourceRoot":"","sources":["../../../src/proxy/adapters/claudecode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAiC9C;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,GAAG,SAAS,CA+BrG;AAED,sFAAsF;AACtF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE5E;AAED,kFAAkF;AAClF,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAElF;AAED,eAAO,MAAM,iBAAiB,EAAE,YAkG/B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prime.d.ts","sourceRoot":"","sources":["../../../src/proxy/adapters/prime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,KAAK,UAAU,EAA8B,MAAM,gBAAgB,CAAA;AAQ5E;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAO7C,CAAA;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CActD;AAYD;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAuBrE;AAED;;;;;;;;;;GAUG;AACH,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,UAAU,EAAE,CAkBnF;AAED,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"prime.d.ts","sourceRoot":"","sources":["../../../src/proxy/adapters/prime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,KAAK,UAAU,EAA8B,MAAM,gBAAgB,CAAA;AAQ5E;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAO7C,CAAA;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CActD;AAYD;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAuBrE;AAED;;;;;;;;;;GAUG;AACH,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,UAAU,EAAE,CAkBnF;AAED,eAAO,MAAM,YAAY,EAAE,YAqI1B,CAAA;AAED;;;;;;GAMG;AACH,OAAO,EACL,eAAe,EACf,iCAAiC,EACjC,uBAAuB,EACvB,uBAAuB,GACxB,CAAA"}
|
package/dist/proxy/models.d.ts
CHANGED
|
@@ -54,13 +54,25 @@ export interface ClaudeAuthStatus {
|
|
|
54
54
|
}
|
|
55
55
|
/** Clear the per-variable warn-once tracking — for testing only. */
|
|
56
56
|
export declare function resetWarnedTierOverrides(): void;
|
|
57
|
-
|
|
57
|
+
/**
|
|
58
|
+
* `sessionKey` scopes the extended-context bench to one conversation. See
|
|
59
|
+
* `recordExtendedContextRateLimited` — a rate limit on one session must not
|
|
60
|
+
* downgrade its concurrent siblings, while an Extra Usage refusal still does
|
|
61
|
+
* (#901). Optional: clients without a session identity fall back to the
|
|
62
|
+
* profile-wide bench.
|
|
63
|
+
*/
|
|
64
|
+
export declare function mapModelToClaudeModel(model: string, subscriptionType?: string | null, agentMode?: string | null, profileId?: string, sessionKey?: string): ClaudeModel;
|
|
58
65
|
/**
|
|
59
66
|
* Record that Extra Usage is not enabled on this subscription.
|
|
60
67
|
* For the next hour, mapModelToClaudeModel will return the base model
|
|
61
68
|
* directly — no failed [1m] attempt per request. After the cooldown
|
|
62
69
|
* the next request probes [1m] once; if Extra Usage was enabled in the
|
|
63
70
|
* meantime it succeeds and the flag is never set again.
|
|
71
|
+
*
|
|
72
|
+
* Profile-wide on purpose: entitlement is a property of the account, not of
|
|
73
|
+
* the conversation that happened to discover it. Every session on this profile
|
|
74
|
+
* would fail identically, so making each one prove that costs N failed
|
|
75
|
+
* requests and buys nothing.
|
|
64
76
|
*/
|
|
65
77
|
export declare function recordExtendedContextUnavailable(profileId?: string): void;
|
|
66
78
|
/**
|
|
@@ -71,16 +83,22 @@ export declare function recordExtendedContextUnavailable(profileId?: string): vo
|
|
|
71
83
|
* makes the next request map straight back to [1m]: the conversation then
|
|
72
84
|
* flaps between two models and pays a cold prompt cache in BOTH directions,
|
|
73
85
|
* which routinely costs more than the rate limit it was routing around (#862).
|
|
86
|
+
*
|
|
87
|
+
* Scoped to `sessionKey` when the client has a session identity, so a harness
|
|
88
|
+
* running N children through one account no longer downgrades — and cold-caches
|
|
89
|
+
* — every sibling because one child hit the limit (#901). Without a session
|
|
90
|
+
* key there is nothing narrower to scope to, so the bench stays profile-wide.
|
|
74
91
|
*/
|
|
75
|
-
export declare function recordExtendedContextRateLimited(profileId: string | undefined, until: number): void;
|
|
92
|
+
export declare function recordExtendedContextRateLimited(profileId: string | undefined, until: number, sessionKey?: string): void;
|
|
76
93
|
/**
|
|
77
|
-
* Returns true while
|
|
78
|
-
* dropped on read, so the next request probes [1m] once —
|
|
79
|
-
* has genuinely reset, it simply succeeds.
|
|
94
|
+
* Returns true while [1m] is benched for this profile, or for this session on
|
|
95
|
+
* it. Expired marks are dropped on read, so the next request probes [1m] once —
|
|
96
|
+
* and if the window has genuinely reset, it simply succeeds.
|
|
80
97
|
*/
|
|
81
|
-
export declare function isExtendedContextKnownUnavailable(profileId?: string): boolean;
|
|
82
|
-
/** Clear extended-context benches — for testing only.
|
|
83
|
-
* when no id is
|
|
98
|
+
export declare function isExtendedContextKnownUnavailable(profileId?: string, sessionKey?: string): boolean;
|
|
99
|
+
/** Clear extended-context benches — for testing only. Clearing a profile also
|
|
100
|
+
* clears every session benched under it. Clears everything when no id is
|
|
101
|
+
* given. */
|
|
84
102
|
export declare function resetExtendedContextUnavailable(profileId?: string): void;
|
|
85
103
|
/**
|
|
86
104
|
* Strip the [1m] suffix from a model, returning the base variant.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/proxy/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAA;AAEzG;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AACrD,eAAO,MAAM,oBAAoB,kBAAkB,CAAA;AACnD,eAAO,MAAM,sBAAsB,oBAAoB,CAAA;AACvD,eAAO,MAAM,qBAAqB,qBAAqB,CAAA;AAEvD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAM3F;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAuCD,oEAAoE;AACpE,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAkBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/proxy/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthUsage.d.ts","sourceRoot":"","sources":["../../src/proxy/oauthUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"oauthUsage.d.ts","sourceRoot":"","sources":["../../src/proxy/oauthUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAoD,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AA6CvG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB;qEACiE;IACjE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAE5E,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACnC,wCAAwC;IACxC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;CAC9B;AA+FD;8DAC8D;AAC9D,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAwBzE,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAcD,8CAA8C;AAC9C,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAC9E,IAAI,CAEN;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAEpG;AASD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAajG;AA0GD,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
|
package/dist/proxy/openai.d.ts
CHANGED
|
@@ -121,7 +121,13 @@ export interface AnthropicRequestBody {
|
|
|
121
121
|
export interface AnthropicUsage {
|
|
122
122
|
input_tokens?: number;
|
|
123
123
|
output_tokens?: number;
|
|
124
|
+
cache_read_input_tokens?: number;
|
|
125
|
+
cache_creation_input_tokens?: number;
|
|
124
126
|
}
|
|
127
|
+
/** Merge cumulative usage snapshots without erasing fields omitted by a delta. */
|
|
128
|
+
export declare function mergeAnthropicUsage(current: AnthropicUsage | undefined, update: AnthropicUsage): AnthropicUsage;
|
|
129
|
+
/** Anthropic reports fresh, cache-read, and cache-written input separately. */
|
|
130
|
+
export declare function totalAnthropicInputTokens(usage: AnthropicUsage | undefined): number;
|
|
125
131
|
export interface AnthropicContentBlockText {
|
|
126
132
|
type: "text";
|
|
127
133
|
text?: string;
|
|
@@ -185,6 +191,10 @@ export interface OpenAiStreamChunk {
|
|
|
185
191
|
prompt_tokens: number;
|
|
186
192
|
completion_tokens: number;
|
|
187
193
|
total_tokens: number;
|
|
194
|
+
prompt_tokens_details: {
|
|
195
|
+
cached_tokens: number;
|
|
196
|
+
cache_write_tokens: number;
|
|
197
|
+
};
|
|
188
198
|
};
|
|
189
199
|
}
|
|
190
200
|
export interface OpenAiCompletionFunctionToolCall {
|
|
@@ -219,6 +229,10 @@ export interface OpenAiCompletion {
|
|
|
219
229
|
prompt_tokens: number;
|
|
220
230
|
completion_tokens: number;
|
|
221
231
|
total_tokens: number;
|
|
232
|
+
prompt_tokens_details: {
|
|
233
|
+
cached_tokens: number;
|
|
234
|
+
cache_write_tokens: number;
|
|
235
|
+
};
|
|
222
236
|
};
|
|
223
237
|
}
|
|
224
238
|
/** A single capability flag, matching the Anthropic Models API. */
|
|
@@ -327,6 +341,7 @@ export interface AnthropicSseEvent {
|
|
|
327
341
|
} | AnthropicToolUseBlock;
|
|
328
342
|
message?: {
|
|
329
343
|
id?: string;
|
|
344
|
+
usage?: AnthropicUsage;
|
|
330
345
|
};
|
|
331
346
|
usage?: AnthropicUsage;
|
|
332
347
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/proxy/openai.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/proxy/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* NOTE: agent-specific (Codex). Kept isolated per ARCHITECTURE.md — this
|
|
18
18
|
* module owns the Responses wire format; no Responses logic leaks elsewhere.
|
|
19
19
|
*/
|
|
20
|
-
import type { AnthropicRequestBody } from "./openai";
|
|
20
|
+
import type { AnthropicRequestBody, AnthropicUsage } from "./openai";
|
|
21
21
|
interface ResponsesContentPart {
|
|
22
22
|
type: "input_text" | "output_text" | "input_image" | string;
|
|
23
23
|
text?: string;
|
|
@@ -92,10 +92,7 @@ export declare function reasoningRequested(body: ResponsesRequest): boolean;
|
|
|
92
92
|
interface AnthropicResponseLike {
|
|
93
93
|
content?: Array<Record<string, unknown>>;
|
|
94
94
|
stop_reason?: string;
|
|
95
|
-
usage?:
|
|
96
|
-
input_tokens?: number;
|
|
97
|
-
output_tokens?: number;
|
|
98
|
-
};
|
|
95
|
+
usage?: AnthropicUsage;
|
|
99
96
|
}
|
|
100
97
|
/**
|
|
101
98
|
* Assemble a complete Responses `response` object from an Anthropic response.
|
|
@@ -108,9 +105,7 @@ export interface AnthropicSseEvent {
|
|
|
108
105
|
index?: number;
|
|
109
106
|
message?: {
|
|
110
107
|
id?: string;
|
|
111
|
-
usage?:
|
|
112
|
-
input_tokens?: number;
|
|
113
|
-
};
|
|
108
|
+
usage?: AnthropicUsage;
|
|
114
109
|
};
|
|
115
110
|
content_block?: {
|
|
116
111
|
type?: string;
|
|
@@ -125,9 +120,7 @@ export interface AnthropicSseEvent {
|
|
|
125
120
|
thinking?: string;
|
|
126
121
|
stop_reason?: string;
|
|
127
122
|
};
|
|
128
|
-
usage?:
|
|
129
|
-
output_tokens?: number;
|
|
130
|
-
};
|
|
123
|
+
usage?: AnthropicUsage;
|
|
131
124
|
}
|
|
132
125
|
export interface ResponsesSseEmission {
|
|
133
126
|
event: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiResponses.d.ts","sourceRoot":"","sources":["../../src/proxy/openaiResponses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,oBAAoB,
|
|
1
|
+
{"version":3,"file":"openaiResponses.d.ts","sourceRoot":"","sources":["../../src/proxy/openaiResponses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Retry-After` computation for the throttle-shaped responses Meridian returns.
|
|
3
|
+
*
|
|
4
|
+
* Pure leaf module — no I/O, no state, no imports from `server.ts` or
|
|
5
|
+
* `session/`. Everything here is a function of its arguments.
|
|
6
|
+
*
|
|
7
|
+
* Why it exists: a harness that runs N concurrent children against one account
|
|
8
|
+
* has nothing to coordinate against when every 429 arrives bare. Each child
|
|
9
|
+
* backs off on its own schedule, they all wake together, and the account is
|
|
10
|
+
* re-hammered at the exact moment the window is still spent. A single number on
|
|
11
|
+
* the response is what turns N independent retry loops into one.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Overload is a transient upstream condition measured in seconds, not a spent
|
|
15
|
+
* quota window. A long hint here would idle a client through a blip that has
|
|
16
|
+
* already cleared.
|
|
17
|
+
*/
|
|
18
|
+
export declare const OVERLOADED_RETRY_AFTER_SECONDS = 5;
|
|
19
|
+
/**
|
|
20
|
+
* Fallback for a rate limit whose reset we cannot name. Deliberately
|
|
21
|
+
* conservative: too short re-hammers a spent window, and the cost of being a
|
|
22
|
+
* little long is one idle minute on a request that was already refused.
|
|
23
|
+
*/
|
|
24
|
+
export declare const RATE_LIMIT_DEFAULT_RETRY_AFTER_SECONDS = 60;
|
|
25
|
+
/** Never emit less than a second — `Retry-After: 0` is the bare-429 behavior
|
|
26
|
+
* this module exists to replace. */
|
|
27
|
+
export declare const RETRY_AFTER_MIN_SECONDS = 1;
|
|
28
|
+
/** A weekly cap can reset days out. Clients treat a huge `Retry-After` as
|
|
29
|
+
* "never", so bound it and let them re-probe; the account state is in
|
|
30
|
+
* `/v1/usage/quota` for anything that needs the real boundary. */
|
|
31
|
+
export declare const RETRY_AFTER_MAX_SECONDS: number;
|
|
32
|
+
/**
|
|
33
|
+
* Parse an upstream `Retry-After` header value into milliseconds.
|
|
34
|
+
*
|
|
35
|
+
* Accepts both RFC 9110 forms: delta-seconds and an HTTP-date. Returns null
|
|
36
|
+
* when the value is absent or unparseable, so callers can fall through to a
|
|
37
|
+
* computed hint rather than inventing one from `NaN`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseRetryAfterMs(raw: string | null | undefined, now?: number): number | null;
|
|
40
|
+
/**
|
|
41
|
+
* Pull a retry hint out of raw upstream error text.
|
|
42
|
+
*
|
|
43
|
+
* The `/v1/messages` path talks to the Claude CLI subprocess, which surfaces
|
|
44
|
+
* the API's error as a string rather than a response object — so when upstream
|
|
45
|
+
* *did* say how long to wait, the only place that number survives is inside the
|
|
46
|
+
* message. Matches the JSON-ish and header-ish spellings the CLI has been
|
|
47
|
+
* observed to echo (`"retry-after": 30`, `retry_after=30`, `Retry-After: 30`).
|
|
48
|
+
*
|
|
49
|
+
* Deliberately narrow: only a bare integer count of seconds directly attached
|
|
50
|
+
* to a retry-after key. Anything looser starts matching line numbers and
|
|
51
|
+
* unrelated digits, which is how a wrong hint would reach every client.
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractRetryAfterSeconds(errMsg: string | null | undefined): number | null;
|
|
54
|
+
export interface RetryAfterInput {
|
|
55
|
+
/** HTTP status Meridian is about to return. */
|
|
56
|
+
status: number;
|
|
57
|
+
/** Verbatim upstream `Retry-After` header value, when one was observed. */
|
|
58
|
+
upstreamRetryAfter?: string | null;
|
|
59
|
+
/** Raw upstream error text, scanned for an embedded retry hint. */
|
|
60
|
+
errorMessage?: string | null;
|
|
61
|
+
/** Epoch ms at which the exhausted window is known to reset. Null when
|
|
62
|
+
* nothing proves a window is actually spent — a healthy account always has
|
|
63
|
+
* a future five-hour boundary, and that boundary is not a wait instruction. */
|
|
64
|
+
resetAtMs?: number | null;
|
|
65
|
+
now?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Seconds to put in `Retry-After`, or null when the status does not take one.
|
|
69
|
+
*
|
|
70
|
+
* Precedence is "most authoritative first": what upstream said, then what
|
|
71
|
+
* upstream's error text said, then the account's own observed reset, then a
|
|
72
|
+
* per-status constant. Every branch is clamped, so no source can produce a 0
|
|
73
|
+
* (retry immediately, the bug) or a multi-day value (retry never).
|
|
74
|
+
*/
|
|
75
|
+
export declare function retryAfterSeconds(input: RetryAfterInput): number | null;
|
|
76
|
+
/**
|
|
77
|
+
* Header bag to spread into a `Response`. Empty when there is nothing to say,
|
|
78
|
+
* so call sites stay a single spread rather than a conditional.
|
|
79
|
+
*/
|
|
80
|
+
export declare function retryAfterHeaders(seconds: number | null): Record<string, string>;
|
|
81
|
+
/**
|
|
82
|
+
* The same hint as a body field, for SSE.
|
|
83
|
+
*
|
|
84
|
+
* A streaming turn's headers are on the wire long before the rate limit that
|
|
85
|
+
* kills it is known, so the header cannot carry this and the error frame is the
|
|
86
|
+
* only channel left. Emitted on the JSON path too so one field name means one
|
|
87
|
+
* thing on both.
|
|
88
|
+
*/
|
|
89
|
+
export declare function retryAfterBodyFields(seconds: number | null): Record<string, number>;
|
|
90
|
+
//# sourceMappingURL=retryAfter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retryAfter.d.ts","sourceRoot":"","sources":["../../src/proxy/retryAfter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,KAAK,CAAA;AAExD;qCACqC;AACrC,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;mEAEmE;AACnE,eAAO,MAAM,uBAAuB,QAAe,CAAA;AAEnD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAMzG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;oFAEgF;IAChF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAiBvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnF"}
|
package/dist/proxy/routing.d.ts
CHANGED
|
@@ -160,4 +160,15 @@ export interface CooldownWindow {
|
|
|
160
160
|
* Pure. Never returns a time in the past.
|
|
161
161
|
*/
|
|
162
162
|
export declare function resolveCooldownUntil(windows: readonly CooldownWindow[], now: number, defaultMs: number): number;
|
|
163
|
+
/**
|
|
164
|
+
* The capped reset of the longest genuinely exhausted window, or null when
|
|
165
|
+
* nothing here proves a window is spent.
|
|
166
|
+
*
|
|
167
|
+
* Split out of `resolveCooldownUntil` so a caller can tell "the account told us
|
|
168
|
+
* when it frees up" from "we invented a conservative default" — a distinction
|
|
169
|
+
* `resolveCooldownUntil` erases by design. `Retry-After` needs it (#901): a
|
|
170
|
+
* real reset is worth sending, a fabricated one dressed as an observation is
|
|
171
|
+
* not.
|
|
172
|
+
*/
|
|
173
|
+
export declare function findCooldownReset(windows: readonly CooldownWindow[], now: number): number | null;
|
|
163
174
|
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/proxy/routing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/proxy/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAGvD,YAAY,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAyEnG,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EAIpB,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EAKL,iBAAiB,EACjB,mBAAmB,EAIpB,MAAM,iBAAiB,CAAA;AA0CxB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,CAAA;AAkb7B,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAk4NhF;AAWD,wBAAgB,gCAAgC,IAAI,IAAI,CAavD;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAuLhG"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live session-tree registry: parent→child linkage for in-flight requests.
|
|
3
|
+
*
|
|
4
|
+
* Cancellation in meridian is per-HTTP-request — `requestAbort.ts` forwards one
|
|
5
|
+
* socket's abort into that request's SDK abort controller. A harness that spawns
|
|
6
|
+
* subagents (Prime Agent's RLM children) sends each child as an INDEPENDENT
|
|
7
|
+
* request on its own session key, so a user cancelling the parent left every
|
|
8
|
+
* child running: holding an SDK permit, holding its turn lease, and billing the
|
|
9
|
+
* subscription until its own socket closed or the lease watchdog tripped.
|
|
10
|
+
*
|
|
11
|
+
* This registry is the missing link. A client that knows its own tree stamps the
|
|
12
|
+
* immediate parent alongside the child's session id (`metadata.user_id` →
|
|
13
|
+
* `{ session_id, parent_session_id }`, read by `adapters/claudecode.ts`), and
|
|
14
|
+
* the server registers that linkage for the lifetime of the request.
|
|
15
|
+
*
|
|
16
|
+
* Three properties are deliberate:
|
|
17
|
+
*
|
|
18
|
+
* 1. **Live requests only.** An entry exists between "request admitted" and
|
|
19
|
+
* "request settled", nothing longer. There is no persistent tree: a session
|
|
20
|
+
* that was seen once but has no request in flight is not a cancellation
|
|
21
|
+
* target, because there is nothing to cancel. That keeps the registry
|
|
22
|
+
* bounded by concurrency rather than by conversation history.
|
|
23
|
+
* 2. **Abort, not completion.** Only an actual abort of a node propagates. A
|
|
24
|
+
* parent turn that finishes normally leaves its children alone — a child
|
|
25
|
+
* routinely outlives the parent turn that spawned it.
|
|
26
|
+
* 3. **Self-gating.** Propagation can only reach a request that declared a
|
|
27
|
+
* parent, so a client that does not stamp linkage is unaffected with no
|
|
28
|
+
* config flag to set.
|
|
29
|
+
*
|
|
30
|
+
* Pure bookkeeping: no HTTP, no I/O, no logging. The caller supplies the abort
|
|
31
|
+
* handle and owns the eviction/telemetry discipline that follows an abort.
|
|
32
|
+
*/
|
|
33
|
+
/** Handle returned by `register`; removes the entry when the request settles. */
|
|
34
|
+
export interface SessionTreeRegistration {
|
|
35
|
+
/** Remove this request from the registry. Idempotent. */
|
|
36
|
+
release(): void;
|
|
37
|
+
}
|
|
38
|
+
export interface SessionTreeEntry {
|
|
39
|
+
/** Request id, for logging and for the cancellation result. */
|
|
40
|
+
readonly requestId: string;
|
|
41
|
+
/** This request's client-session key, exactly as the adapter derived it. */
|
|
42
|
+
readonly sessionKey: string;
|
|
43
|
+
/** The IMMEDIATE parent's session key, when the client stamped linkage. */
|
|
44
|
+
readonly parentKey?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Abort this request. Must route through the same abort path a client
|
|
47
|
+
* disconnect uses, so the eviction, permit release, and lease release that
|
|
48
|
+
* follow are the existing ones rather than a parallel implementation.
|
|
49
|
+
*/
|
|
50
|
+
readonly abort: (reason?: unknown) => void;
|
|
51
|
+
}
|
|
52
|
+
export interface SessionTreeStats {
|
|
53
|
+
/** Live requests currently registered. */
|
|
54
|
+
tracked: number;
|
|
55
|
+
/** Of those, how many declared a parent (i.e. are cancellation targets). */
|
|
56
|
+
linked: number;
|
|
57
|
+
/** Cancellations that aborted at least one live request, since start. */
|
|
58
|
+
propagations: number;
|
|
59
|
+
/** Descendant requests aborted by an ancestor's cancellation, since start. */
|
|
60
|
+
cancelledDescendants: number;
|
|
61
|
+
}
|
|
62
|
+
/** What a cancellation actually reached. Empty when the subtree was idle. */
|
|
63
|
+
export interface SessionTreeCancellation {
|
|
64
|
+
/** Session keys whose live requests were aborted, nearest-first. */
|
|
65
|
+
readonly keys: readonly string[];
|
|
66
|
+
/** Request ids aborted, in the order they were aborted. */
|
|
67
|
+
readonly requestIds: readonly string[];
|
|
68
|
+
}
|
|
69
|
+
/** Shorten a session key for logs. Keys can be full UUIDs or client-chosen. */
|
|
70
|
+
export declare function truncateSessionKey(key: string, length?: number): string;
|
|
71
|
+
/**
|
|
72
|
+
* Registry of live requests and their declared parent links.
|
|
73
|
+
*
|
|
74
|
+
* Keyed by an internal token rather than by request id: `x-request-id` is
|
|
75
|
+
* client-supplied, so two concurrent requests can legitimately arrive carrying
|
|
76
|
+
* the same one, and a colliding key would silently unregister the wrong entry.
|
|
77
|
+
*/
|
|
78
|
+
export declare class SessionTreeRegistry {
|
|
79
|
+
private nextToken;
|
|
80
|
+
private readonly entries;
|
|
81
|
+
/** parentKey → tokens of live children. Index for the subtree walk. */
|
|
82
|
+
private readonly childrenByParent;
|
|
83
|
+
private propagations;
|
|
84
|
+
private cancelledDescendants;
|
|
85
|
+
register(entry: SessionTreeEntry): SessionTreeRegistration;
|
|
86
|
+
/** Live requests whose ancestry chain reaches `sessionKey`, nearest first. */
|
|
87
|
+
descendantsOf(sessionKey: string): SessionTreeEntry[];
|
|
88
|
+
/** Live requests running under `sessionKey` itself. */
|
|
89
|
+
liveRequestsFor(sessionKey: string): SessionTreeEntry[];
|
|
90
|
+
/**
|
|
91
|
+
* Abort every live request below `sessionKey`, transitively.
|
|
92
|
+
*
|
|
93
|
+
* The origin request is left alone: it is already being torn down by whatever
|
|
94
|
+
* triggered this, and aborting it a second time would be a no-op at best.
|
|
95
|
+
*/
|
|
96
|
+
cancelDescendants(sessionKey: string, reason?: unknown): SessionTreeCancellation;
|
|
97
|
+
/** Abort live requests for `sessionKey` AND everything below it. */
|
|
98
|
+
cancelSubtree(sessionKey: string, reason?: unknown): SessionTreeCancellation;
|
|
99
|
+
private cancel;
|
|
100
|
+
stats(): SessionTreeStats;
|
|
101
|
+
/** Reset process-scoped state between tests. */
|
|
102
|
+
clear(): void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Process-wide registry.
|
|
106
|
+
*
|
|
107
|
+
* Session keys are a process-wide namespace (`processSessionTurns` serializes
|
|
108
|
+
* turns on the same basis), and a parent and its child can be served by
|
|
109
|
+
* different ProxyServer instances in one process, so per-instance registries
|
|
110
|
+
* would lose exactly the links that matter.
|
|
111
|
+
*/
|
|
112
|
+
export declare const processSessionTree: SessionTreeRegistry;
|
|
113
|
+
//# sourceMappingURL=sessionTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTree.d.ts","sourceRoot":"","sources":["../../src/proxy/sessionTree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,iFAAiF;AACjF,MAAM,WAAW,uBAAuB;IACtC,yDAAyD;IACzD,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAA;IACpB,8EAA8E;IAC9E,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAcD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAElE;AAQD;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAClE,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,oBAAoB,CAAI;IAEhC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,uBAAuB;IA+B1D,8EAA8E;IAC9E,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAyBrD,uDAAuD;IACvD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAQvD;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,uBAAuB;IAIhF,oEAAoE;IACpE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,uBAAuB;IAI5E,OAAO,CAAC,MAAM;IA2Bd,KAAK,IAAI,gBAAgB;IAazB,gDAAgD;IAChD,KAAK,IAAI,IAAI;CAMd;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,qBAA4B,CAAA"}
|