@rynfar/meridian 1.64.0 → 1.65.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/dist/{cli-4ghkaajs.js → cli-7cts44b5.js} +1167 -67
- package/dist/{cli-pbvm9kc2.js → cli-n8t34zmq.js} +203 -24
- package/dist/{cli-m0p2bc8v.js → cli-pdpry6q0.js} +16 -3
- package/dist/cli.js +6 -6
- package/dist/meridian-v2.js +241 -33
- package/dist/{profiles-0pyeqayw.js → profiles-4ajzjqhm.js} +1 -1
- package/dist/proxy/adapter.d.ts +16 -0
- package/dist/proxy/adapter.d.ts.map +1 -1
- package/dist/proxy/adapters/opencode.d.ts.map +1 -1
- package/dist/proxy/errors.d.ts.map +1 -1
- package/dist/proxy/priorityAttestation.d.ts +35 -0
- package/dist/proxy/priorityAttestation.d.ts.map +1 -0
- package/dist/proxy/routing.d.ts +16 -2
- package/dist/proxy/routing.d.ts.map +1 -1
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/proxy/session/cache.d.ts +25 -2
- package/dist/proxy/session/cache.d.ts.map +1 -1
- package/dist/proxy/session/lineage.d.ts +1 -1
- package/dist/proxy/session/lineage.d.ts.map +1 -1
- package/dist/proxy/session/turnCoordinator.d.ts +2 -0
- package/dist/proxy/session/turnCoordinator.d.ts.map +1 -1
- package/dist/proxy/sessionStore.d.ts +133 -0
- package/dist/proxy/sessionStore.d.ts.map +1 -1
- package/dist/proxy/settings.d.ts +2 -0
- package/dist/proxy/settings.d.ts.map +1 -1
- package/dist/proxy/setup.d.ts.map +1 -1
- package/dist/server.js +3 -3
- package/dist/{setup-4v3zg3c0.js → setup-8fwgwhqh.js} +1 -1
- package/package.json +2 -2
- package/plugin/meridian-v2.ts +185 -40
- package/plugin/meridian.ts +125 -20
- package/plugin/priority-attestation.ts +150 -0
package/dist/meridian-v2.js
CHANGED
|
@@ -5,6 +5,114 @@ function define(plugin) {
|
|
|
5
5
|
return plugin;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
// plugin/priority-attestation.ts
|
|
9
|
+
import { createHash, createHmac } from "node:crypto";
|
|
10
|
+
import { readFileSync } from "node:fs";
|
|
11
|
+
import { homedir } from "node:os";
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
var PRIORITY_ATTESTATION_HEADER = "x-meridian-opencode-turn";
|
|
14
|
+
var PRIORITY_ATTESTATION_KEY_ENV = "MERIDIAN_OPENCODE_ATTESTATION_KEY";
|
|
15
|
+
var PRIORITY_ATTESTATION_KEY_FILE = "opencode-turn.key";
|
|
16
|
+
var TOKEN_PREFIX = "v1";
|
|
17
|
+
var MAC_DOMAIN = "meridian.opencode.turn.v1\x00";
|
|
18
|
+
var TURN_DOMAIN = "meridian.opencode.human.v1\x00";
|
|
19
|
+
var MAX_HEADER_BYTES = 768;
|
|
20
|
+
var MAX_PAYLOAD_BYTES = 384;
|
|
21
|
+
var TURN_DIGEST_PATTERN = /^[A-Za-z0-9_-]{43}$/;
|
|
22
|
+
var SAFE_ID_PATTERN = /^[A-Za-z0-9._:-]{1,128}$/;
|
|
23
|
+
function configDirectory() {
|
|
24
|
+
return process.env.MERIDIAN_CONFIG_DIR ?? join(homedir(), ".config", "meridian");
|
|
25
|
+
}
|
|
26
|
+
function priorityAttestationKeyPath() {
|
|
27
|
+
return join(configDirectory(), PRIORITY_ATTESTATION_KEY_FILE);
|
|
28
|
+
}
|
|
29
|
+
function isSafeAgentId(value) {
|
|
30
|
+
return value.length >= 1 && value.length <= 64 && value.trim() === value && /^[\x20-\x7E]+$/.test(value);
|
|
31
|
+
}
|
|
32
|
+
function decodeCanonicalBase64Url(raw) {
|
|
33
|
+
if (!/^[A-Za-z0-9_-]+$/.test(raw))
|
|
34
|
+
return;
|
|
35
|
+
const decoded = Buffer.from(raw, "base64url");
|
|
36
|
+
return decoded.toString("base64url") === raw ? decoded : undefined;
|
|
37
|
+
}
|
|
38
|
+
function decodePriorityAttestationKey(raw) {
|
|
39
|
+
if (raw === undefined)
|
|
40
|
+
return;
|
|
41
|
+
const normalized = raw.trim();
|
|
42
|
+
const decoded = decodeCanonicalBase64Url(normalized);
|
|
43
|
+
return decoded?.length === 32 ? decoded : undefined;
|
|
44
|
+
}
|
|
45
|
+
function loadPriorityAttestationKey() {
|
|
46
|
+
const fromEnv = process.env[PRIORITY_ATTESTATION_KEY_ENV];
|
|
47
|
+
if (fromEnv !== undefined)
|
|
48
|
+
return decodePriorityAttestationKey(fromEnv);
|
|
49
|
+
try {
|
|
50
|
+
return decodePriorityAttestationKey(readFileSync(priorityAttestationKeyPath(), "utf8"));
|
|
51
|
+
} catch {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function computePriorityTurnDigest(input) {
|
|
56
|
+
if (!SAFE_ID_PATTERN.test(input.sessionId) || !SAFE_ID_PATTERN.test(input.humanMessageId)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
return createHash("sha256").update(TURN_DOMAIN).update(input.generation).update("\x00").update(input.sessionId).update("\x00").update(input.humanMessageId).digest("base64url");
|
|
60
|
+
}
|
|
61
|
+
function createPriorityAttestation(input, key = loadPriorityAttestationKey() ?? Buffer.alloc(0)) {
|
|
62
|
+
if (key.length !== 32)
|
|
63
|
+
return;
|
|
64
|
+
if (!SAFE_ID_PATTERN.test(input.sessionId) || !isSafeAgentId(input.agentId))
|
|
65
|
+
return;
|
|
66
|
+
const turnDigest = computePriorityTurnDigest(input);
|
|
67
|
+
if (!turnDigest || !TURN_DIGEST_PATTERN.test(turnDigest))
|
|
68
|
+
return;
|
|
69
|
+
const issuedAt = input.issuedAt;
|
|
70
|
+
if (!Number.isSafeInteger(issuedAt) || issuedAt < 0)
|
|
71
|
+
return;
|
|
72
|
+
const payload = JSON.stringify({
|
|
73
|
+
v: 1,
|
|
74
|
+
g: input.generation,
|
|
75
|
+
s: input.sessionId,
|
|
76
|
+
a: input.agentId,
|
|
77
|
+
t: turnDigest,
|
|
78
|
+
iat: issuedAt
|
|
79
|
+
});
|
|
80
|
+
if (Buffer.byteLength(payload) > MAX_PAYLOAD_BYTES)
|
|
81
|
+
return;
|
|
82
|
+
const encodedPayload = Buffer.from(payload).toString("base64url");
|
|
83
|
+
const mac = createHmac("sha256", key).update(MAC_DOMAIN).update(payload).digest("base64url");
|
|
84
|
+
const token = `${TOKEN_PREFIX}.${encodedPayload}.${mac}`;
|
|
85
|
+
return Buffer.byteLength(token) <= MAX_HEADER_BYTES ? token : undefined;
|
|
86
|
+
}
|
|
87
|
+
function deleteHeader(headers, name) {
|
|
88
|
+
if (headers instanceof Headers) {
|
|
89
|
+
headers.delete(name);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const lower = name.toLowerCase();
|
|
93
|
+
for (const key of Object.keys(headers)) {
|
|
94
|
+
if (key.toLowerCase() === lower)
|
|
95
|
+
delete headers[key];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function getHeader(headers, name) {
|
|
99
|
+
if (headers instanceof Headers)
|
|
100
|
+
return headers.get(name) ?? undefined;
|
|
101
|
+
const lower = name.toLowerCase();
|
|
102
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
103
|
+
if (key.toLowerCase() === lower)
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
function setHeader(headers, name, value) {
|
|
109
|
+
deleteHeader(headers, name);
|
|
110
|
+
if (headers instanceof Headers)
|
|
111
|
+
headers.set(name, value);
|
|
112
|
+
else
|
|
113
|
+
headers[name] = value;
|
|
114
|
+
}
|
|
115
|
+
|
|
8
116
|
// plugin/meridian-v2.ts
|
|
9
117
|
var SUPPORTED_OPENCODE_V2_VERSION = "0.0.0-beta-18314";
|
|
10
118
|
var MERIDIAN_PROVIDERS = new Set(["anthropic", "meridian"]);
|
|
@@ -19,7 +127,8 @@ var SESSION_AFFINITY_HEADERS = [
|
|
|
19
127
|
var MERIDIAN_CONTROL_HEADERS = [
|
|
20
128
|
"x-meridian-source",
|
|
21
129
|
"x-opencode-agent-name",
|
|
22
|
-
"x-opencode-agent-mode"
|
|
130
|
+
"x-opencode-agent-mode",
|
|
131
|
+
PRIORITY_ATTESTATION_HEADER
|
|
23
132
|
];
|
|
24
133
|
var BUILTIN_AGENT_TRAITS = {
|
|
25
134
|
build: { mode: "primary", hidden: false },
|
|
@@ -33,24 +142,6 @@ var BUILTIN_AGENT_TRAITS = {
|
|
|
33
142
|
function fallbackAgentTraits(agent) {
|
|
34
143
|
return BUILTIN_AGENT_TRAITS[agent] ?? { mode: "primary", hidden: false };
|
|
35
144
|
}
|
|
36
|
-
function deleteHeader(headers, name) {
|
|
37
|
-
if (headers instanceof Headers) {
|
|
38
|
-
headers.delete(name);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const lower = name.toLowerCase();
|
|
42
|
-
for (const key of Object.keys(headers)) {
|
|
43
|
-
if (key.toLowerCase() === lower)
|
|
44
|
-
delete headers[key];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function setHeader(headers, name, value) {
|
|
48
|
-
deleteHeader(headers, name);
|
|
49
|
-
if (headers instanceof Headers)
|
|
50
|
-
headers.set(name, value);
|
|
51
|
-
else
|
|
52
|
-
headers[name] = value;
|
|
53
|
-
}
|
|
54
145
|
function safeAgentName(agent) {
|
|
55
146
|
return agent.replace(/[^\x20-\x7E]/g, "").trim() || "unknown";
|
|
56
147
|
}
|
|
@@ -78,35 +169,135 @@ function applyMeridianV2Headers(headers, input) {
|
|
|
78
169
|
setHeader(headers, "x-opencode-agent-name", name);
|
|
79
170
|
setHeader(headers, "x-opencode-agent-mode", internalMode);
|
|
80
171
|
}
|
|
172
|
+
var INTERNAL_ROUTING_AGENT_IDS = new Set(["title", "summary", "compaction"]);
|
|
173
|
+
var AGENT_CACHE_MAX = 256;
|
|
174
|
+
var AGENT_CACHE_TTL_MS = 5000;
|
|
175
|
+
var LOOKUP_TIMEOUT_MS = 250;
|
|
176
|
+
var MAX_CONTEXT_ENTRIES = 2048;
|
|
177
|
+
var SAFE_ID_PATTERN2 = /^[A-Za-z0-9._:-]{1,128}$/;
|
|
178
|
+
function isRecord(value) {
|
|
179
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
180
|
+
}
|
|
181
|
+
async function withTimeout(pending, timeoutMs) {
|
|
182
|
+
let timer;
|
|
183
|
+
const timedOut = new Promise((resolve) => {
|
|
184
|
+
timer = setTimeout(() => resolve(undefined), timeoutMs);
|
|
185
|
+
timer.unref?.();
|
|
186
|
+
});
|
|
187
|
+
try {
|
|
188
|
+
return await Promise.race([pending, timedOut]);
|
|
189
|
+
} finally {
|
|
190
|
+
if (timer)
|
|
191
|
+
clearTimeout(timer);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function isRootV2Session(value, sessionID) {
|
|
195
|
+
return isRecord(value) && value.id === sessionID && value.parentID === undefined && value.fork === undefined;
|
|
196
|
+
}
|
|
197
|
+
function findLatestV2HumanTurn(value) {
|
|
198
|
+
if (!Array.isArray(value) || value.length === 0 || value.length > MAX_CONTEXT_ENTRIES)
|
|
199
|
+
return;
|
|
200
|
+
for (let index = value.length - 1;index >= 0; index -= 1) {
|
|
201
|
+
const message = value[index];
|
|
202
|
+
if (!isRecord(message) || typeof message.type !== "string")
|
|
203
|
+
return;
|
|
204
|
+
if (message.type === "assistant" || message.type === "agent-switched" || message.type === "model-switched" || message.type === "location-switched") {
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (message.type !== "user" || typeof message.id !== "string" || !SAFE_ID_PATTERN2.test(message.id)) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const time = isRecord(message.time) ? message.time : undefined;
|
|
211
|
+
const createdAt = time?.created;
|
|
212
|
+
if (typeof createdAt !== "number" || !Number.isSafeInteger(createdAt) || createdAt < 0)
|
|
213
|
+
return;
|
|
214
|
+
return { id: message.id, issuedAt: Math.floor(createdAt / 1000) };
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
function findLatestV2HumanMessageId(value) {
|
|
219
|
+
return findLatestV2HumanTurn(value)?.id;
|
|
220
|
+
}
|
|
81
221
|
var MeridianV2Plugin = define({
|
|
82
222
|
id: "meridian",
|
|
83
223
|
setup: async (context) => {
|
|
84
224
|
const traitsByAgent = new Map;
|
|
85
225
|
const registered = [];
|
|
86
|
-
const resolveAgentTraits = (agent) => {
|
|
226
|
+
const resolveAgentTraits = (agent, refresh = false) => {
|
|
87
227
|
const cached = traitsByAgent.get(agent);
|
|
88
|
-
if (cached && cached.expiresAt > Date.now())
|
|
228
|
+
if (!refresh && cached && cached.expiresAt > Date.now())
|
|
89
229
|
return cached.pending;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
230
|
+
if (refresh)
|
|
231
|
+
traitsByAgent.delete(agent);
|
|
232
|
+
const request = Symbol(agent);
|
|
233
|
+
const pending = (async () => {
|
|
234
|
+
const controller = new AbortController;
|
|
235
|
+
try {
|
|
236
|
+
const result = await withTimeout(context.agent.get({ agentID: agent }, { signal: controller.signal }), LOOKUP_TIMEOUT_MS);
|
|
237
|
+
const data = result?.data;
|
|
238
|
+
if (!data || data.mode !== "primary" && data.mode !== "subagent" && data.mode !== "all" || typeof data.hidden !== "boolean") {
|
|
239
|
+
if (traitsByAgent.get(agent)?.request === request)
|
|
240
|
+
traitsByAgent.delete(agent);
|
|
241
|
+
return { traits: fallbackAgentTraits(agent), exactMode: undefined, authoritative: false };
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
traits: {
|
|
245
|
+
mode: data.mode === "subagent" ? "subagent" : "primary",
|
|
246
|
+
hidden: data.hidden
|
|
247
|
+
},
|
|
248
|
+
exactMode: data.mode,
|
|
249
|
+
authoritative: true
|
|
250
|
+
};
|
|
251
|
+
} catch {
|
|
252
|
+
if (traitsByAgent.get(agent)?.request === request)
|
|
253
|
+
traitsByAgent.delete(agent);
|
|
254
|
+
return { traits: fallbackAgentTraits(agent), exactMode: undefined, authoritative: false };
|
|
255
|
+
} finally {
|
|
256
|
+
controller.abort();
|
|
257
|
+
}
|
|
258
|
+
})();
|
|
259
|
+
traitsByAgent.delete(agent);
|
|
260
|
+
traitsByAgent.set(agent, { request, expiresAt: Date.now() + AGENT_CACHE_TTL_MS, pending });
|
|
261
|
+
while (traitsByAgent.size > AGENT_CACHE_MAX) {
|
|
262
|
+
const oldest = traitsByAgent.keys().next().value;
|
|
263
|
+
if (oldest === undefined)
|
|
264
|
+
break;
|
|
265
|
+
traitsByAgent.delete(oldest);
|
|
266
|
+
}
|
|
99
267
|
return pending;
|
|
100
268
|
};
|
|
101
|
-
const apply = async (input, headers) => {
|
|
269
|
+
const apply = async (input, headers, refreshTraits = false) => {
|
|
102
270
|
if (!MERIDIAN_PROVIDERS.has(String(input.model.providerID)))
|
|
103
271
|
return;
|
|
104
272
|
const agent = String(input.agent);
|
|
273
|
+
const metadata = await resolveAgentTraits(agent, refreshTraits);
|
|
105
274
|
applyMeridianV2Headers(headers, {
|
|
106
275
|
sessionID: String(input.sessionID),
|
|
107
276
|
agent,
|
|
108
|
-
traits:
|
|
277
|
+
traits: metadata.traits
|
|
109
278
|
});
|
|
279
|
+
return metadata;
|
|
280
|
+
};
|
|
281
|
+
const resolveHumanTurn = async (input, headers, metadata) => {
|
|
282
|
+
const sessionID = String(input.sessionID);
|
|
283
|
+
const agent = String(input.agent);
|
|
284
|
+
if (!metadata.authoritative || metadata.exactMode !== "primary" || metadata.traits.hidden || INTERNAL_ROUTING_AGENT_IDS.has(agent) || safeAgentName(agent) !== agent || getHeader(headers, "x-meridian-profile") !== undefined) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const controller = new AbortController;
|
|
288
|
+
try {
|
|
289
|
+
const result = await withTimeout(Promise.all([
|
|
290
|
+
context.session.get({ sessionID }, { signal: controller.signal }),
|
|
291
|
+
context.session.context({ sessionID }, { signal: controller.signal })
|
|
292
|
+
]), LOOKUP_TIMEOUT_MS);
|
|
293
|
+
if (!result || !isRootV2Session(result[0], sessionID))
|
|
294
|
+
return;
|
|
295
|
+
return findLatestV2HumanTurn(result[1]);
|
|
296
|
+
} catch {
|
|
297
|
+
return;
|
|
298
|
+
} finally {
|
|
299
|
+
controller.abort();
|
|
300
|
+
}
|
|
110
301
|
};
|
|
111
302
|
try {
|
|
112
303
|
for (const providerID of MERIDIAN_PROVIDERS) {
|
|
@@ -114,7 +305,21 @@ var MeridianV2Plugin = define({
|
|
|
114
305
|
await apply(input, input.headers);
|
|
115
306
|
}, { providerID }));
|
|
116
307
|
registered.push(await context.session.hook("http.request", async (input) => {
|
|
117
|
-
await apply(input, input.request.headers);
|
|
308
|
+
const metadata = await apply(input, input.request.headers, true);
|
|
309
|
+
if (!metadata)
|
|
310
|
+
return;
|
|
311
|
+
const humanTurn = await resolveHumanTurn(input, input.request.headers, metadata);
|
|
312
|
+
if (!humanTurn)
|
|
313
|
+
return;
|
|
314
|
+
const token = createPriorityAttestation({
|
|
315
|
+
generation: "oc2b18314",
|
|
316
|
+
sessionId: String(input.sessionID),
|
|
317
|
+
agentId: String(input.agent),
|
|
318
|
+
humanMessageId: humanTurn.id,
|
|
319
|
+
issuedAt: humanTurn.issuedAt
|
|
320
|
+
});
|
|
321
|
+
if (token)
|
|
322
|
+
setHeader(input.request.headers, PRIORITY_ATTESTATION_HEADER, token);
|
|
118
323
|
}, { providerID }));
|
|
119
324
|
}
|
|
120
325
|
} catch (error) {
|
|
@@ -132,6 +337,9 @@ var MeridianV2Plugin = define({
|
|
|
132
337
|
var meridian_v2_default = MeridianV2Plugin;
|
|
133
338
|
export {
|
|
134
339
|
shouldDetachFromParentSession,
|
|
340
|
+
isRootV2Session,
|
|
341
|
+
findLatestV2HumanTurn,
|
|
342
|
+
findLatestV2HumanMessageId,
|
|
135
343
|
fallbackAgentTraits,
|
|
136
344
|
meridian_v2_default as default,
|
|
137
345
|
applyMeridianV2Headers,
|
package/dist/proxy/adapter.d.ts
CHANGED
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Context } from "hono";
|
|
8
8
|
import type { SettingSource } from "@anthropic-ai/claude-agent-sdk";
|
|
9
|
+
export type RoutingTurnIdentity = Readonly<{
|
|
10
|
+
readonly kind: "human";
|
|
11
|
+
/** Fixed-width, session-bound digest of the host's genuine human message ID. */
|
|
12
|
+
readonly turnId: string;
|
|
13
|
+
/** Signed wall-clock issue time used as a durable anti-replay high-water mark. */
|
|
14
|
+
readonly issuedAt: number;
|
|
15
|
+
readonly generation: "opencode-v1" | "opencode-v2-beta-18314";
|
|
16
|
+
}>;
|
|
9
17
|
/**
|
|
10
18
|
* Core identity of an agent — detection, session tracking, CWD extraction.
|
|
11
19
|
* This is the minimal interface for agent recognition. Behavioral customization
|
|
@@ -24,6 +32,14 @@ export interface AgentIdentity {
|
|
|
24
32
|
* details; the proxy uses the normalized value for model-tier selection.
|
|
25
33
|
*/
|
|
26
34
|
getAgentMode?(c: Context, body?: unknown): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Optional trusted identity for a visible human turn.
|
|
37
|
+
*
|
|
38
|
+
* This is deliberately a positive, normalized assertion. Callers must treat
|
|
39
|
+
* undefined as ineligible for user-turn routing changes. An adapter must not
|
|
40
|
+
* return raw client-declared kind/ID headers without authenticating them.
|
|
41
|
+
*/
|
|
42
|
+
getRoutingTurnIdentity?(c: Context, body?: unknown): RoutingTurnIdentity | undefined;
|
|
27
43
|
/**
|
|
28
44
|
* Extract the SDK subprocess working directory from the request body.
|
|
29
45
|
*
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/proxy/adapters/opencode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/proxy/adapters/opencode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAA;AAsCnE,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,GAClD,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAU3C;AAED,eAAO,MAAM,eAAe,EAAE,YAqM7B,CAAA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/proxy/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAc1D;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/proxy/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAc1D;AAsCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAkI7E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM3D;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,iBAAiB,CAAA;AAEtE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAahG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAI3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGxD;AAuBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,IAAI,MAAM,CAEhG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAA;IAC9E,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;wCAEoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAuBD;;;;;;GAMG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IAChC,WAAW,EAAE,OAAO,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;CACrB,GAAG,OAAO,CAYV;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAuDpE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,cAAc,EACjB,GAAG,EAAE;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GACA,MAAM,CAYR"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify and provision OpenCode priority-failback attestations.
|
|
3
|
+
*
|
|
4
|
+
* The OpenCode plugin signs a bounded positive assertion at its final outbound
|
|
5
|
+
* hook. Meridian verifies it before treating a request as a new human turn.
|
|
6
|
+
* Missing or invalid attestations fail closed to normal profile affinity.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PRIORITY_ATTESTATION_HEADER = "x-meridian-opencode-turn";
|
|
9
|
+
export declare const PRIORITY_ATTESTATION_KEY_ENV = "MERIDIAN_OPENCODE_ATTESTATION_KEY";
|
|
10
|
+
export declare const PRIORITY_ATTESTATION_KEY_FILE = "opencode-turn.key";
|
|
11
|
+
export type OpenCodeAttestationGeneration = "oc1" | "oc2b18314";
|
|
12
|
+
export interface VerifiedPriorityAttestation {
|
|
13
|
+
readonly generation: OpenCodeAttestationGeneration;
|
|
14
|
+
readonly sessionId: string;
|
|
15
|
+
readonly agentId: string;
|
|
16
|
+
readonly turnId: string;
|
|
17
|
+
readonly issuedAt: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class InvalidPriorityAttestationKeyError extends Error {
|
|
20
|
+
readonly keyPath: string;
|
|
21
|
+
constructor(keyPath: string);
|
|
22
|
+
}
|
|
23
|
+
export declare function priorityAttestationKeyPath(): string;
|
|
24
|
+
export declare function decodePriorityAttestationKey(raw: string | undefined): Buffer | undefined;
|
|
25
|
+
export declare function loadPriorityAttestationKey(): Buffer | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Ensure setup has a durable 32-byte signing key without ever rotating an
|
|
28
|
+
* existing valid key. An environment key wins and avoids touching disk.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensurePriorityAttestationKey(): {
|
|
31
|
+
readonly key: Buffer;
|
|
32
|
+
readonly path?: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function verifyPriorityAttestation(token: string | undefined, key?: Buffer, nowSeconds?: number): VerifiedPriorityAttestation | undefined;
|
|
35
|
+
//# sourceMappingURL=priorityAttestation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priorityAttestation.d.ts","sourceRoot":"","sources":["../../src/proxy/priorityAttestation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,eAAO,MAAM,2BAA2B,6BAA6B,CAAA;AACrE,eAAO,MAAM,4BAA4B,sCAAsC,CAAA;AAC/E,eAAO,MAAM,6BAA6B,sBAAsB,CAAA;AAWhE,MAAM,MAAM,6BAA6B,GAAG,KAAK,GAAG,WAAW,CAAA;AAE/D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAA;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,kCAAmC,SAAQ,KAAK;aAC/B,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;CAI5C;AAMD,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAQD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIxF;AAED,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAQ/D;AAcD;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAoC/F;AAgDD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,GAAE,MAAwD,EAC7D,UAAU,GAAE,MAAsC,GACjD,2BAA2B,GAAG,SAAS,CAoBzC"}
|
package/dist/proxy/routing.d.ts
CHANGED
|
@@ -22,12 +22,25 @@
|
|
|
22
22
|
* design — see their own doc comments) but still perform no I/O.
|
|
23
23
|
*/
|
|
24
24
|
export type RoutingMode = "active" | "sticky" | "priority";
|
|
25
|
+
export type PriorityFailbackPolicy = "new-conversation" | "next-user-turn";
|
|
26
|
+
export type PriorityAssignment = {
|
|
27
|
+
readonly profileId: string;
|
|
28
|
+
readonly requestId: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
export type PriorityPromotionInput = {
|
|
31
|
+
readonly policy: PriorityFailbackPolicy;
|
|
32
|
+
readonly assignment: PriorityAssignment;
|
|
33
|
+
readonly requestId: string | undefined;
|
|
34
|
+
readonly requestKind: string | undefined;
|
|
35
|
+
};
|
|
25
36
|
/**
|
|
26
37
|
* Parse a routing mode string (from settings or MERIDIAN_ROUTING).
|
|
27
38
|
* Unknown values fall back to "active" — a typo must never change
|
|
28
39
|
* routing behavior into something surprising.
|
|
29
40
|
*/
|
|
30
41
|
export declare function getRoutingMode(raw: string | undefined): RoutingMode;
|
|
42
|
+
export declare function getPriorityFailbackPolicy(raw: string | undefined): PriorityFailbackPolicy;
|
|
43
|
+
export declare function shouldPromotePriorityAssignment(input: PriorityPromotionInput): boolean;
|
|
31
44
|
/**
|
|
32
45
|
* Pick the sticky profile for a session: the profile with the highest
|
|
33
46
|
* rendezvous score. Returns undefined when there is nothing to pick
|
|
@@ -100,9 +113,10 @@ export declare class AssignmentStore {
|
|
|
100
113
|
private readonly entries;
|
|
101
114
|
constructor(max: number);
|
|
102
115
|
/** Read an assignment, marking it most-recently-used. */
|
|
103
|
-
get(key: string):
|
|
116
|
+
get(key: string): PriorityAssignment | undefined;
|
|
104
117
|
/** Write an assignment, marking it most-recently-used and evicting if over capacity. */
|
|
105
|
-
set(key: string, value:
|
|
118
|
+
set(key: string, value: PriorityAssignment): void;
|
|
119
|
+
compareAndSet(key: string, expected: PriorityAssignment | undefined, value: PriorityAssignment): boolean;
|
|
106
120
|
get size(): number;
|
|
107
121
|
}
|
|
108
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/proxy/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;
|
|
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":"AAkBA,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;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"AAkBA,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;AAiEnG,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;AAya7B,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CA2oNhF;AAWD,wBAAgB,gCAAgC,IAAI,IAAI,CAavD;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAuLhG"}
|
|
@@ -4,8 +4,24 @@
|
|
|
4
4
|
* Manages in-memory LRU caches for session and fingerprint lookups,
|
|
5
5
|
* coordinates with the shared file store for cross-proxy session resume.
|
|
6
6
|
*/
|
|
7
|
-
import { type StoredSessionGeneration } from "../sessionStore";
|
|
7
|
+
import { type DurablePriorityAssignment, type PriorityAssignmentGeneration, type StoredSession, type StoredSessionGeneration } from "../sessionStore";
|
|
8
8
|
import { type SessionState, type TokenUsage, type LineageResult } from "./lineage";
|
|
9
|
+
export interface PrioritySessionPublication {
|
|
10
|
+
readonly routeKey: string;
|
|
11
|
+
readonly profileId: string;
|
|
12
|
+
readonly lastHumanTurnDigest: string;
|
|
13
|
+
readonly lastHumanTurnIssuedAt: number;
|
|
14
|
+
/** Exact durable pre-SDK attempt claim. */
|
|
15
|
+
readonly attemptOwnerToken: string;
|
|
16
|
+
expectedAssignmentGeneration: PriorityAssignmentGeneration;
|
|
17
|
+
rollback?: {
|
|
18
|
+
readonly key: string;
|
|
19
|
+
readonly previousMapping: StoredSession | null;
|
|
20
|
+
readonly previousAssignment: DurablePriorityAssignment | null;
|
|
21
|
+
publishedMappingGeneration: StoredSessionGeneration;
|
|
22
|
+
publishedAssignmentGeneration: PriorityAssignmentGeneration;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
9
25
|
export declare function getMaxSessionsLimit(): number;
|
|
10
26
|
/** Clear all session caches (used in tests).
|
|
11
27
|
* Re-reads MERIDIAN_MAX_SESSIONS / CLAUDE_PROXY_MAX_SESSIONS so tests can override the limit. */
|
|
@@ -16,6 +32,13 @@ export declare function evictSession(sessionId: string | undefined, workingDirec
|
|
|
16
32
|
role: string;
|
|
17
33
|
content: any;
|
|
18
34
|
}>, expectedGeneration?: StoredSessionGeneration): boolean;
|
|
35
|
+
/** Drop rollback authority only after the response terminal is irrevocable. */
|
|
36
|
+
export declare function finalizePrioritySessionPublication(publication: PrioritySessionPublication): boolean;
|
|
37
|
+
/** Revoke a late atomic route+mapping publication and restore pre-request authority. */
|
|
38
|
+
export declare function rollbackPrioritySessionPublication(sessionId: string | undefined, messages: Array<{
|
|
39
|
+
role: string;
|
|
40
|
+
content: unknown;
|
|
41
|
+
}>, workingDirectory: string | undefined, publication: PrioritySessionPublication): StoredSessionGeneration | false;
|
|
19
42
|
/** Look up a cached session by header or fingerprint.
|
|
20
43
|
* Returns a LineageResult that classifies the mutation and includes the
|
|
21
44
|
* session state needed for the correct SDK action. */
|
|
@@ -42,5 +65,5 @@ export declare function storeSession(sessionId: string | undefined, messages: Ar
|
|
|
42
65
|
sessionId: string;
|
|
43
66
|
configDir: string;
|
|
44
67
|
projectDir?: string;
|
|
45
|
-
}, expectedGeneration?: StoredSessionGeneration | null): StoredSessionGeneration | false;
|
|
68
|
+
}, expectedGeneration?: StoredSessionGeneration | null, priorityPublication?: PrioritySessionPublication): StoredSessionGeneration | false;
|
|
46
69
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,7 +105,7 @@ export type LineageResult = {
|
|
|
105
105
|
* only divergence where the answer is both knowable and useful. */
|
|
106
106
|
mismatch?: LineageMismatch;
|
|
107
107
|
};
|
|
108
|
-
export type LineageDivergenceReason = "unverifiable" | "replayed-request" | "modified-history" | "unrelated-history" | "not-found" | "independent-request" | "missing-session-header";
|
|
108
|
+
export type LineageDivergenceReason = "unverifiable" | "replayed-request" | "modified-history" | "unrelated-history" | "not-found" | "independent-request" | "priority-failback" | "missing-session-header";
|
|
109
109
|
/**
|
|
110
110
|
* Compute a lineage hash of an ordered message array.
|
|
111
111
|
* Used as a fast-path check: if the aggregate hash matches, the messages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/lineage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/lineage.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export interface SessionTurnLease {
|
|
|
8
8
|
*/
|
|
9
9
|
advancedWhileWaiting(scopeKey: string): boolean;
|
|
10
10
|
markCommitted(scopeKey: string): void;
|
|
11
|
+
/** Undo this lease's commit after an exact durable rollback restores arrival state. */
|
|
12
|
+
markRolledBack(scopeKey: string): void;
|
|
11
13
|
release(): void;
|
|
12
14
|
}
|
|
13
15
|
/** Serialize turns for one reliable logical client-session identity. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnCoordinator.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/turnCoordinator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,OAAO,IAAI,IAAI,CAAA;CAChB;AA0BD,wEAAwE;AACxE,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAE5D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCrE,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"turnCoordinator.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/turnCoordinator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,uFAAuF;IACvF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,OAAO,IAAI,IAAI,CAAA;CAChB;AA0BD,wEAAwE;AACxE,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAE5D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCrE,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,OAAO;CAKhB;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,wBAA+B,CAAA"}
|