@automatalabs/pi-acp 0.1.3 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -3
- package/dist/agent.d.ts +11 -7
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +374 -60
- package/dist/child-process-registry.d.ts +82 -0
- package/dist/child-process-registry.d.ts.map +1 -0
- package/dist/child-process-registry.js +408 -0
- package/dist/config.d.ts +14 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -10
- package/dist/deps.d.ts +3 -3
- package/dist/deps.d.ts.map +1 -1
- package/dist/deps.js +2 -2
- package/dist/errors.d.ts +17 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +10 -5
- package/dist/index.js +5 -6
- package/dist/mcp-bridge.d.ts +235 -17
- package/dist/mcp-bridge.d.ts.map +1 -1
- package/dist/mcp-bridge.js +1331 -144
- package/dist/mcp-sampling-payload.d.ts +25 -0
- package/dist/mcp-sampling-payload.d.ts.map +1 -0
- package/dist/mcp-sampling-payload.js +263 -0
- package/dist/session.d.ts +27 -9
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +301 -145
- package/dist/translate.d.ts.map +1 -1
- package/dist/translate.js +10 -6
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/package.json +3 -3
- package/dist/structured-output.d.ts +0 -14
- package/dist/structured-output.d.ts.map +0 -1
- package/dist/structured-output.js +0 -71
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CreateMessageRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { Api, Context, Model } from "@earendil-works/pi-ai";
|
|
3
|
+
type SamplingParams = CreateMessageRequest["params"];
|
|
4
|
+
type SamplingRole = "user" | "assistant";
|
|
5
|
+
type MediaKind = "image" | "audio";
|
|
6
|
+
interface MediaMarker {
|
|
7
|
+
marker: string;
|
|
8
|
+
role: SamplingRole;
|
|
9
|
+
kind: MediaKind;
|
|
10
|
+
mimeType: string;
|
|
11
|
+
data: string;
|
|
12
|
+
}
|
|
13
|
+
export interface McpSamplingPayload {
|
|
14
|
+
context: Context;
|
|
15
|
+
onPayload(payload: unknown): unknown;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build a role-faithful Pi context and a request-local provider-payload rewrite. Media is represented
|
|
19
|
+
* by collision-free markers until Pi has assembled the concrete provider request body.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createMcpSamplingPayload(params: SamplingParams, model: Model<Api>): McpSamplingPayload;
|
|
22
|
+
/** Pure structural codec used by the ten pinned built-in API payload fixtures. */
|
|
23
|
+
export declare function rewriteMcpSamplingPayload(payload: unknown, api: Api, media: readonly MediaMarker[]): unknown;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=mcp-sampling-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-sampling-payload.d.ts","sourceRoot":"","sources":["../src/mcp-sampling-payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEjE,KAAK,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACrD,KAAK,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;AACzC,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnC,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CACtC;AAkCD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAwCtG;AAiID,kFAAkF;AAClF,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,WAAW,EAAE,GAC5B,OAAO,CAmFT"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { ErrorCode, McpError } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
let requestSequence = 0;
|
|
3
|
+
function mediaError() {
|
|
4
|
+
throw exactMcpError(ErrorCode.InternalError, "Active pi model cannot represent MCP sampling media");
|
|
5
|
+
}
|
|
6
|
+
function exactMcpError(code, message) {
|
|
7
|
+
const error = new McpError(code, message);
|
|
8
|
+
// The pinned SDK prefixes McpError.message for local display, then serializes that property verbatim.
|
|
9
|
+
// Restore the protocol message so the JSON-RPC error remains the fixed contract string.
|
|
10
|
+
error.message = message;
|
|
11
|
+
return error;
|
|
12
|
+
}
|
|
13
|
+
function zeroUsage() {
|
|
14
|
+
return {
|
|
15
|
+
input: 0,
|
|
16
|
+
output: 0,
|
|
17
|
+
cacheRead: 0,
|
|
18
|
+
cacheWrite: 0,
|
|
19
|
+
totalTokens: 0,
|
|
20
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function allInputText(params) {
|
|
24
|
+
return params.messages.flatMap((message) => {
|
|
25
|
+
const content = Array.isArray(message.content) ? message.content : [message.content];
|
|
26
|
+
return content.flatMap((block) => block.type === "text" ? [block.text] : []);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build a role-faithful Pi context and a request-local provider-payload rewrite. Media is represented
|
|
31
|
+
* by collision-free markers until Pi has assembled the concrete provider request body.
|
|
32
|
+
*/
|
|
33
|
+
export function createMcpSamplingPayload(params, model) {
|
|
34
|
+
const inputText = allInputText(params);
|
|
35
|
+
let token;
|
|
36
|
+
do {
|
|
37
|
+
requestSequence += 1;
|
|
38
|
+
token = `PI_ACP_MCP_MEDIA_${requestSequence.toString(36).toUpperCase()}`;
|
|
39
|
+
} while (inputText.some((text) => text.includes(token)));
|
|
40
|
+
const markers = [];
|
|
41
|
+
const context = {
|
|
42
|
+
...(params.systemPrompt === undefined ? {} : { systemPrompt: params.systemPrompt }),
|
|
43
|
+
messages: params.messages.map((message) => {
|
|
44
|
+
const blocks = Array.isArray(message.content) ? message.content : [message.content];
|
|
45
|
+
const content = blocks.map((block) => {
|
|
46
|
+
if (block.type === "text")
|
|
47
|
+
return { type: "text", text: block.text };
|
|
48
|
+
if (block.type !== "image" && block.type !== "audio") {
|
|
49
|
+
throw exactMcpError(ErrorCode.InvalidParams, "Unsupported MCP sampling capability");
|
|
50
|
+
}
|
|
51
|
+
const marker = `__${token}_${markers.length.toString(36).toUpperCase()}__`;
|
|
52
|
+
markers.push({ marker, role: message.role, kind: block.type, mimeType: block.mimeType, data: block.data });
|
|
53
|
+
return { type: "text", text: marker };
|
|
54
|
+
});
|
|
55
|
+
if (message.role === "user")
|
|
56
|
+
return { role: "user", content, timestamp: 0 };
|
|
57
|
+
return {
|
|
58
|
+
role: "assistant",
|
|
59
|
+
content,
|
|
60
|
+
api: model.api,
|
|
61
|
+
provider: model.provider,
|
|
62
|
+
model: model.id,
|
|
63
|
+
stopReason: "stop",
|
|
64
|
+
usage: zeroUsage(),
|
|
65
|
+
timestamp: 0,
|
|
66
|
+
};
|
|
67
|
+
}),
|
|
68
|
+
};
|
|
69
|
+
return {
|
|
70
|
+
context,
|
|
71
|
+
onPayload: (payload) => rewriteMcpSamplingPayload(payload, model.api, markers),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function dataUrl(marker) {
|
|
75
|
+
return `data:${marker.mimeType};base64,${marker.data}`;
|
|
76
|
+
}
|
|
77
|
+
function nativeBlock(api, marker, payloadRole) {
|
|
78
|
+
if (payloadRole !== marker.role)
|
|
79
|
+
return mediaError();
|
|
80
|
+
switch (api) {
|
|
81
|
+
case "google-generative-ai":
|
|
82
|
+
case "google-vertex":
|
|
83
|
+
return { inlineData: { mimeType: marker.mimeType, data: marker.data } };
|
|
84
|
+
case "openai-completions":
|
|
85
|
+
if (marker.role === "user" && marker.kind === "image") {
|
|
86
|
+
return { type: "image_url", image_url: { url: dataUrl(marker) } };
|
|
87
|
+
}
|
|
88
|
+
return mediaError();
|
|
89
|
+
case "openai-responses":
|
|
90
|
+
case "azure-openai-responses":
|
|
91
|
+
case "openai-codex-responses":
|
|
92
|
+
if (marker.role === "user" && marker.kind === "image") {
|
|
93
|
+
return { type: "input_image", image_url: dataUrl(marker), detail: "auto" };
|
|
94
|
+
}
|
|
95
|
+
return mediaError();
|
|
96
|
+
case "anthropic-messages":
|
|
97
|
+
if (marker.kind === "image" &&
|
|
98
|
+
["image/jpeg", "image/png", "image/gif", "image/webp"].includes(marker.mimeType)) {
|
|
99
|
+
return {
|
|
100
|
+
type: "image",
|
|
101
|
+
source: { type: "base64", media_type: marker.mimeType, data: marker.data },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
return mediaError();
|
|
105
|
+
case "mistral-conversations":
|
|
106
|
+
if (marker.role === "user" && marker.kind === "image") {
|
|
107
|
+
return { type: "image_url", imageUrl: dataUrl(marker) };
|
|
108
|
+
}
|
|
109
|
+
return mediaError();
|
|
110
|
+
case "pi-messages":
|
|
111
|
+
if (marker.role === "user" && marker.kind === "image") {
|
|
112
|
+
return { type: "image", data: marker.data, mimeType: marker.mimeType };
|
|
113
|
+
}
|
|
114
|
+
return mediaError();
|
|
115
|
+
case "bedrock-converse-stream":
|
|
116
|
+
// Bedrock's image block retains only a format enum, not the exact MIME string.
|
|
117
|
+
return mediaError();
|
|
118
|
+
default:
|
|
119
|
+
return mediaError();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function isRecord(value) {
|
|
123
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
124
|
+
}
|
|
125
|
+
function markerOccurrenceCounts(value, markers) {
|
|
126
|
+
const counts = new Map(markers.map(({ marker }) => [marker, 0]));
|
|
127
|
+
const visit = (entry) => {
|
|
128
|
+
if (typeof entry === "string") {
|
|
129
|
+
for (const { marker } of markers) {
|
|
130
|
+
let from = 0;
|
|
131
|
+
for (;;) {
|
|
132
|
+
const index = entry.indexOf(marker, from);
|
|
133
|
+
if (index < 0)
|
|
134
|
+
break;
|
|
135
|
+
counts.set(marker, (counts.get(marker) ?? 0) + 1);
|
|
136
|
+
from = index + marker.length;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (Array.isArray(entry)) {
|
|
142
|
+
for (const item of entry)
|
|
143
|
+
visit(item);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (isRecord(entry)) {
|
|
147
|
+
for (const item of Object.values(entry))
|
|
148
|
+
visit(item);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
visit(value);
|
|
152
|
+
return counts;
|
|
153
|
+
}
|
|
154
|
+
function samplingRole(value) {
|
|
155
|
+
if (value === "user")
|
|
156
|
+
return "user";
|
|
157
|
+
if (value === "assistant" || value === "model")
|
|
158
|
+
return "assistant";
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
function replaceTextParts(parts, role, api, byMarker, replacements, expectedTextType) {
|
|
162
|
+
if (!Array.isArray(parts) || !role)
|
|
163
|
+
return mediaError();
|
|
164
|
+
return parts.map((part) => {
|
|
165
|
+
if (!isRecord(part))
|
|
166
|
+
return part;
|
|
167
|
+
const marker = typeof part.text === "string" ? byMarker.get(part.text) : undefined;
|
|
168
|
+
if (!marker)
|
|
169
|
+
return part;
|
|
170
|
+
if (expectedTextType !== undefined && part.type !== expectedTextType)
|
|
171
|
+
return mediaError();
|
|
172
|
+
if (expectedTextType === undefined && Object.keys(part).some((key) => key !== "text"))
|
|
173
|
+
return mediaError();
|
|
174
|
+
replacements.set(marker.marker, (replacements.get(marker.marker) ?? 0) + 1);
|
|
175
|
+
return nativeBlock(api, marker, role);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function replaceMessageContent(messages, api, byMarker, replacements, expectedTextType) {
|
|
179
|
+
if (!Array.isArray(messages))
|
|
180
|
+
return mediaError();
|
|
181
|
+
return messages.map((message) => {
|
|
182
|
+
if (!isRecord(message))
|
|
183
|
+
return message;
|
|
184
|
+
const role = samplingRole(message.role);
|
|
185
|
+
if (!Array.isArray(message.content))
|
|
186
|
+
return message;
|
|
187
|
+
return {
|
|
188
|
+
...message,
|
|
189
|
+
content: replaceTextParts(message.content, role, api, byMarker, replacements, expectedTextType),
|
|
190
|
+
};
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/** Pure structural codec used by the ten pinned built-in API payload fixtures. */
|
|
194
|
+
export function rewriteMcpSamplingPayload(payload, api, media) {
|
|
195
|
+
if (media.length === 0)
|
|
196
|
+
return payload;
|
|
197
|
+
const byMarker = new Map(media.map((item) => [item.marker, item]));
|
|
198
|
+
const occurrences = markerOccurrenceCounts(payload, media);
|
|
199
|
+
const replacements = new Map();
|
|
200
|
+
if (!isRecord(payload))
|
|
201
|
+
return mediaError();
|
|
202
|
+
let rewritten;
|
|
203
|
+
switch (api) {
|
|
204
|
+
case "openai-completions":
|
|
205
|
+
case "anthropic-messages":
|
|
206
|
+
case "mistral-conversations":
|
|
207
|
+
rewritten = {
|
|
208
|
+
...payload,
|
|
209
|
+
messages: replaceMessageContent(payload.messages, api, byMarker, replacements, "text"),
|
|
210
|
+
};
|
|
211
|
+
break;
|
|
212
|
+
case "openai-responses":
|
|
213
|
+
case "azure-openai-responses":
|
|
214
|
+
case "openai-codex-responses":
|
|
215
|
+
rewritten = {
|
|
216
|
+
...payload,
|
|
217
|
+
input: replaceMessageContent(payload.input, api, byMarker, replacements, "input_text"),
|
|
218
|
+
};
|
|
219
|
+
break;
|
|
220
|
+
case "google-generative-ai":
|
|
221
|
+
case "google-vertex": {
|
|
222
|
+
if (!Array.isArray(payload.contents))
|
|
223
|
+
return mediaError();
|
|
224
|
+
rewritten = {
|
|
225
|
+
...payload,
|
|
226
|
+
contents: payload.contents.map((message) => {
|
|
227
|
+
if (!isRecord(message))
|
|
228
|
+
return message;
|
|
229
|
+
return {
|
|
230
|
+
...message,
|
|
231
|
+
parts: replaceTextParts(message.parts, samplingRole(message.role), api, byMarker, replacements, undefined),
|
|
232
|
+
};
|
|
233
|
+
}),
|
|
234
|
+
};
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case "pi-messages": {
|
|
238
|
+
if (!isRecord(payload.context))
|
|
239
|
+
return mediaError();
|
|
240
|
+
rewritten = {
|
|
241
|
+
...payload,
|
|
242
|
+
context: {
|
|
243
|
+
...payload.context,
|
|
244
|
+
messages: replaceMessageContent(payload.context.messages, api, byMarker, replacements, "text"),
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
case "bedrock-converse-stream":
|
|
250
|
+
default:
|
|
251
|
+
return mediaError();
|
|
252
|
+
}
|
|
253
|
+
for (const marker of media) {
|
|
254
|
+
if (occurrences.get(marker.marker) !== 1 || replacements.get(marker.marker) !== 1)
|
|
255
|
+
return mediaError();
|
|
256
|
+
}
|
|
257
|
+
const remaining = markerOccurrenceCounts(rewritten, media);
|
|
258
|
+
for (const marker of media) {
|
|
259
|
+
if (remaining.get(marker.marker) !== 0)
|
|
260
|
+
return mediaError();
|
|
261
|
+
}
|
|
262
|
+
return rewritten;
|
|
263
|
+
}
|
package/dist/session.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { type AgentContext, type PromptRequest, type PromptResponse, type SessionUpdate } from "@agentclientprotocol/sdk";
|
|
2
2
|
import type { AgentSession, SessionEntry, SessionManager } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
import type { Api, Model } from "@earendil-works/pi-ai";
|
|
3
4
|
import type { PiAcpDeps } from "./deps.js";
|
|
4
|
-
import {
|
|
5
|
-
import { type
|
|
5
|
+
import type { McpBridge, McpResultProjection } from "./mcp-bridge.js";
|
|
6
|
+
import { type ChildProcessRegistrySlot } from "./child-process-registry.js";
|
|
6
7
|
export interface PiSessionOptions {
|
|
7
8
|
sessionId: string;
|
|
8
9
|
session: AgentSession;
|
|
9
10
|
manager: SessionManager;
|
|
10
11
|
client: AgentContext;
|
|
11
12
|
deps: PiAcpDeps;
|
|
12
|
-
|
|
13
|
+
mcpBridge: McpBridge;
|
|
13
14
|
failedMcpResults: Map<string, McpResultProjection>;
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
availableModels: readonly Model<Api>[];
|
|
16
|
+
childRegistry: ChildProcessRegistrySlot;
|
|
17
|
+
lifecycleController: AbortController;
|
|
18
|
+
onWedged(sessionId: string, session: PiSession, cleanupRetryRequired: boolean): Promise<void>;
|
|
16
19
|
}
|
|
17
20
|
export declare class PiSession {
|
|
18
21
|
readonly sessionId: string;
|
|
@@ -20,9 +23,11 @@ export declare class PiSession {
|
|
|
20
23
|
readonly manager: SessionManager;
|
|
21
24
|
private readonly client;
|
|
22
25
|
private readonly deps;
|
|
23
|
-
private readonly
|
|
26
|
+
private readonly mcpBridge;
|
|
24
27
|
private readonly failedMcpResults;
|
|
25
|
-
private
|
|
28
|
+
private availableModels;
|
|
29
|
+
private readonly childRegistry;
|
|
30
|
+
private readonly lifecycleController;
|
|
26
31
|
private readonly onWedged;
|
|
27
32
|
private readonly pending;
|
|
28
33
|
private pump;
|
|
@@ -32,27 +37,40 @@ export declare class PiSession {
|
|
|
32
37
|
private disposed;
|
|
33
38
|
private unsubscribe;
|
|
34
39
|
private activeTurn;
|
|
40
|
+
private configReserved;
|
|
41
|
+
private cleanupDirty;
|
|
42
|
+
private cleanupGeneration;
|
|
43
|
+
private resourceDisposePromise;
|
|
44
|
+
private bridgeClosePromise;
|
|
35
45
|
constructor(options: PiSessionOptions);
|
|
36
46
|
get busy(): boolean;
|
|
37
47
|
configOptions(): import("@agentclientprotocol/sdk").SessionConfigOption[];
|
|
48
|
+
publishAvailableModels(models: readonly Model<Api>[]): void;
|
|
49
|
+
activeTurnSignal(): AbortSignal | undefined;
|
|
50
|
+
emitMcpDiagnostic(text: string): void;
|
|
38
51
|
enqueue(update: SessionUpdate): void;
|
|
39
52
|
private startPump;
|
|
40
53
|
drain(): Promise<void>;
|
|
41
54
|
replay(entries: readonly SessionEntry[]): Promise<void>;
|
|
42
55
|
setConfig(configId: string, value: string | boolean): Promise<import("@agentclientprotocol/sdk").SessionConfigOption[]>;
|
|
43
|
-
private disarm;
|
|
44
56
|
private finish;
|
|
45
57
|
private notificationFailure;
|
|
46
58
|
private abortTurn;
|
|
59
|
+
private startDisposal;
|
|
60
|
+
private cleanupTurn;
|
|
47
61
|
private turnError;
|
|
48
62
|
private runTurnTask;
|
|
49
63
|
private cleanupWedged;
|
|
50
|
-
private startBackstop;
|
|
51
64
|
private handlePiResolved;
|
|
52
65
|
private handlePiRejected;
|
|
53
66
|
prompt(params: PromptRequest, requestSignal: AbortSignal): Promise<PromptResponse>;
|
|
54
67
|
cancel(): void;
|
|
68
|
+
childCleanupFailure(): void;
|
|
55
69
|
dispose(): Promise<void>;
|
|
70
|
+
disposeAfterCleanupFailure(): Promise<void>;
|
|
71
|
+
get remainingChildren(): number;
|
|
72
|
+
get cleanupRetryRequired(): boolean;
|
|
56
73
|
disposeResources(): Promise<void>;
|
|
74
|
+
poison(): void;
|
|
57
75
|
}
|
|
58
76
|
//# sourceMappingURL=session.d.ts.map
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|