@baguette-studios/kernl-client 0.1.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/LICENSE +13 -0
- package/README.md +24 -0
- package/dist/index.d.ts +200 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +537 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright (c) 2026 Jules Astier
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
4
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
5
|
+
copyright notice and this permission notice appear in all copies.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
8
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
9
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
10
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
11
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
12
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
13
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @baguette-studios/kernl-client
|
|
2
|
+
|
|
3
|
+
Browser-safe client for appending user messages and browser tool results to the Kernl hosted service. It also defines the capability snapshot and browser event contracts used by framework SDKs.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install @baguette-studios/kernl-client
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { createKernlSessionClient } from "@baguette-studios/kernl-client";
|
|
11
|
+
|
|
12
|
+
const client = createKernlSessionClient({
|
|
13
|
+
projectId: "your-project",
|
|
14
|
+
clientKey: "kernlpk_live_...",
|
|
15
|
+
baseUrl: "https://api.kernl.dev",
|
|
16
|
+
session: { id: "conversation:123" }
|
|
17
|
+
});
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
This package is a client SDK. It does not contain the private Kernl hosted runtime, provider execution, control-plane validation, storage, queues, or model credentials.
|
|
21
|
+
|
|
22
|
+
Most React applications can use the `client` configuration on `@baguette-studios/kernl-react` without importing this package directly.
|
|
23
|
+
|
|
24
|
+
See the [session protocol](https://github.com/Jules-Astier/agent-context/blob/main/docs/sdk-server-protocol.md) for the wire contract.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type { AgentAdapter, AgentAsset, AgentEvent, AgentFormRequest, AgentModelSnapshot, AgentNavRef, AgentRequest, AgentSnapshot, ApprovalDecision, ApprovalRequest, ToolCall, ToolResult } from "@baguette-studios/kernl-core";
|
|
2
|
+
export type { AgentAdapter, AgentAsset, AgentEvent, AgentMessage, AgentModelSnapshot, AgentRequest, AgentSnapshot, AgentToolDescriptor, ToolCall, ToolResult } from "@baguette-studios/kernl-core";
|
|
3
|
+
export type KernlEnvironment = "development" | "preview" | "production" | (string & {});
|
|
4
|
+
export type KernlSession = {
|
|
5
|
+
id?: string | undefined;
|
|
6
|
+
token?: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
export type ClientMetadata = Record<string, unknown>;
|
|
9
|
+
export type ClientAgentDescriptor = {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string | undefined;
|
|
13
|
+
instructions?: string[] | undefined;
|
|
14
|
+
toolNames?: string[] | undefined;
|
|
15
|
+
metadata?: Record<string, unknown> | undefined;
|
|
16
|
+
};
|
|
17
|
+
export type ClientInstructionDescriptor = {
|
|
18
|
+
id: string;
|
|
19
|
+
text: string;
|
|
20
|
+
title?: string | undefined;
|
|
21
|
+
scopeId?: string | undefined;
|
|
22
|
+
priority?: number | undefined;
|
|
23
|
+
metadata?: Record<string, unknown> | undefined;
|
|
24
|
+
};
|
|
25
|
+
export type ClientResolvedContextDescriptor = {
|
|
26
|
+
id: string;
|
|
27
|
+
value: string;
|
|
28
|
+
label?: string | undefined;
|
|
29
|
+
description?: string | undefined;
|
|
30
|
+
scopeId?: string | undefined;
|
|
31
|
+
resolvedAt?: number | undefined;
|
|
32
|
+
metadata?: Record<string, unknown> | undefined;
|
|
33
|
+
};
|
|
34
|
+
export type ClientToolDescriptor = {
|
|
35
|
+
name: string;
|
|
36
|
+
description: string;
|
|
37
|
+
parameters?: Record<string, unknown> | undefined;
|
|
38
|
+
returns?: Record<string, unknown> | undefined;
|
|
39
|
+
scopeId?: string | undefined;
|
|
40
|
+
risk?: "read" | "draft" | "write" | "destructive" | "external" | undefined;
|
|
41
|
+
requiresConfirmation?: boolean | undefined;
|
|
42
|
+
metadata?: Record<string, unknown> | undefined;
|
|
43
|
+
};
|
|
44
|
+
export type ClientPromptDescriptor = {
|
|
45
|
+
id: string;
|
|
46
|
+
label: string;
|
|
47
|
+
prompt: string;
|
|
48
|
+
description?: string | undefined;
|
|
49
|
+
scopeId?: string | undefined;
|
|
50
|
+
metadata?: Record<string, unknown> | undefined;
|
|
51
|
+
};
|
|
52
|
+
export type ClientSkillDescriptor = {
|
|
53
|
+
id: string;
|
|
54
|
+
title?: string | undefined;
|
|
55
|
+
description?: string | undefined;
|
|
56
|
+
instructions?: ClientInstructionDescriptor[] | undefined;
|
|
57
|
+
prompts?: ClientPromptDescriptor[] | undefined;
|
|
58
|
+
tools?: ClientToolDescriptor[] | undefined;
|
|
59
|
+
metadata?: Record<string, unknown> | undefined;
|
|
60
|
+
};
|
|
61
|
+
export type ClientCapabilitySnapshot = {
|
|
62
|
+
sessionId: string;
|
|
63
|
+
generatedAt: number;
|
|
64
|
+
activeBoundaryIds: string[];
|
|
65
|
+
agent?: ClientAgentDescriptor | undefined;
|
|
66
|
+
instructions: ClientInstructionDescriptor[];
|
|
67
|
+
context: ClientResolvedContextDescriptor[];
|
|
68
|
+
tools: ClientToolDescriptor[];
|
|
69
|
+
prompts: ClientPromptDescriptor[];
|
|
70
|
+
skills: ClientSkillDescriptor[];
|
|
71
|
+
metadata?: Record<string, unknown> | undefined;
|
|
72
|
+
};
|
|
73
|
+
export type AppendUserMessageRequest = {
|
|
74
|
+
sessionId: string;
|
|
75
|
+
idempotencyKey?: string | undefined;
|
|
76
|
+
capabilitySnapshot: ClientCapabilitySnapshot;
|
|
77
|
+
message: {
|
|
78
|
+
role: "user";
|
|
79
|
+
content: string;
|
|
80
|
+
assets?: AgentAsset[] | undefined;
|
|
81
|
+
};
|
|
82
|
+
metadata?: Record<string, unknown> | undefined;
|
|
83
|
+
};
|
|
84
|
+
export type AppendToolResultRequest = {
|
|
85
|
+
sessionId: string;
|
|
86
|
+
turnId: string;
|
|
87
|
+
idempotencyKey?: string | undefined;
|
|
88
|
+
capabilitySnapshot: ClientCapabilitySnapshot;
|
|
89
|
+
result: ToolResult;
|
|
90
|
+
metadata?: Record<string, unknown> | undefined;
|
|
91
|
+
};
|
|
92
|
+
export type BrowserToolCallRequestEvent = {
|
|
93
|
+
type: "tool-call-request";
|
|
94
|
+
turnId: string;
|
|
95
|
+
call: ToolCall;
|
|
96
|
+
tool?: ClientToolDescriptor | undefined;
|
|
97
|
+
sequence?: number | undefined;
|
|
98
|
+
};
|
|
99
|
+
export type BrowserAgentEvent = {
|
|
100
|
+
type: "assistant-message-delta";
|
|
101
|
+
turnId: string;
|
|
102
|
+
delta: string;
|
|
103
|
+
agentId?: string | undefined;
|
|
104
|
+
sequence?: number | undefined;
|
|
105
|
+
} | {
|
|
106
|
+
type: "assistant-message";
|
|
107
|
+
turnId: string;
|
|
108
|
+
content: string;
|
|
109
|
+
agentId?: string | undefined;
|
|
110
|
+
nav?: AgentNavRef[] | undefined;
|
|
111
|
+
sequence?: number | undefined;
|
|
112
|
+
metadata?: Record<string, unknown> | undefined;
|
|
113
|
+
} | BrowserToolCallRequestEvent | {
|
|
114
|
+
type: "tool-result-acknowledged";
|
|
115
|
+
turnId: string;
|
|
116
|
+
callId: string;
|
|
117
|
+
result?: ToolResult | undefined;
|
|
118
|
+
sequence?: number | undefined;
|
|
119
|
+
} | {
|
|
120
|
+
type: "approval-request";
|
|
121
|
+
turnId: string;
|
|
122
|
+
request: ApprovalRequest;
|
|
123
|
+
sequence?: number | undefined;
|
|
124
|
+
} | {
|
|
125
|
+
type: "approval-resolved";
|
|
126
|
+
turnId: string;
|
|
127
|
+
request: ApprovalRequest;
|
|
128
|
+
decision: ApprovalDecision;
|
|
129
|
+
sequence?: number | undefined;
|
|
130
|
+
} | {
|
|
131
|
+
type: "form-request";
|
|
132
|
+
turnId: string;
|
|
133
|
+
request: AgentFormRequest;
|
|
134
|
+
sequence?: number | undefined;
|
|
135
|
+
} | {
|
|
136
|
+
type: "turn-status";
|
|
137
|
+
turnId: string;
|
|
138
|
+
status: "queued" | "running" | "waiting-for-tool" | "completed" | "failed" | "cancelled";
|
|
139
|
+
sequence?: number | undefined;
|
|
140
|
+
metadata?: Record<string, unknown> | undefined;
|
|
141
|
+
} | {
|
|
142
|
+
type: "error";
|
|
143
|
+
turnId?: string | undefined;
|
|
144
|
+
error: string;
|
|
145
|
+
code?: string | undefined;
|
|
146
|
+
recoverable?: boolean | undefined;
|
|
147
|
+
attemptId?: string | undefined;
|
|
148
|
+
sequence?: number | undefined;
|
|
149
|
+
};
|
|
150
|
+
type SessionHeaderRequest = {
|
|
151
|
+
projectId: string;
|
|
152
|
+
clientKey: string;
|
|
153
|
+
baseUrl: string;
|
|
154
|
+
endpoint: string;
|
|
155
|
+
environment?: KernlEnvironment | undefined;
|
|
156
|
+
session?: KernlSession | undefined;
|
|
157
|
+
publicMetadata?: ClientMetadata | undefined;
|
|
158
|
+
};
|
|
159
|
+
export type ClientHttpHeaders = HeadersInit | ((request: SessionHeaderRequest) => HeadersInit | Promise<HeadersInit>);
|
|
160
|
+
export type ClientFetch = typeof fetch;
|
|
161
|
+
export type ClientIdempotencyKeyInput = {
|
|
162
|
+
operation: "append-message" | "append-tool-result";
|
|
163
|
+
sessionId: string;
|
|
164
|
+
turnId?: string | undefined;
|
|
165
|
+
callId?: string | undefined;
|
|
166
|
+
request: AgentRequest;
|
|
167
|
+
};
|
|
168
|
+
export type ClientIdempotencyKeyResolver = string | ((input: ClientIdempotencyKeyInput) => string | undefined | Promise<string | undefined>);
|
|
169
|
+
export type KernlSessionClientOptions = {
|
|
170
|
+
projectId: string;
|
|
171
|
+
clientKey: string;
|
|
172
|
+
baseUrl?: string | undefined;
|
|
173
|
+
environment?: KernlEnvironment | undefined;
|
|
174
|
+
session?: KernlSession | string | undefined;
|
|
175
|
+
publicMetadata?: ClientMetadata | undefined;
|
|
176
|
+
fetch?: ClientFetch | undefined;
|
|
177
|
+
headers?: ClientHttpHeaders | undefined;
|
|
178
|
+
signal?: AbortSignal | undefined;
|
|
179
|
+
messageEndpoint?: string | undefined;
|
|
180
|
+
toolResultEndpoint?: string | undefined;
|
|
181
|
+
idempotencyKey?: ClientIdempotencyKeyResolver | undefined;
|
|
182
|
+
createCapabilitySnapshot?: ((input: AgentRequest, sessionId: string) => ClientCapabilitySnapshot | Promise<ClientCapabilitySnapshot>) | undefined;
|
|
183
|
+
snapshotHash?: boolean | undefined;
|
|
184
|
+
};
|
|
185
|
+
export declare const DEFAULT_CLIENT_BASE_URL = "https://api.kernl.dev";
|
|
186
|
+
export declare const DEFAULT_SESSION_MESSAGE_ENDPOINT = "/v1/sessions/:sessionId/messages";
|
|
187
|
+
export declare const DEFAULT_SESSION_TOOL_RESULT_ENDPOINT = "/v1/sessions/:sessionId/tool-results";
|
|
188
|
+
export declare const DEFAULT_SESSION_EVENTS_ENDPOINT = "/v1/sessions/:sessionId/events";
|
|
189
|
+
export declare const KERNL_CLIENT_KEY_HEADER = "x-kernl-client-key";
|
|
190
|
+
export declare function createKernlSessionClient(options: KernlSessionClientOptions): AgentAdapter;
|
|
191
|
+
export declare function normalizeBrowserAgentEvent(event: BrowserAgentEvent): AgentEvent;
|
|
192
|
+
export declare function filterBrowserSafeEvent(event: AgentEvent): AgentEvent | undefined;
|
|
193
|
+
export declare function filterBrowserSafeEvents(events: Iterable<AgentEvent>): AgentEvent[];
|
|
194
|
+
export declare function createClientCapabilitySnapshot(snapshot: AgentSnapshot | AgentModelSnapshot, sessionId: string): ClientCapabilitySnapshot;
|
|
195
|
+
export declare function normalizeClientBaseUrl(baseUrl: string): string;
|
|
196
|
+
export declare function normalizeClientEndpoint(endpoint: string): string;
|
|
197
|
+
export declare function formatSessionMessageEndpoint(sessionId: string, endpoint?: string | undefined): string;
|
|
198
|
+
export declare function formatSessionToolResultEndpoint(sessionId: string, endpoint?: string | undefined): string;
|
|
199
|
+
export declare function formatSessionEventsEndpoint(sessionId: string, endpoint?: string | undefined): string;
|
|
200
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
export const DEFAULT_CLIENT_BASE_URL = "https://api.kernl.dev";
|
|
2
|
+
export const DEFAULT_SESSION_MESSAGE_ENDPOINT = "/v1/sessions/:sessionId/messages";
|
|
3
|
+
export const DEFAULT_SESSION_TOOL_RESULT_ENDPOINT = "/v1/sessions/:sessionId/tool-results";
|
|
4
|
+
export const DEFAULT_SESSION_EVENTS_ENDPOINT = "/v1/sessions/:sessionId/events";
|
|
5
|
+
export const KERNL_CLIENT_KEY_HEADER = "x-kernl-client-key";
|
|
6
|
+
export function createKernlSessionClient(options) {
|
|
7
|
+
return {
|
|
8
|
+
sendMessage(input) {
|
|
9
|
+
return streamSessionMessage(options, input);
|
|
10
|
+
},
|
|
11
|
+
async invokeTool(call) {
|
|
12
|
+
return missingToolInvokerResult(call);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function normalizeBrowserAgentEvent(event) {
|
|
17
|
+
if (event.type === "assistant-message-delta") {
|
|
18
|
+
return { type: "text-delta", role: "assistant", text: event.delta, agentId: event.agentId };
|
|
19
|
+
}
|
|
20
|
+
if (event.type === "assistant-message") {
|
|
21
|
+
const message = {
|
|
22
|
+
type: "message",
|
|
23
|
+
role: "assistant",
|
|
24
|
+
content: event.content,
|
|
25
|
+
agentId: event.agentId
|
|
26
|
+
};
|
|
27
|
+
if (event.nav) {
|
|
28
|
+
message.nav = event.nav;
|
|
29
|
+
}
|
|
30
|
+
return message;
|
|
31
|
+
}
|
|
32
|
+
if (event.type === "tool-call-request") {
|
|
33
|
+
return { type: "tool-call", turnId: event.turnId, call: event.call };
|
|
34
|
+
}
|
|
35
|
+
if (event.type === "tool-result-acknowledged") {
|
|
36
|
+
return event.result
|
|
37
|
+
? { type: "tool-result", result: event.result }
|
|
38
|
+
: { type: "session-metadata", metadata: { turnId: event.turnId, acknowledgedToolCallId: event.callId } };
|
|
39
|
+
}
|
|
40
|
+
if (event.type === "approval-request") {
|
|
41
|
+
return { type: "approval-requested", request: event.request };
|
|
42
|
+
}
|
|
43
|
+
if (event.type === "approval-resolved") {
|
|
44
|
+
return { type: "approval-resolved", request: event.request, decision: event.decision };
|
|
45
|
+
}
|
|
46
|
+
if (event.type === "form-request") {
|
|
47
|
+
return { type: "form-requested", request: event.request };
|
|
48
|
+
}
|
|
49
|
+
if (event.type === "turn-status") {
|
|
50
|
+
return { type: "session-metadata", metadata: { turnId: event.turnId, turnStatus: event.status } };
|
|
51
|
+
}
|
|
52
|
+
return { type: "error", error: event.error };
|
|
53
|
+
}
|
|
54
|
+
export function filterBrowserSafeEvent(event) {
|
|
55
|
+
if (event.type === "snapshot" || event.type === "model-request" || event.type === "audit" || event.type === "usage") {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
if (event.type === "approval-requested" || event.type === "approval-resolved") {
|
|
59
|
+
return {
|
|
60
|
+
...event,
|
|
61
|
+
request: redactApprovalRequestForBrowser(event.request)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return event;
|
|
65
|
+
}
|
|
66
|
+
export function filterBrowserSafeEvents(events) {
|
|
67
|
+
return [...events].flatMap((event) => {
|
|
68
|
+
const filtered = filterBrowserSafeEvent(event);
|
|
69
|
+
return filtered ? [filtered] : [];
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async function createClientHttpHeaders(request, headers) {
|
|
73
|
+
const result = new Headers();
|
|
74
|
+
result.set("content-type", "application/json");
|
|
75
|
+
result.set(KERNL_CLIENT_KEY_HEADER, request.clientKey);
|
|
76
|
+
const callerHeaders = typeof headers === "function" ? await headers(request) : headers;
|
|
77
|
+
if (callerHeaders) {
|
|
78
|
+
new Headers(callerHeaders).forEach((value, key) => {
|
|
79
|
+
result.set(key, value);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const sessionToken = request.session?.token?.trim();
|
|
83
|
+
if (sessionToken) {
|
|
84
|
+
result.set("authorization", `Bearer ${sessionToken}`);
|
|
85
|
+
}
|
|
86
|
+
result.set("content-type", "application/json");
|
|
87
|
+
result.set(KERNL_CLIENT_KEY_HEADER, request.clientKey);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
async function* streamSessionMessage(options, input) {
|
|
91
|
+
const fetchImplementation = resolveFetch(options.fetch);
|
|
92
|
+
if (!fetchImplementation) {
|
|
93
|
+
yield {
|
|
94
|
+
type: "error",
|
|
95
|
+
error: "No fetch implementation is available for createKernlSessionClient(). Provide options.fetch."
|
|
96
|
+
};
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const sessionId = resolveSessionId(options.session, input);
|
|
100
|
+
const latestUserMessage = [...input.messages].reverse().find((message) => message.role === "user");
|
|
101
|
+
if (!latestUserMessage) {
|
|
102
|
+
yield {
|
|
103
|
+
type: "error",
|
|
104
|
+
error: "Kernl session requests require a latest user message."
|
|
105
|
+
};
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const headerRequest = createSessionHeaderRequest(options, sessionId, formatSessionMessageEndpoint(sessionId, options.messageEndpoint));
|
|
109
|
+
const request = await createAppendUserMessageRequest(options, input, sessionId, latestUserMessage);
|
|
110
|
+
const response = await fetchImplementation(`${headerRequest.baseUrl}${headerRequest.endpoint}`, {
|
|
111
|
+
method: "POST",
|
|
112
|
+
headers: await createClientHttpHeaders(headerRequest, options.headers),
|
|
113
|
+
body: JSON.stringify(request),
|
|
114
|
+
...(options.signal ? { signal: options.signal } : {})
|
|
115
|
+
});
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
yield {
|
|
118
|
+
type: "error",
|
|
119
|
+
error: `Kernl session message append failed with HTTP ${response.status}${response.statusText ? ` ${response.statusText}` : ""}: ${await readResponseText(response)}`
|
|
120
|
+
};
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
124
|
+
const events = contentType.toLowerCase().includes("text/event-stream")
|
|
125
|
+
? parseSessionSseResponse(response)
|
|
126
|
+
: parseSessionJsonResponse(response);
|
|
127
|
+
for await (const event of events) {
|
|
128
|
+
const browserEvent = unwrapSessionResponseEvent(event);
|
|
129
|
+
yield normalizeBrowserAgentEvent(browserEvent);
|
|
130
|
+
yield* maybeSubmitSessionToolResult(browserEvent, input, sessionId, options);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function createAppendUserMessageRequest(options, input, sessionId, message) {
|
|
134
|
+
return compactObject({
|
|
135
|
+
sessionId,
|
|
136
|
+
idempotencyKey: await resolveClientIdempotencyKey(options, {
|
|
137
|
+
operation: "append-message",
|
|
138
|
+
sessionId,
|
|
139
|
+
request: input
|
|
140
|
+
}),
|
|
141
|
+
capabilitySnapshot: await resolveClientCapabilitySnapshot(options, input, sessionId),
|
|
142
|
+
message: compactObject({
|
|
143
|
+
role: "user",
|
|
144
|
+
content: message.content,
|
|
145
|
+
assets: message.assets ? [...message.assets] : undefined
|
|
146
|
+
}),
|
|
147
|
+
metadata: input.metadata
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async function createAppendToolResultRequest(options, input, sessionId, turnId, result) {
|
|
151
|
+
return compactObject({
|
|
152
|
+
sessionId,
|
|
153
|
+
turnId,
|
|
154
|
+
idempotencyKey: await resolveClientIdempotencyKey(options, {
|
|
155
|
+
operation: "append-tool-result",
|
|
156
|
+
sessionId,
|
|
157
|
+
turnId,
|
|
158
|
+
callId: result.callId,
|
|
159
|
+
request: input
|
|
160
|
+
}) ?? defaultToolResultIdempotencyKey(sessionId, turnId, result),
|
|
161
|
+
capabilitySnapshot: await resolveClientCapabilitySnapshot(options, input, sessionId),
|
|
162
|
+
result,
|
|
163
|
+
metadata: input.metadata
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
async function resolveClientIdempotencyKey(options, input) {
|
|
167
|
+
if (typeof options.idempotencyKey === "function") {
|
|
168
|
+
const resolved = await options.idempotencyKey(input);
|
|
169
|
+
return resolved?.trim() || undefined;
|
|
170
|
+
}
|
|
171
|
+
if (typeof options.idempotencyKey === "string") {
|
|
172
|
+
return options.idempotencyKey.trim() || undefined;
|
|
173
|
+
}
|
|
174
|
+
const metadataKey = input.request.metadata?.idempotencyKey;
|
|
175
|
+
return typeof metadataKey === "string" && metadataKey.trim() ? metadataKey : undefined;
|
|
176
|
+
}
|
|
177
|
+
function defaultToolResultIdempotencyKey(sessionId, turnId, result) {
|
|
178
|
+
const callId = result.callId;
|
|
179
|
+
if (!callId) {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
return `tool-result:${sessionId}:${turnId}:${callId}`;
|
|
183
|
+
}
|
|
184
|
+
async function resolveClientCapabilitySnapshot(options, input, sessionId) {
|
|
185
|
+
const snapshot = options.createCapabilitySnapshot
|
|
186
|
+
? await options.createCapabilitySnapshot(input, sessionId)
|
|
187
|
+
: createClientCapabilitySnapshot(input.snapshot, sessionId);
|
|
188
|
+
if (!options.snapshotHash) {
|
|
189
|
+
return snapshot;
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
...snapshot,
|
|
193
|
+
metadata: {
|
|
194
|
+
...snapshot.metadata,
|
|
195
|
+
snapshotHash: hashStableJson(snapshot)
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
export function createClientCapabilitySnapshot(snapshot, sessionId) {
|
|
200
|
+
return {
|
|
201
|
+
sessionId,
|
|
202
|
+
generatedAt: snapshot.generatedAt,
|
|
203
|
+
activeBoundaryIds: snapshot.scopes.map((scope) => scope.id),
|
|
204
|
+
agent: snapshot.activeAgent
|
|
205
|
+
? {
|
|
206
|
+
id: snapshot.activeAgent.id,
|
|
207
|
+
name: snapshot.activeAgent.name,
|
|
208
|
+
description: snapshot.activeAgent.description,
|
|
209
|
+
instructions: snapshot.activeAgent.instructions,
|
|
210
|
+
toolNames: snapshot.activeAgent.toolNames,
|
|
211
|
+
metadata: snapshot.activeAgent.metadata
|
|
212
|
+
}
|
|
213
|
+
: undefined,
|
|
214
|
+
instructions: snapshot.instructions.map((instruction) => compactObject({
|
|
215
|
+
id: instruction.id,
|
|
216
|
+
text: instruction.text,
|
|
217
|
+
title: instruction.title,
|
|
218
|
+
scopeId: instruction.scopeId,
|
|
219
|
+
priority: instruction.priority,
|
|
220
|
+
metadata: instruction.privacy?.metadata
|
|
221
|
+
})),
|
|
222
|
+
context: snapshot.resources.map((resource) => compactObject({
|
|
223
|
+
id: resource.id,
|
|
224
|
+
label: resource.label,
|
|
225
|
+
description: resource.description,
|
|
226
|
+
scopeId: resource.scopeId,
|
|
227
|
+
value: stringifyContextValue(resource.value),
|
|
228
|
+
resolvedAt: "resolvedAt" in resource ? resource.resolvedAt : undefined,
|
|
229
|
+
metadata: resource.privacy?.metadata
|
|
230
|
+
})),
|
|
231
|
+
tools: snapshot.tools.map((tool) => compactObject({
|
|
232
|
+
name: tool.name,
|
|
233
|
+
description: tool.description,
|
|
234
|
+
parameters: schemaToRecord(tool.parameters ?? tool.args),
|
|
235
|
+
returns: schemaToRecord(tool.returns),
|
|
236
|
+
scopeId: tool.scopeId,
|
|
237
|
+
risk: tool.risk,
|
|
238
|
+
requiresConfirmation: tool.requiresConfirmation
|
|
239
|
+
})),
|
|
240
|
+
prompts: snapshot.prompts.map((prompt) => compactObject({
|
|
241
|
+
id: prompt.id,
|
|
242
|
+
label: prompt.label,
|
|
243
|
+
prompt: prompt.prompt,
|
|
244
|
+
description: prompt.description,
|
|
245
|
+
scopeId: prompt.scopeId,
|
|
246
|
+
metadata: prompt.privacy?.metadata
|
|
247
|
+
})),
|
|
248
|
+
skills: [],
|
|
249
|
+
metadata: compactObject({
|
|
250
|
+
activeAgentId: snapshot.activeAgentId,
|
|
251
|
+
compiledInstructions: snapshot.compiledInstructions
|
|
252
|
+
})
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
async function* parseSessionSseResponse(response) {
|
|
256
|
+
if (!response.body) {
|
|
257
|
+
yield {
|
|
258
|
+
type: "error",
|
|
259
|
+
error: "Kernl session SSE response did not include a response body."
|
|
260
|
+
};
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const decoder = new TextDecoder();
|
|
264
|
+
const reader = response.body.getReader();
|
|
265
|
+
let buffer = "";
|
|
266
|
+
try {
|
|
267
|
+
while (true) {
|
|
268
|
+
const { done, value } = await reader.read();
|
|
269
|
+
if (done) {
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
buffer += decoder.decode(value, { stream: true });
|
|
273
|
+
const frames = splitSseFrames(buffer);
|
|
274
|
+
buffer = frames.remainder;
|
|
275
|
+
for (const frame of frames.complete) {
|
|
276
|
+
const event = parseSessionSseFrame(frame);
|
|
277
|
+
if (event === "done") {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
if (event) {
|
|
281
|
+
yield event;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
finally {
|
|
287
|
+
reader.releaseLock();
|
|
288
|
+
}
|
|
289
|
+
buffer += decoder.decode();
|
|
290
|
+
const finalFrame = buffer.trim();
|
|
291
|
+
if (finalFrame) {
|
|
292
|
+
const event = parseSessionSseFrame(finalFrame);
|
|
293
|
+
if (event && event !== "done") {
|
|
294
|
+
yield event;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
async function* parseSessionJsonResponse(response) {
|
|
299
|
+
const text = await readResponseText(response);
|
|
300
|
+
if (!text.trim()) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const payload = JSON.parse(text);
|
|
304
|
+
if (Array.isArray(payload)) {
|
|
305
|
+
yield* payload;
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (isObjectWithKey(payload, "events") && Array.isArray(payload.events)) {
|
|
309
|
+
yield* payload.events;
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (isObjectWithKey(payload, "event")) {
|
|
313
|
+
yield payload.event;
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
yield payload;
|
|
317
|
+
}
|
|
318
|
+
function splitSseFrames(input) {
|
|
319
|
+
const normalized = input.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
320
|
+
const parts = normalized.split("\n\n");
|
|
321
|
+
return {
|
|
322
|
+
complete: parts.slice(0, -1),
|
|
323
|
+
remainder: parts.at(-1) ?? ""
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
function parseSessionSseFrame(frame) {
|
|
327
|
+
const dataLines = [];
|
|
328
|
+
for (const line of frame.split(/\r?\n/)) {
|
|
329
|
+
if (!line || line.startsWith(":")) {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
if (line.startsWith("data:")) {
|
|
333
|
+
dataLines.push(line.slice(5).replace(/^ /, ""));
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (dataLines.length === 0) {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
const data = dataLines.join("\n").trim();
|
|
340
|
+
if (!data) {
|
|
341
|
+
return undefined;
|
|
342
|
+
}
|
|
343
|
+
if (data === "[DONE]") {
|
|
344
|
+
return "done";
|
|
345
|
+
}
|
|
346
|
+
return JSON.parse(data);
|
|
347
|
+
}
|
|
348
|
+
function unwrapSessionResponseEvent(event) {
|
|
349
|
+
return "event" in event ? event.event : event;
|
|
350
|
+
}
|
|
351
|
+
async function readResponseText(response) {
|
|
352
|
+
try {
|
|
353
|
+
return await response.text();
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
return `Unable to read response body: ${error instanceof Error ? error.message : String(error)}`;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
export function normalizeClientBaseUrl(baseUrl) {
|
|
360
|
+
return baseUrl.replace(/\/+$/, "");
|
|
361
|
+
}
|
|
362
|
+
export function normalizeClientEndpoint(endpoint) {
|
|
363
|
+
const trimmed = endpoint.trim();
|
|
364
|
+
if (!trimmed) {
|
|
365
|
+
return "/";
|
|
366
|
+
}
|
|
367
|
+
return trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
|
|
368
|
+
}
|
|
369
|
+
export function formatSessionMessageEndpoint(sessionId, endpoint) {
|
|
370
|
+
return formatSessionEndpoint(endpoint ?? DEFAULT_SESSION_MESSAGE_ENDPOINT, sessionId);
|
|
371
|
+
}
|
|
372
|
+
export function formatSessionToolResultEndpoint(sessionId, endpoint) {
|
|
373
|
+
return formatSessionEndpoint(endpoint ?? DEFAULT_SESSION_TOOL_RESULT_ENDPOINT, sessionId);
|
|
374
|
+
}
|
|
375
|
+
export function formatSessionEventsEndpoint(sessionId, endpoint) {
|
|
376
|
+
return formatSessionEndpoint(endpoint ?? DEFAULT_SESSION_EVENTS_ENDPOINT, sessionId);
|
|
377
|
+
}
|
|
378
|
+
async function* maybeSubmitSessionToolResult(event, input, sessionId, options) {
|
|
379
|
+
const normalized = normalizeBrowserAgentEvent(event);
|
|
380
|
+
if (normalized.type !== "tool-call" || !input.invokeTool) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
if (!normalized.turnId) {
|
|
384
|
+
yield {
|
|
385
|
+
type: "error",
|
|
386
|
+
error: `Kernl client tool call "${normalized.call.name}" did not include a turn id.`
|
|
387
|
+
};
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
const fetchImplementation = resolveFetch(options.fetch);
|
|
391
|
+
if (!fetchImplementation) {
|
|
392
|
+
yield {
|
|
393
|
+
type: "error",
|
|
394
|
+
error: `Kernl client tool call "${normalized.call.name}" could not be submitted because no fetch implementation is available.`
|
|
395
|
+
};
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
const result = await invokeClientTool(normalized.call, input.invokeTool);
|
|
399
|
+
const headerRequest = createSessionHeaderRequest(options, sessionId, formatSessionToolResultEndpoint(sessionId, options.toolResultEndpoint));
|
|
400
|
+
const appendRequest = await createAppendToolResultRequest(options, input, sessionId, normalized.turnId, result);
|
|
401
|
+
const response = await fetchImplementation(`${headerRequest.baseUrl}${headerRequest.endpoint}`, {
|
|
402
|
+
method: "POST",
|
|
403
|
+
headers: await createClientHttpHeaders(headerRequest, options.headers),
|
|
404
|
+
body: JSON.stringify(appendRequest),
|
|
405
|
+
...(options.signal ? { signal: options.signal } : {})
|
|
406
|
+
});
|
|
407
|
+
if (!response.ok) {
|
|
408
|
+
yield {
|
|
409
|
+
type: "error",
|
|
410
|
+
error: `Kernl client tool result submission failed with HTTP ${response.status}${response.statusText ? ` ${response.statusText}` : ""}: ${await readResponseText(response)}`
|
|
411
|
+
};
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
415
|
+
const events = contentType.toLowerCase().includes("text/event-stream")
|
|
416
|
+
? parseSessionSseResponse(response)
|
|
417
|
+
: parseSessionJsonResponse(response);
|
|
418
|
+
for await (const responseEvent of events) {
|
|
419
|
+
const browserEvent = unwrapSessionResponseEvent(responseEvent);
|
|
420
|
+
yield normalizeBrowserAgentEvent(browserEvent);
|
|
421
|
+
yield* maybeSubmitSessionToolResult(browserEvent, input, sessionId, options);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
async function invokeClientTool(call, invokeTool) {
|
|
425
|
+
try {
|
|
426
|
+
const result = await invokeTool(call);
|
|
427
|
+
return {
|
|
428
|
+
...result,
|
|
429
|
+
callId: result.callId ?? call.id,
|
|
430
|
+
toolName: result.toolName ?? call.name
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
catch (error) {
|
|
434
|
+
return {
|
|
435
|
+
callId: call.id,
|
|
436
|
+
toolName: call.name,
|
|
437
|
+
status: "error",
|
|
438
|
+
error: error instanceof Error ? error.message : String(error)
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
function redactApprovalRequestForBrowser(request) {
|
|
443
|
+
return {
|
|
444
|
+
...request,
|
|
445
|
+
args: request.redactedArgs,
|
|
446
|
+
redactedArgs: request.redactedArgs
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
function normalizeSession(session) {
|
|
450
|
+
if (typeof session === "string") {
|
|
451
|
+
return { id: session };
|
|
452
|
+
}
|
|
453
|
+
return session ? compactObject(session) : undefined;
|
|
454
|
+
}
|
|
455
|
+
function resolveSessionId(session, input) {
|
|
456
|
+
const normalized = normalizeSession(session);
|
|
457
|
+
const metadataSessionId = input.metadata?.sessionId;
|
|
458
|
+
if (typeof metadataSessionId === "string" && metadataSessionId.trim()) {
|
|
459
|
+
return metadataSessionId;
|
|
460
|
+
}
|
|
461
|
+
if (normalized?.id) {
|
|
462
|
+
return normalized.id;
|
|
463
|
+
}
|
|
464
|
+
return "default";
|
|
465
|
+
}
|
|
466
|
+
function createSessionHeaderRequest(options, sessionId, endpoint) {
|
|
467
|
+
return compactObject({
|
|
468
|
+
projectId: options.projectId,
|
|
469
|
+
clientKey: options.clientKey,
|
|
470
|
+
baseUrl: normalizeClientBaseUrl(options.baseUrl ?? DEFAULT_CLIENT_BASE_URL),
|
|
471
|
+
endpoint,
|
|
472
|
+
environment: options.environment,
|
|
473
|
+
session: normalizeSession(options.session) ?? { id: sessionId },
|
|
474
|
+
publicMetadata: options.publicMetadata
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
function formatSessionEndpoint(endpoint, sessionId) {
|
|
478
|
+
return normalizeClientEndpoint(endpoint).replace(":sessionId", encodeURIComponent(sessionId));
|
|
479
|
+
}
|
|
480
|
+
function missingToolInvokerResult(call) {
|
|
481
|
+
return {
|
|
482
|
+
callId: call.id,
|
|
483
|
+
toolName: call.name,
|
|
484
|
+
status: "error",
|
|
485
|
+
error: "No client tool invoker is configured for this Kernl session client."
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
function compactObject(input) {
|
|
489
|
+
return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));
|
|
490
|
+
}
|
|
491
|
+
function stringifyContextValue(value) {
|
|
492
|
+
if (typeof value === "string") {
|
|
493
|
+
return value;
|
|
494
|
+
}
|
|
495
|
+
if (value === undefined) {
|
|
496
|
+
return "";
|
|
497
|
+
}
|
|
498
|
+
try {
|
|
499
|
+
return JSON.stringify(value);
|
|
500
|
+
}
|
|
501
|
+
catch {
|
|
502
|
+
return String(value);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
function schemaToRecord(value) {
|
|
506
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
507
|
+
return undefined;
|
|
508
|
+
}
|
|
509
|
+
return value;
|
|
510
|
+
}
|
|
511
|
+
function hashStableJson(value) {
|
|
512
|
+
const json = stableStringify(value);
|
|
513
|
+
let hash = 5381;
|
|
514
|
+
for (let index = 0; index < json.length; index += 1) {
|
|
515
|
+
hash = ((hash << 5) + hash) ^ json.charCodeAt(index);
|
|
516
|
+
}
|
|
517
|
+
return `snap_${(hash >>> 0).toString(36)}`;
|
|
518
|
+
}
|
|
519
|
+
function stableStringify(value) {
|
|
520
|
+
if (!value || typeof value !== "object") {
|
|
521
|
+
return JSON.stringify(value);
|
|
522
|
+
}
|
|
523
|
+
if (Array.isArray(value)) {
|
|
524
|
+
return `[${value.map(stableStringify).join(",")}]`;
|
|
525
|
+
}
|
|
526
|
+
return `{${Object.keys(value)
|
|
527
|
+
.sort()
|
|
528
|
+
.map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`)
|
|
529
|
+
.join(",")}}`;
|
|
530
|
+
}
|
|
531
|
+
function resolveFetch(fetchImplementation) {
|
|
532
|
+
return fetchImplementation ?? globalThis.fetch?.bind(globalThis);
|
|
533
|
+
}
|
|
534
|
+
function isObjectWithKey(value, key) {
|
|
535
|
+
return typeof value === "object" && value !== null && key in value;
|
|
536
|
+
}
|
|
537
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4PA,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAC/D,MAAM,CAAC,MAAM,gCAAgC,GAAG,kCAAkC,CAAC;AACnF,MAAM,CAAC,MAAM,oCAAoC,GAAG,sCAAsC,CAAC;AAC3F,MAAM,CAAC,MAAM,+BAA+B,GAAG,gCAAgC,CAAC;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAE5D,MAAM,UAAU,wBAAwB,CAAC,OAAkC;IACzE,OAAO;QACL,WAAW,CAAC,KAAK;YACf,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAI;YACnB,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IACjE,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC7C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9F,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAe;YAC1B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;QACF,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAC1B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,MAAM;YACjB,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YAC/C,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7G,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzF,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IACpG,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAiB;IACtD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACpH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC9E,OAAO;YACL,GAAG,KAAK;YACR,OAAO,EAAE,+BAA+B,CAAC,KAAK,CAAC,OAAO,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA4B;IAClE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,OAA6B,EAC7B,OAAsC;IAEtC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACvF,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,YAAY,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAClC,OAAkC,EAClC,KAAmB;IAEnB,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,6FAA6F;SACrG,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACnG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,uDAAuD;SAC/D,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,0BAA0B,CAC9C,OAAO,EACP,SAAS,EACT,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CACjE,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACnG,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAE;QAC9F,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,MAAM,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC;QACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,iDAAiD,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,gBAAgB,CAAC,QAAQ,CAAC,EAAE;SACtK,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACpE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QACnC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC/C,KAAK,CAAC,CAAC,4BAA4B,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,OAAkC,EAClC,KAAmB,EACnB,SAAiB,EACjB,OAAqB;IAErB,OAAO,aAAa,CAAC;QACnB,SAAS;QACT,cAAc,EAAE,MAAM,2BAA2B,CAAC,OAAO,EAAE;YACzD,SAAS,EAAE,gBAAgB;YAC3B,SAAS;YACT,OAAO,EAAE,KAAK;SACf,CAAC;QACF,kBAAkB,EAAE,MAAM,+BAA+B,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;QACpF,OAAO,EAAE,aAAa,CAAC;YACrB,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAAkC,EAClC,KAAmB,EACnB,SAAiB,EACjB,MAAc,EACd,MAAkB;IAElB,OAAO,aAAa,CAAC;QACnB,SAAS;QACT,MAAM;QACN,cAAc,EAAE,MAAM,2BAA2B,CAAC,OAAO,EAAE;YACzD,SAAS,EAAE,oBAAoB;YAC/B,SAAS;YACT,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,KAAK;SACf,CAAC,IAAI,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QAChE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;QACpF,MAAM;QACN,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,OAAkC,EAClC,KAAgC;IAEhC,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACpD,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC3D,OAAO,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,SAAS,+BAA+B,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAkB;IAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,eAAe,SAAS,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,OAAkC,EAClC,KAAmB,EACnB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,OAAO,CAAC,wBAAwB;QAC/C,CAAC,CAAC,MAAM,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC;QAC1D,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE;YACR,GAAG,QAAQ,CAAC,QAAQ;YACpB,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC;SACvC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAA4C,EAC5C,SAAiB;IAEjB,OAAO;QACL,SAAS;QACT,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,KAAK,EAAE,QAAQ,CAAC,WAAW;YACzB,CAAC,CAAC;gBACE,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAC3B,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI;gBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW;gBAC7C,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY;gBAC/C,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,SAAS;gBACzC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ;aACxC;YACH,CAAC,CAAC,SAAS;QACb,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,aAAa,CAAC;YACZ,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ;SACxC,CAAC,CACH;QACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3C,aAAa,CAAC;YACZ,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5C,UAAU,EAAE,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACtE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ;SACrC,CAAC,CACH;QACD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,aAAa,CAAC;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;YACxD,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAChD,CAAC,CACH;QACD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACvC,aAAa,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ;SACnC,CAAC,CACH;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,aAAa,CAAC;YACtB,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;SACpD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,uBAAuB,CAAC,QAAkB;IACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,6DAA6D;SACrE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;YAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,wBAAwB,CAAC,QAAkB;IACzD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAIO,CAAC;IAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,OAAO,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,OAAO;IACT,CAAC;IAED,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,CAAC,KAA6B,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,OAA+B,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;AAClD,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA2B;IAC7D,OAAO,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAkB;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACnG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,SAAiB,EAAE,QAA6B;IAC3F,OAAO,qBAAqB,CAAC,QAAQ,IAAI,gCAAgC,EAAE,SAAS,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,SAAiB,EAAE,QAA6B;IAC9F,OAAO,qBAAqB,CAAC,QAAQ,IAAI,oCAAoC,EAAE,SAAS,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,SAAiB,EAAE,QAA6B;IAC1F,OAAO,qBAAqB,CAAC,QAAQ,IAAI,+BAA+B,EAAE,SAAS,CAAC,CAAC;AACvF,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,4BAA4B,CAC1C,KAAwB,EACxB,KAAmB,EACnB,SAAiB,EACjB,OAAkC;IAElC,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACzD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,8BAA8B;SACrF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,wEAAwE;SAC/H,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,0BAA0B,CAC9C,OAAO,EACP,SAAS,EACT,+BAA+B,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,CACvE,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAE;QAC9F,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,MAAM,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC;QACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QACnC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,wDAAwD,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,gBAAgB,CAAC,QAAQ,CAAC,EAAE;SAC7K,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACpE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QACnC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,MAAM,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC/C,KAAK,CAAC,CAAC,4BAA4B,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,IAAc,EACd,UAAgE;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI;SACvC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAwB;IAC/D,OAAO;QACL,GAAG,OAAO;QACV,IAAI,EAAE,OAAO,CAAC,YAAY;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA6C;IACrE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CACvB,OAA6C,EAC7C,KAAmB;IAEnB,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC;IACpD,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;QACtE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,IAAI,UAAU,EAAE,EAAE,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,0BAA0B,CACjC,OAAkC,EAClC,SAAiB,EACjB,QAAgB;IAEhB,OAAO,aAAa,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,OAAO,IAAI,uBAAuB,CAAC;QAC3E,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE;QAC/D,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,SAAiB;IAChE,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAc;IAC9C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,qEAAqE;KAC7E,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAoC,KAAQ;IAChE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAM,CAAC;AACnG,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC;SACrD,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SAClG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,mBAA4C;IAChE,OAAO,mBAAmB,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CACtB,KAAc,EACd,GAAM;IAEN,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC;AACrE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@baguette-studios/kernl-client",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": false,
|
|
6
|
+
"description": "Browser-safe Kernl client, session transport, and capability snapshot contracts.",
|
|
7
|
+
"license": "ISC",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/Jules-Astier/agent-context.git",
|
|
11
|
+
"directory": "packages/client"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/Jules-Astier/agent-context#readme",
|
|
14
|
+
"bugs": { "url": "https://github.com/Jules-Astier/agent-context/issues" },
|
|
15
|
+
"publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" },
|
|
16
|
+
"main": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md",
|
|
27
|
+
"LICENSE"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc -p tsconfig.json",
|
|
31
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
32
|
+
"test": "vitest run"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@baguette-studios/kernl-core": "0.1.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"typescript": "^5.8.3",
|
|
39
|
+
"vitest": "^4.1.9"
|
|
40
|
+
}
|
|
41
|
+
}
|