kernl 0.9.1 → 0.11.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.
Files changed (64) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +34 -0
  3. package/dist/agent/base.d.ts +5 -1
  4. package/dist/agent/base.d.ts.map +1 -1
  5. package/dist/agent/base.js +8 -0
  6. package/dist/agent.d.ts +1 -1
  7. package/dist/agent.d.ts.map +1 -1
  8. package/dist/agent.js +15 -2
  9. package/dist/context.d.ts +2 -0
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +2 -0
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -1
  15. package/dist/kernl/kernl.d.ts +1 -2
  16. package/dist/kernl/kernl.d.ts.map +1 -1
  17. package/dist/kernl/kernl.js +61 -1
  18. package/dist/lib/env.d.ts.map +1 -1
  19. package/dist/lib/env.js +1 -1
  20. package/dist/lifecycle/__tests__/hooks.test.d.ts +2 -0
  21. package/dist/lifecycle/__tests__/hooks.test.d.ts.map +1 -0
  22. package/dist/lifecycle/__tests__/hooks.test.js +553 -0
  23. package/dist/lifecycle.d.ts +222 -120
  24. package/dist/lifecycle.d.ts.map +1 -1
  25. package/dist/lifecycle.js +5 -23
  26. package/dist/memory/memory.js +1 -1
  27. package/dist/realtime/index.d.ts +1 -1
  28. package/dist/realtime/index.d.ts.map +1 -1
  29. package/dist/realtime/index.js +1 -1
  30. package/dist/realtime/session.d.ts +31 -22
  31. package/dist/realtime/session.d.ts.map +1 -1
  32. package/dist/realtime/session.js +64 -55
  33. package/dist/realtime/transport.d.ts +45 -0
  34. package/dist/realtime/transport.d.ts.map +1 -0
  35. package/dist/realtime/transport.js +32 -0
  36. package/dist/realtime/types.d.ts +8 -2
  37. package/dist/realtime/types.d.ts.map +1 -1
  38. package/dist/thread/__tests__/thread.test.js +2 -2
  39. package/dist/thread/thread.d.ts +2 -2
  40. package/dist/thread/thread.d.ts.map +1 -1
  41. package/dist/thread/thread.js +75 -8
  42. package/dist/thread/types.d.ts +1 -1
  43. package/dist/thread/types.d.ts.map +1 -1
  44. package/package.json +4 -4
  45. package/src/agent/base.ts +13 -1
  46. package/src/agent.ts +17 -3
  47. package/src/context.ts +2 -0
  48. package/src/index.ts +10 -1
  49. package/src/kernl/kernl.ts +67 -3
  50. package/src/lib/env.ts +3 -1
  51. package/src/lifecycle/__tests__/hooks.test.ts +668 -0
  52. package/src/lifecycle.ts +289 -163
  53. package/src/memory/memory.ts +1 -1
  54. package/src/realtime/index.ts +1 -1
  55. package/src/realtime/session.ts +88 -64
  56. package/src/realtime/transport.ts +64 -0
  57. package/src/realtime/types.ts +10 -2
  58. package/src/thread/__tests__/thread.test.ts +2 -2
  59. package/src/thread/thread.ts +88 -10
  60. package/src/thread/types.ts +1 -1
  61. package/dist/realtime/channel.d.ts +0 -30
  62. package/dist/realtime/channel.d.ts.map +0 -1
  63. package/dist/realtime/channel.js +0 -1
  64. package/src/realtime/channel.ts +0 -32
@@ -1,133 +1,235 @@
1
- import { EventEmitter } from "node:events";
2
- import { Agent } from "./agent.js";
3
- import { Context, UnknownContext } from "./context.js";
4
- import { Tool } from "./tool/index.js";
5
- import type { ToolCall } from "@kernl-sdk/protocol";
6
- import { AgentOutputType } from "./agent/types.js";
7
- import { TextOutput } from "./thread/types.js";
8
- export type EventEmitterEvents = Record<string, any[]>;
1
+ import { Emitter } from "@kernl-sdk/shared";
2
+ import type { LanguageModelUsage, LanguageModelFinishReason, LanguageModelRequestSettings, ToolCallState } from "@kernl-sdk/protocol";
3
+ import type { Context } from "./context.js";
4
+ import type { ThreadState } from "./thread/types.js";
9
5
  /**
10
- * Generic typed event emitter that wraps Node's EventEmitter with type safety
6
+ * Emitted when a thread starts execution.
11
7
  */
12
- declare class TypedEventEmitter<EventTypes extends EventEmitterEvents = Record<string, any[]>> extends EventEmitter {
13
- on<K extends keyof EventTypes>(event: K, listener: (...args: EventTypes[K]) => void): this;
14
- on(event: string | symbol, listener: (...args: any[]) => void): this;
15
- off<K extends keyof EventTypes>(event: K, listener: (...args: EventTypes[K]) => void): this;
16
- off(event: string | symbol, listener: (...args: any[]) => void): this;
17
- emit<K extends keyof EventTypes>(event: K, ...args: EventTypes[K]): boolean;
18
- emit(event: string | symbol, ...args: any[]): boolean;
19
- once<K extends keyof EventTypes>(event: K, listener: (...args: EventTypes[K]) => void): this;
20
- once(event: string | symbol, listener: (...args: any[]) => void): this;
8
+ export interface ThreadStartEvent<TContext = unknown> {
9
+ readonly kind: "thread.start";
10
+ /**
11
+ * The thread ID.
12
+ */
13
+ threadId: string;
14
+ /**
15
+ * The agent executing this thread.
16
+ */
17
+ agentId: string;
18
+ /**
19
+ * The namespace of the thread.
20
+ */
21
+ namespace: string;
22
+ /**
23
+ * The context for this execution.
24
+ *
25
+ * NOTE: Includes `context.agent` reference for tools - may be optimized in future.
26
+ */
27
+ context: Context<TContext>;
28
+ }
29
+ /**
30
+ * Emitted when a thread stops execution.
31
+ */
32
+ export interface ThreadStopEvent<TContext = unknown, TOutput = unknown> {
33
+ readonly kind: "thread.stop";
34
+ /**
35
+ * The thread ID.
36
+ */
37
+ threadId: string;
38
+ /**
39
+ * The agent that executed this thread.
40
+ */
41
+ agentId: string;
42
+ /**
43
+ * The namespace of the thread.
44
+ */
45
+ namespace: string;
46
+ /**
47
+ * The context for this execution.
48
+ *
49
+ * NOTE: Includes `context.agent` reference for tools - may be optimized in future.
50
+ */
51
+ context: Context<TContext>;
52
+ /**
53
+ * Final state of the thread.
54
+ */
55
+ state: ThreadState;
56
+ /**
57
+ * The outcome of the execution.
58
+ */
59
+ outcome: "success" | "error" | "cancelled";
60
+ /**
61
+ * The result if outcome is "success".
62
+ */
63
+ result?: TOutput;
64
+ /**
65
+ * Error message if outcome is "error".
66
+ */
67
+ error?: string;
68
+ }
69
+ /**
70
+ * Emitted when a model call starts.
71
+ */
72
+ export interface ModelCallStartEvent<TContext = unknown> {
73
+ readonly kind: "model.call.start";
74
+ /**
75
+ * The model provider.
76
+ */
77
+ provider: string;
78
+ /**
79
+ * The model ID.
80
+ */
81
+ modelId: string;
82
+ /**
83
+ * Request settings passed to the model.
84
+ */
85
+ settings: LanguageModelRequestSettings;
86
+ /**
87
+ * Thread ID if called within a thread context.
88
+ */
89
+ threadId?: string;
90
+ /**
91
+ * Agent ID if called within an agent context.
92
+ */
93
+ agentId?: string;
94
+ /**
95
+ * Execution context if available.
96
+ *
97
+ * NOTE: Includes `context.agent` reference for tools - may be optimized in future.
98
+ */
99
+ context?: Context<TContext>;
100
+ }
101
+ /**
102
+ * Emitted when a model call ends.
103
+ */
104
+ export interface ModelCallEndEvent<TContext = unknown> {
105
+ readonly kind: "model.call.end";
106
+ /**
107
+ * The model provider.
108
+ */
109
+ provider: string;
110
+ /**
111
+ * The model ID.
112
+ */
113
+ modelId: string;
114
+ /**
115
+ * Reason the model stopped generating.
116
+ */
117
+ finishReason: LanguageModelFinishReason;
118
+ /**
119
+ * Token usage for this call.
120
+ */
121
+ usage?: LanguageModelUsage;
122
+ /**
123
+ * Thread ID if called within a thread context.
124
+ */
125
+ threadId?: string;
126
+ /**
127
+ * Agent ID if called within an agent context.
128
+ */
129
+ agentId?: string;
130
+ /**
131
+ * Execution context if available.
132
+ *
133
+ * NOTE: Includes `context.agent` reference for tools - may be optimized in future.
134
+ */
135
+ context?: Context<TContext>;
136
+ }
137
+ /**
138
+ * Emitted when a tool call starts.
139
+ */
140
+ export interface ToolCallStartEvent<TContext = unknown> {
141
+ readonly kind: "tool.call.start";
142
+ /**
143
+ * The thread ID.
144
+ */
145
+ threadId: string;
146
+ /**
147
+ * The agent executing this tool.
148
+ */
149
+ agentId: string;
150
+ /**
151
+ * The context for this execution.
152
+ *
153
+ * NOTE: Includes `context.agent` reference for tools - may be optimized in future.
154
+ */
155
+ context: Context<TContext>;
156
+ /**
157
+ * The tool being called.
158
+ */
159
+ toolId: string;
160
+ /**
161
+ * Unique identifier for this call.
162
+ */
163
+ callId: string;
164
+ /**
165
+ * Arguments passed to the tool (parsed JSON).
166
+ */
167
+ args: Record<string, unknown>;
21
168
  }
22
- export type AgentHookEvents<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput> = {
23
- /**
24
- * @param context - The context of the run
25
- */
26
- agent_start: [context: Context<TContext>, agent: Agent<TContext, TOutput>];
27
- /**
28
- * @param context - The context of the run
29
- * @param output - The output of the agent
30
- */
31
- agent_end: [context: Context<TContext>, output: string];
32
- /**
33
- * @param context - The context of the run
34
- * @param agent - The agent that is starting a tool
35
- * @param tool - The tool that is starting
36
- */
37
- agent_tool_start: [
38
- context: Context<TContext>,
39
- tool: Tool<any>,
40
- details: {
41
- toolCall: ToolCall;
42
- }
43
- ];
44
- /**
45
- * @param context - The context of the run
46
- * @param agent - The agent that is ending a tool
47
- * @param tool - The tool that is ending
48
- * @param result - The result of the tool
49
- */
50
- agent_tool_end: [
51
- context: Context<TContext>,
52
- tool: Tool<any>,
53
- result: string,
54
- details: {
55
- toolCall: ToolCall;
56
- }
57
- ];
58
- };
59
169
  /**
60
- * Event emitter that every Agent instance inherits from and that emits events for the lifecycle
61
- * of the agent.
170
+ * Emitted when a tool call ends.
62
171
  */
63
- export declare class AgentHooks<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput> extends TypedEventEmitter<AgentHookEvents<TContext, TOutput>> {
172
+ export interface ToolCallEndEvent<TContext = unknown> {
173
+ readonly kind: "tool.call.end";
174
+ /**
175
+ * The thread ID.
176
+ */
177
+ threadId: string;
178
+ /**
179
+ * The agent that executed this tool.
180
+ */
181
+ agentId: string;
182
+ /**
183
+ * The context for this execution.
184
+ *
185
+ * NOTE: Includes `context.agent` reference for tools - may be optimized in future.
186
+ */
187
+ context: Context<TContext>;
188
+ /**
189
+ * The tool that was called.
190
+ */
191
+ toolId: string;
192
+ /**
193
+ * Unique identifier for this call.
194
+ */
195
+ callId: string;
196
+ /**
197
+ * Final state of the tool call.
198
+ */
199
+ state: ToolCallState;
200
+ /**
201
+ * Result if state is "completed".
202
+ */
203
+ result?: string;
204
+ /**
205
+ * Error message if state is "failed", null if successful.
206
+ */
207
+ error: string | null;
64
208
  }
209
+ export type LifecycleEvent<TContext = unknown, TOutput = unknown> = ThreadStartEvent<TContext> | ThreadStopEvent<TContext, TOutput> | ModelCallStartEvent<TContext> | ModelCallEndEvent<TContext> | ToolCallStartEvent<TContext> | ToolCallEndEvent<TContext>;
65
210
  /**
66
- * Events emitted by the kernl during execution.
67
- *
68
- * Unlike AgentHookEvents (which are emitted by individual agents with implicit context),
69
- * KernlHookEvents explicitly include the agent reference in all events since it needs to
70
- * coordinate multiple agents and listeners need to know which agent triggered each event.
211
+ * Event map for agent-level lifecycle hooks (typed).
71
212
  */
72
- export type KernlHookEvents<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput> = {
73
- /**
74
- * @param context - The context of the run
75
- * @param agent - The agent that is starting
76
- */
77
- agent_start: [context: Context<TContext>, agent: Agent<TContext, TOutput>];
78
- /**
79
- * @param context - The context of the run
80
- * @param agent - The agent that is ending
81
- * @param output - The output of the agent
82
- */
83
- agent_end: [
84
- context: Context<TContext>,
85
- agent: Agent<TContext, TOutput>,
86
- output: string
87
- ];
88
- /**
89
- * @param context - The context of the run
90
- * @param fromAgent - The agent that is handing off
91
- * @param toAgent - The next agent to run
92
- */
93
- agent_handoff: [
94
- context: Context<TContext>,
95
- fromAgent: Agent<any, any>,
96
- toAgent: Agent<any, any>
97
- ];
98
- /**
99
- * @param context - The context of the run
100
- * @param agent - The agent that is starting a tool
101
- * @param tool - The tool that is starting
102
- */
103
- agent_tool_start: [
104
- context: Context<TContext>,
105
- agent: Agent<TContext, TOutput>,
106
- tool: Tool,
107
- details: {
108
- toolCall: ToolCall;
109
- }
110
- ];
111
- /**
112
- * @param context - The context of the run
113
- * @param agent - The agent that is ending a tool
114
- * @param tool - The tool that is ending
115
- * @param result - The result of the tool
116
- */
117
- agent_tool_end: [
118
- context: Context<TContext>,
119
- agent: Agent<TContext, TOutput>,
120
- tool: Tool,
121
- result: string,
122
- details: {
123
- toolCall: ToolCall;
124
- }
125
- ];
213
+ export type AgentHookEvents<TContext = unknown, TOutput = unknown> = {
214
+ "thread.start": [event: ThreadStartEvent<TContext>];
215
+ "thread.stop": [event: ThreadStopEvent<TContext, TOutput>];
216
+ "model.call.start": [event: ModelCallStartEvent<TContext>];
217
+ "model.call.end": [event: ModelCallEndEvent<TContext>];
218
+ "tool.call.start": [event: ToolCallStartEvent<TContext>];
219
+ "tool.call.end": [event: ToolCallEndEvent<TContext>];
126
220
  };
127
221
  /**
128
- * Event emitter that the kernl uses to emit events for the lifecycle of every agent run.
222
+ * Event map for Kernl-level lifecycle hooks (untyped).
223
+ */
224
+ export type KernlHookEvents = AgentHookEvents<unknown, unknown>;
225
+ /**
226
+ * Event emitter for agent-level lifecycle events.
227
+ */
228
+ export declare class AgentHooks<TContext = unknown, TOutput = unknown> extends Emitter<AgentHookEvents<TContext, TOutput>> {
229
+ }
230
+ /**
231
+ * Event emitter for Kernl-level lifecycle events.
129
232
  */
130
- export declare class KernlHooks<TContext = UnknownContext, TOutput extends AgentOutputType = TextOutput> extends TypedEventEmitter<KernlHookEvents<TContext, TOutput>> {
233
+ export declare class KernlHooks extends Emitter<KernlHookEvents> {
131
234
  }
132
- export {};
133
235
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
package/dist/lifecycle.js CHANGED
@@ -1,29 +1,11 @@
1
- import { EventEmitter } from "node:events";
1
+ import { Emitter } from "@kernl-sdk/shared";
2
2
  /**
3
- * Generic typed event emitter that wraps Node's EventEmitter with type safety
3
+ * Event emitter for agent-level lifecycle events.
4
4
  */
5
- class TypedEventEmitter extends EventEmitter {
6
- on(event, listener) {
7
- return super.on(event, listener);
8
- }
9
- off(event, listener) {
10
- return super.off(event, listener);
11
- }
12
- emit(event, ...args) {
13
- return super.emit(event, ...args);
14
- }
15
- once(event, listener) {
16
- return super.once(event, listener);
17
- }
5
+ export class AgentHooks extends Emitter {
18
6
  }
19
7
  /**
20
- * Event emitter that every Agent instance inherits from and that emits events for the lifecycle
21
- * of the agent.
8
+ * Event emitter for Kernl-level lifecycle events.
22
9
  */
23
- export class AgentHooks extends TypedEventEmitter {
24
- }
25
- /**
26
- * Event emitter that the kernl uses to emit events for the lifecycle of every agent run.
27
- */
28
- export class KernlHooks extends TypedEventEmitter {
10
+ export class KernlHooks extends Emitter {
29
11
  }
@@ -68,7 +68,7 @@ export class Memory {
68
68
  return this._search.query({
69
69
  query: [{ text: q.query, tvec: tvec ?? undefined }],
70
70
  filter: q.filter ? MEMORY_FILTER.encode(q.filter) : undefined,
71
- topK: q.limit ?? 20,
71
+ limit: q.limit ?? 20,
72
72
  });
73
73
  }
74
74
  /**
@@ -1,5 +1,5 @@
1
1
  export * from "./types.js";
2
- export * from "./channel.js";
3
2
  export * from "./agent.js";
4
3
  export * from "./session.js";
4
+ export * from "./transport.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export * from "./types.js";
2
- export * from "./channel.js";
3
2
  export * from "./agent.js";
4
3
  export * from "./session.js";
4
+ export * from "./transport.js";
@@ -1,16 +1,25 @@
1
- import { EventEmitter } from "node:events";
2
- import { RealtimeModel } from "@kernl-sdk/protocol";
1
+ import { Emitter } from "@kernl-sdk/shared";
2
+ import { RealtimeModel, RealtimeServerEvent, RealtimeChannel, TransportStatus } from "@kernl-sdk/protocol";
3
3
  import { Context, UnknownContext } from "../context.js";
4
4
  import { RealtimeAgent } from "./agent.js";
5
- import type { RealtimeChannel } from "./channel.js";
6
5
  import type { RealtimeSessionOptions } from "./types.js";
6
+ /**
7
+ * Events emitted by a realtime session.
8
+ */
9
+ export type RealtimeSessionEvents = {
10
+ audio: [event: RealtimeServerEvent];
11
+ transcript: [event: RealtimeServerEvent];
12
+ text: [event: RealtimeServerEvent];
13
+ error: [error: Error];
14
+ status: [status: TransportStatus];
15
+ };
7
16
  /**
8
17
  * A realtime session manages the connection to a realtime model.
9
18
  *
10
19
  * Handles the bidirectional communication between an agent and a model,
11
20
  * including audio I/O (via channels), tool execution, and event routing.
12
21
  */
13
- export declare class RealtimeSession<TContext = UnknownContext> extends EventEmitter {
22
+ export declare class RealtimeSession<TContext = UnknownContext> extends Emitter<RealtimeSessionEvents> {
14
23
  /**
15
24
  * Session ID. Null until connected.
16
25
  */
@@ -48,24 +57,6 @@ export declare class RealtimeSession<TContext = UnknownContext> extends EventEmi
48
57
  * Initialize event listeners and send session configuration.
49
58
  */
50
59
  private init;
51
- /**
52
- * Build session configuration from agent.
53
- */
54
- private buildSessionConfig;
55
- /**
56
- * Handle incoming events from the connection.
57
- *
58
- * Maps protocol events to simplified user-facing events:
59
- * - 'audio' - audio output from assistant
60
- * - 'transcript' - speech transcriptions (user or assistant)
61
- * - 'text' - text output from assistant
62
- * - 'error' - errors
63
- */
64
- private onEvent;
65
- /**
66
- * Execute tool calls from the model.
67
- */
68
- private performActions;
69
60
  /**
70
61
  * Send audio to the model.
71
62
  */
@@ -94,5 +85,23 @@ export declare class RealtimeSession<TContext = UnknownContext> extends EventEmi
94
85
  * Close the session and release resources.
95
86
  */
96
87
  close(): void;
88
+ /**
89
+ * Build session configuration from agent.
90
+ */
91
+ private buildSessionConfig;
92
+ /**
93
+ * Handle incoming events from the connection.
94
+ *
95
+ * Maps protocol events to simplified user-facing events:
96
+ * - 'audio' - audio output from assistant
97
+ * - 'transcript' - speech transcriptions (user or assistant)
98
+ * - 'text' - text output from assistant
99
+ * - 'error' - errors
100
+ */
101
+ private onEvent;
102
+ /**
103
+ * Execute tool calls from the model.
104
+ */
105
+ private performActions;
97
106
  }
98
107
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/realtime/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,aAAa,EAMd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,QAAQ,GAAG,cAAc,CAAE,SAAQ,YAAY;IAC1E;;OAEG;IACH,EAAE,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAmC;IAErD;;OAEG;IACH,OAAO,CAAC,OAAO,CAAmC;gBAGhD,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC9B,OAAO,GAAE,sBAAsB,CAAC,QAAQ,CAAM;IAiBhD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;YACW,IAAI;IAalB;;OAEG;YACW,kBAAkB;IAUhC;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAuCf;;OAEG;YACW,cAAc;IAyB5B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/B;;OAEG;IACH,SAAS,IAAI,IAAI;IAKjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/realtime/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,aAAa,EAEb,mBAAmB,EAEnB,eAAe,EAEf,eAAe,EAEhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,eAAe,CAC1B,QAAQ,GAAG,cAAc,CACzB,SAAQ,OAAO,CAAC,qBAAqB,CAAC;IACtC;;OAEG;IACH,EAAE,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAmC;IAErD;;OAEG;IACH,OAAO,CAAC,OAAO,CAAmC;gBAGhD,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC9B,OAAO,GAAE,sBAAsB,CAAC,QAAQ,CAAM;IAiBhD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B;;OAEG;YACW,IAAI;IAalB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/B;;OAEG;IACH,SAAS,IAAI,IAAI;IAKjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;YACW,kBAAkB;IAehC;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO;IAuCf;;OAEG;YACW,cAAc;CAwB7B"}