@agentuity/runtime 0.0.68 → 0.0.69

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.
@@ -0,0 +1,508 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /**
3
+ * Runtime and compile-time tests for agent.validator()
4
+ *
5
+ * These tests verify both:
6
+ * 1. Runtime validation behavior (expect() assertions)
7
+ * 2. Compile-time type inference (inline type annotations)
8
+ *
9
+ * Type safety is validated by:
10
+ * - Using typed variable assignments (e.g., const name: string = data.name)
11
+ * - Passing data to functions with specific type signatures
12
+ * - If types regress, these tests will fail during `bun run typecheck`
13
+ */
14
+ import { describe, test, expect } from 'bun:test';
15
+ import { Hono } from 'hono';
16
+ import { z } from 'zod';
17
+ import { createAgent } from './agent';
18
+ describe('agent.validator()', () => {
19
+ const testAgent = createAgent({
20
+ metadata: { name: 'Test Agent' },
21
+ schema: {
22
+ input: z.object({ name: z.string(), age: z.number() }),
23
+ output: z.string(),
24
+ },
25
+ handler: async (_ctx, input) => {
26
+ return `Hello, ${input.name}! You are ${input.age} years old.`;
27
+ },
28
+ });
29
+ test('validates input using agent schema', async () => {
30
+ const app = new Hono();
31
+ app.post('/test', testAgent.validator(), async (c) => {
32
+ const data = c.req.valid('json');
33
+ // TYPE ASSERTION: data should be typed as { name: string, age: number }
34
+ const name = data.name;
35
+ const age = data.age;
36
+ expect(name).toBe('Alice');
37
+ expect(age).toBe(30);
38
+ return c.json(`${data.name}-${data.age}`);
39
+ });
40
+ const validRes = await app.request('/test', {
41
+ method: 'POST',
42
+ headers: { 'Content-Type': 'application/json' },
43
+ body: JSON.stringify({ name: 'Alice', age: 30 }),
44
+ });
45
+ expect(validRes.status).toBe(200);
46
+ const validData = await validRes.json();
47
+ expect(validData).toBe('Alice-30');
48
+ });
49
+ test('returns 400 on input validation failure', async () => {
50
+ const app = new Hono();
51
+ app.post('/test', testAgent.validator(), async (c) => {
52
+ const data = c.req.valid('json');
53
+ return c.json(`${data.name}-${data.age}`);
54
+ });
55
+ const res = await app.request('/test', {
56
+ method: 'POST',
57
+ headers: { 'Content-Type': 'application/json' },
58
+ body: JSON.stringify({ name: 'Bob' }),
59
+ });
60
+ expect(res.status).toBe(400);
61
+ const error = await res.json();
62
+ expect(error).toHaveProperty('error', 'Validation failed');
63
+ expect(error).toHaveProperty('issues');
64
+ expect(Array.isArray(error.issues)).toBe(true);
65
+ });
66
+ test('overrides input schema', async () => {
67
+ const customSchema = z.object({
68
+ email: z.string().email(),
69
+ count: z.number().min(1),
70
+ });
71
+ const app = new Hono();
72
+ app.post('/test', testAgent.validator({ input: customSchema }), async (c) => {
73
+ const data = c.req.valid('json');
74
+ // TYPE ASSERTION: data should be typed from CUSTOM schema, not agent schema
75
+ const email = data.email;
76
+ const count = data.count;
77
+ expect(email).toBeDefined();
78
+ expect(count).toBeGreaterThan(0);
79
+ return c.text('ok');
80
+ });
81
+ const validRes = await app.request('/test', {
82
+ method: 'POST',
83
+ headers: { 'Content-Type': 'application/json' },
84
+ body: JSON.stringify({ email: 'test@example.com', count: 5 }),
85
+ });
86
+ expect(validRes.status).toBe(200);
87
+ const invalidRes = await app.request('/test', {
88
+ method: 'POST',
89
+ headers: { 'Content-Type': 'application/json' },
90
+ body: JSON.stringify({ email: 'invalid', count: 5 }),
91
+ });
92
+ expect(invalidRes.status).toBe(400);
93
+ });
94
+ test('supports middleware chaining', async () => {
95
+ const app = new Hono();
96
+ const testMiddleware = async (c, next) => {
97
+ c.set('middlewareRan', true);
98
+ await next();
99
+ };
100
+ app.post('/test', testAgent.validator(), testMiddleware, async (c) => {
101
+ const data = c.req.valid('json');
102
+ const middlewareRan = c.get('middlewareRan');
103
+ expect(middlewareRan).toBe(true);
104
+ return c.json(`${data.name}-${data.age}`);
105
+ });
106
+ const res = await app.request('/test', {
107
+ method: 'POST',
108
+ headers: { 'Content-Type': 'application/json' },
109
+ body: JSON.stringify({ name: 'Dave', age: 40 }),
110
+ });
111
+ expect(res.status).toBe(200);
112
+ const result = await res.json();
113
+ expect(result).toBe('Dave-40');
114
+ });
115
+ test('validates multiple fields with detailed errors', async () => {
116
+ const complexSchema = z.object({
117
+ email: z.string().email(),
118
+ age: z.number().min(18).max(100),
119
+ username: z.string().min(3).max(20),
120
+ });
121
+ const complexAgent = createAgent({
122
+ metadata: { name: 'Complex' },
123
+ schema: {
124
+ input: complexSchema,
125
+ output: z.string(),
126
+ },
127
+ handler: async () => 'ok',
128
+ });
129
+ const app = new Hono();
130
+ app.post('/test', complexAgent.validator(), async (c) => {
131
+ return c.text('ok');
132
+ });
133
+ const res = await app.request('/test', {
134
+ method: 'POST',
135
+ headers: { 'Content-Type': 'application/json' },
136
+ body: JSON.stringify({
137
+ email: 'invalid-email',
138
+ age: 15,
139
+ username: 'ab',
140
+ }),
141
+ });
142
+ expect(res.status).toBe(400);
143
+ const error = await res.json();
144
+ expect(error.issues.length).toBeGreaterThan(0);
145
+ });
146
+ test('handles nested object validation', async () => {
147
+ const nestedAgent = createAgent({
148
+ metadata: { name: 'Nested' },
149
+ schema: {
150
+ input: z.object({
151
+ user: z.object({
152
+ name: z.string(),
153
+ address: z.object({
154
+ city: z.string(),
155
+ zip: z.string(),
156
+ }),
157
+ }),
158
+ }),
159
+ output: z.string(),
160
+ },
161
+ handler: async () => 'ok',
162
+ });
163
+ const app = new Hono();
164
+ app.post('/test', nestedAgent.validator(), async (c) => {
165
+ const _data = c.req.valid('json');
166
+ return c.text('ok');
167
+ });
168
+ const validRes = await app.request('/test', {
169
+ method: 'POST',
170
+ headers: { 'Content-Type': 'application/json' },
171
+ body: JSON.stringify({
172
+ user: {
173
+ name: 'Alice',
174
+ address: { city: 'NYC', zip: '10001' },
175
+ },
176
+ }),
177
+ });
178
+ expect(validRes.status).toBe(200);
179
+ const invalidRes = await app.request('/test', {
180
+ method: 'POST',
181
+ headers: { 'Content-Type': 'application/json' },
182
+ body: JSON.stringify({
183
+ user: {
184
+ name: 'Bob',
185
+ address: { zip: '10001' },
186
+ },
187
+ }),
188
+ });
189
+ expect(invalidRes.status).toBe(400);
190
+ const error = await invalidRes.json();
191
+ expect(error.message).toContain('city');
192
+ });
193
+ test('validates arrays in input', async () => {
194
+ const arrayAgent = createAgent({
195
+ metadata: { name: 'Array Agent' },
196
+ schema: {
197
+ input: z.object({
198
+ items: z.array(z.string()),
199
+ count: z.number(),
200
+ }),
201
+ output: z.number(),
202
+ },
203
+ handler: async (_ctx, input) => input.items.length,
204
+ });
205
+ const app = new Hono();
206
+ app.post('/test', arrayAgent.validator(), async (c) => {
207
+ const data = c.req.valid('json');
208
+ return c.json(data.items.length);
209
+ });
210
+ const res = await app.request('/test', {
211
+ method: 'POST',
212
+ headers: { 'Content-Type': 'application/json' },
213
+ body: JSON.stringify({ items: ['a', 'b', 'c'], count: 3 }),
214
+ });
215
+ expect(res.status).toBe(200);
216
+ const result = await res.json();
217
+ expect(result).toBe(3);
218
+ });
219
+ test('agent with input-only schema (no output)', async () => {
220
+ // Agent with input but NO output schema
221
+ // Handler should be constrained to return void/undefined
222
+ const inputOnlyAgent = createAgent({
223
+ metadata: { name: 'Input Only' },
224
+ schema: {
225
+ input: z.string(),
226
+ // NO output schema
227
+ },
228
+ handler: async (_ctx, input) => {
229
+ // Handler must return void when no output schema
230
+ console.log(`Received: ${input}`);
231
+ return undefined;
232
+ },
233
+ });
234
+ const app = new Hono();
235
+ app.post('/test', inputOnlyAgent.validator(), async (c) => {
236
+ const data = c.req.valid('json');
237
+ // TYPE ASSERTION: data should be typed as string (the input schema)
238
+ const input = data;
239
+ expect(input).toBe('test-input');
240
+ return c.text('processed');
241
+ });
242
+ const res = await app.request('/test', {
243
+ method: 'POST',
244
+ headers: { 'Content-Type': 'application/json' },
245
+ body: JSON.stringify('test-input'),
246
+ });
247
+ expect(res.status).toBe(200);
248
+ });
249
+ test('handles streaming agent without output schema', async () => {
250
+ const streamAgent = createAgent({
251
+ metadata: { name: 'Stream Agent' },
252
+ schema: {
253
+ input: z.object({ message: z.string() }),
254
+ stream: true,
255
+ },
256
+ handler: async (_ctx, input) => {
257
+ return new ReadableStream({
258
+ start(controller) {
259
+ controller.enqueue(`Message: ${input.message}`);
260
+ controller.close();
261
+ },
262
+ });
263
+ },
264
+ });
265
+ const app = new Hono();
266
+ app.post('/test', streamAgent.validator(), async (c) => {
267
+ const data = c.req.valid('json');
268
+ // TYPE ASSERTION: data should have 'message' property typed as string
269
+ const msg = data.message;
270
+ expect(msg).toBe('test');
271
+ // TYPE ASSERTION: Should be able to pass to function expecting the type
272
+ const validate = (input) => input.message;
273
+ expect(validate(data)).toBe('test');
274
+ return c.text('ok');
275
+ });
276
+ const res = await app.request('/test', {
277
+ method: 'POST',
278
+ headers: { 'Content-Type': 'application/json' },
279
+ body: JSON.stringify({ message: 'test' }),
280
+ });
281
+ expect(res.status).toBe(200);
282
+ });
283
+ test('middleware before validator can modify context', async () => {
284
+ const app = new Hono();
285
+ const authMiddleware = async (c, next) => {
286
+ c.set('userId', 'user-123');
287
+ c.set('authenticated', true);
288
+ await next();
289
+ };
290
+ app.post('/test', authMiddleware, testAgent.validator(), async (c) => {
291
+ const data = c.req.valid('json');
292
+ const userId = c.get('userId');
293
+ const authenticated = c.get('authenticated');
294
+ expect(userId).toBe('user-123');
295
+ expect(authenticated).toBe(true);
296
+ return c.json(`${data.name}-${data.age}`);
297
+ });
298
+ const res = await app.request('/test', {
299
+ method: 'POST',
300
+ headers: { 'Content-Type': 'application/json' },
301
+ body: JSON.stringify({ name: 'Eve', age: 35 }),
302
+ });
303
+ expect(res.status).toBe(200);
304
+ const result = await res.json();
305
+ expect(result).toBe('Eve-35');
306
+ });
307
+ test('middleware after validator receives validated data', async () => {
308
+ const app = new Hono();
309
+ const loggingMiddleware = async (c, next) => {
310
+ const data = c.req.valid('json');
311
+ c.set('loggedName', data.name);
312
+ await next();
313
+ };
314
+ app.post('/test', testAgent.validator(), loggingMiddleware, async (c) => {
315
+ const data = c.req.valid('json');
316
+ const loggedName = c.get('loggedName');
317
+ expect(loggedName).toBe(data.name);
318
+ return c.json(`${data.name}-${data.age}`);
319
+ });
320
+ const res = await app.request('/test', {
321
+ method: 'POST',
322
+ headers: { 'Content-Type': 'application/json' },
323
+ body: JSON.stringify({ name: 'Frank', age: 45 }),
324
+ });
325
+ expect(res.status).toBe(200);
326
+ });
327
+ test('multiple middleware with validator in chain', async () => {
328
+ const app = new Hono();
329
+ const middleware1 = async (c, next) => {
330
+ c.set('step1', true);
331
+ await next();
332
+ };
333
+ const middleware2 = async (c, next) => {
334
+ c.set('step2', true);
335
+ await next();
336
+ };
337
+ const middleware3 = async (c, next) => {
338
+ c.set('step3', true);
339
+ await next();
340
+ };
341
+ app.post('/test', middleware1, testAgent.validator(), middleware2, middleware3, async (c) => {
342
+ const data = c.req.valid('json');
343
+ expect(c.get('step1')).toBe(true);
344
+ expect(c.get('step2')).toBe(true);
345
+ expect(c.get('step3')).toBe(true);
346
+ return c.json(`${data.name}-${data.age}`);
347
+ });
348
+ const res = await app.request('/test', {
349
+ method: 'POST',
350
+ headers: { 'Content-Type': 'application/json' },
351
+ body: JSON.stringify({ name: 'Test', age: 30 }),
352
+ });
353
+ expect(res.status).toBe(200);
354
+ const result = await res.json();
355
+ expect(result).toBe('Test-30');
356
+ });
357
+ test('validation fails before subsequent middleware runs', async () => {
358
+ const app = new Hono();
359
+ let middlewareRan = false;
360
+ const afterValidationMiddleware = async (c, next) => {
361
+ middlewareRan = true;
362
+ await next();
363
+ };
364
+ app.post('/test', testAgent.validator(), afterValidationMiddleware, async (c) => {
365
+ return c.text('ok');
366
+ });
367
+ // Invalid request - middleware should NOT run
368
+ middlewareRan = false;
369
+ await app.request('/test', {
370
+ method: 'POST',
371
+ headers: { 'Content-Type': 'application/json' },
372
+ body: JSON.stringify({ invalid: 'data' }),
373
+ });
374
+ expect(middlewareRan).toBe(false);
375
+ });
376
+ test('middleware can short-circuit before validator', async () => {
377
+ const app = new Hono();
378
+ const blockMiddleware = async (c, next) => {
379
+ const body = await c.req.json();
380
+ if (body.blocked) {
381
+ return c.json({ error: 'Blocked by middleware' }, 403);
382
+ }
383
+ await next();
384
+ };
385
+ app.post('/test', blockMiddleware, testAgent.validator(), async (c) => {
386
+ const data = c.req.valid('json');
387
+ return c.json(`${data.name}-${data.age}`);
388
+ });
389
+ // Blocked request returns 403, validation never runs
390
+ const blockedRes = await app.request('/test', {
391
+ method: 'POST',
392
+ headers: { 'Content-Type': 'application/json' },
393
+ body: JSON.stringify({ name: 'Test', age: 30, blocked: true }),
394
+ });
395
+ expect(blockedRes.status).toBe(403);
396
+ // Non-blocked request validates normally
397
+ const allowedRes = await app.request('/test', {
398
+ method: 'POST',
399
+ headers: { 'Content-Type': 'application/json' },
400
+ body: JSON.stringify({ name: 'Test', age: 30 }),
401
+ });
402
+ expect(allowedRes.status).toBe(200);
403
+ });
404
+ });
405
+ describe('agent.validator() - output validation', () => {
406
+ test('validates output against agent schema', async () => {
407
+ const agent = createAgent({
408
+ metadata: { name: 'Output Test' },
409
+ schema: {
410
+ input: z.object({ value: z.number() }),
411
+ output: z.object({ result: z.number() }),
412
+ },
413
+ handler: async (_ctx, input) => ({ result: input.value * 2 }),
414
+ });
415
+ const app = new Hono();
416
+ app.post('/test', agent.validator(), async (c) => {
417
+ const data = c.req.valid('json');
418
+ // Return properly formatted output matching the schema
419
+ return c.json({ result: data.value * 2 });
420
+ });
421
+ const res = await app.request('/test', {
422
+ method: 'POST',
423
+ headers: { 'Content-Type': 'application/json' },
424
+ body: JSON.stringify({ value: 5 }),
425
+ });
426
+ expect(res.status).toBe(200);
427
+ const result = await res.json();
428
+ expect(result).toEqual({ result: 10 });
429
+ });
430
+ test('throws 500 on output validation failure', async () => {
431
+ const agent = createAgent({
432
+ metadata: { name: 'Bad Output' },
433
+ schema: {
434
+ input: z.object({ value: z.number() }),
435
+ output: z.object({ result: z.number() }),
436
+ },
437
+ handler: async () => ({ result: 5 }),
438
+ });
439
+ const app = new Hono();
440
+ app.post('/test', agent.validator(), async (c) => {
441
+ // Handler returns wrong type - should cause output validation error
442
+ return c.json({ wrong: 'type' });
443
+ });
444
+ const res = await app.request('/test', {
445
+ method: 'POST',
446
+ headers: { 'Content-Type': 'application/json' },
447
+ body: JSON.stringify({ value: 5 }),
448
+ });
449
+ expect(res.status).toBe(500);
450
+ });
451
+ test('output validation with override schema', async () => {
452
+ const agent = createAgent({
453
+ metadata: { name: 'Override Output' },
454
+ schema: {
455
+ input: z.object({ x: z.number() }),
456
+ output: z.string(),
457
+ },
458
+ handler: async () => 'default',
459
+ });
460
+ const customOutput = z.object({ count: z.number() });
461
+ const app = new Hono();
462
+ app.post('/test', agent.validator({ output: customOutput }), async (c) => {
463
+ return c.json({ count: 42 });
464
+ });
465
+ const res = await app.request('/test', {
466
+ method: 'POST',
467
+ headers: { 'Content-Type': 'application/json' },
468
+ body: JSON.stringify({ x: 1 }),
469
+ });
470
+ expect(res.status).toBe(200);
471
+ const result = await res.json();
472
+ expect(result).toEqual({ count: 42 });
473
+ });
474
+ });
475
+ test('skips output validation for streaming agents', async () => {
476
+ const streamingAgent = createAgent({
477
+ metadata: { name: 'Streaming' },
478
+ schema: {
479
+ input: z.object({ data: z.string() }),
480
+ output: z.string(),
481
+ stream: true,
482
+ },
483
+ handler: async (_ctx, input) => {
484
+ return new ReadableStream({
485
+ start(controller) {
486
+ controller.enqueue(input.data);
487
+ controller.close();
488
+ },
489
+ });
490
+ },
491
+ });
492
+ const app = new Hono();
493
+ app.post('/test', streamingAgent.validator(), async (c) => {
494
+ const data = c.req.valid('json');
495
+ // Return any JSON - output validation should be skipped for streams
496
+ return c.json({ stream: 'response', data: data.data });
497
+ });
498
+ const res = await app.request('/test', {
499
+ method: 'POST',
500
+ headers: { 'Content-Type': 'application/json' },
501
+ body: JSON.stringify({ data: 'test' }),
502
+ });
503
+ // Should succeed even though output doesn't match schema (stream validation skipped)
504
+ expect(res.status).toBe(200);
505
+ const result = await res.json();
506
+ expect(result.data).toBe('test');
507
+ });
508
+ //# sourceMappingURL=agent.validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.validator.test.js","sourceRoot":"","sources":["../src/agent.validator.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,MAAM,SAAS,GAAG,WAAW,CAAC;QAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAChC,MAAM,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SAClB;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9B,OAAO,UAAU,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,GAAG,aAAa,CAAC;QAChE,CAAC;KACD,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEjC,wEAAwE;YACxE,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC;YAC/B,MAAM,GAAG,GAAW,IAAI,CAAC,GAAG,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAErB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,SAAS,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;YACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3E,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEjC,4EAA4E;YAC5E,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC;YACjC,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACpD,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,cAAc,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YACjE,CAAS,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,aAAa,GAAI,CAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACtD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;YACzB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,WAAW,CAAC;YAChC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7B,MAAM,EAAE;gBACP,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACvD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,eAAe;gBACtB,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,IAAI;aACd,CAAC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,WAAW,GAAG,WAAW,CAAC;YAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;oBACf,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;wBACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;wBAChB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;4BACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;4BAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;yBACf,CAAC;qBACF,CAAC;iBACF,CAAC;gBACF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,IAAI,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE;iBACtC;aACD,CAAC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,IAAI,EAAE;oBACL,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;iBACzB;aACD,CAAC;SACF,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,KAAK,GAAQ,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,UAAU,GAAG,WAAW,CAAC;YAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YACjC,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;oBACf,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;iBACjB,CAAC;gBACF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;SAClD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC3D,wCAAwC;QACxC,yDAAyD;QACzD,MAAM,cAAc,GAAG,WAAW,CAAC;YAClC,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;YAChC,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,mBAAmB;aACnB;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,iDAAiD;gBACjD,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;gBAClC,OAAO,SAAS,CAAC;YAClB,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEjC,oEAAoE;YACpE,MAAM,KAAK,GAAW,IAAI,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,WAAW,GAAG,WAAW,CAAC;YAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAClC,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,MAAM,EAAE,IAAI;aACZ;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,OAAO,IAAI,cAAc,CAAC;oBACzB,KAAK,CAAC,UAAU;wBACf,UAAU,CAAC,OAAO,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;wBAChD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACpB,CAAC;iBACD,CAAC,CAAC;YACJ,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEjC,sEAAsE;YACtE,MAAM,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEzB,wEAAwE;YACxE,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,cAAc,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YAClE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC5B,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC7B,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,MAAM,GAAI,CAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,aAAa,GAAI,CAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,iBAAiB,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YACrE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,UAAU,GAAI,CAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEhD,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,WAAW,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YAC/D,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrB,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YAC/D,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrB,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YAC/D,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrB,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3F,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAE,CAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAE,CAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAE,CAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,MAAM,yBAAyB,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YAC7E,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/E,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,aAAa,GAAG,KAAK,CAAC;QACtB,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SACzC,CAAC,CAAC;QAEH,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,eAAe,GAAG,KAAK,EAAE,CAAM,EAAE,IAAyB,EAAE,EAAE;YACnE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpC,yCAAyC;QACzC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACtD,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,KAAK,GAAG,WAAW,CAAC;YACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YACjC,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;aACxC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,uDAAuD;YACvD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,WAAW,CAAC;YACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;YAChC,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;aACxC;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAChD,oEAAoE;YACpE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,KAAK,GAAG,WAAW,CAAC;YACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;YACrC,MAAM,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;SAC9B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACxE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;IAC/D,MAAM,cAAc,GAAG,WAAW,CAAC;QAClC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC/B,MAAM,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,MAAM,EAAE,IAAI;SACZ;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9B,OAAO,IAAI,cAAc,CAAC;gBACzB,KAAK,CAAC,UAAU;oBACf,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,UAAU,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,oEAAoE;QACpE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC,CAAC,CAAC;IACH,qFAAqF;IACrF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { getRouter, getAppState } from './_server';
10
10
  export { Email, parseEmail } from './io/email';
11
11
  export * from './services/evalrun';
12
12
  export { getEvalRunEventProvider, getThreadProvider, getSessionProvider } from './_services';
13
+ export type { RouteSchema, GetRouteSchema } from './_validation';
13
14
  /**
14
15
  * Application state interface that gets automatically augmented based on your createApp setup function.
15
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,WAAW,QAAQ;CAAG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7F,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,WAAW,QAAQ;CAAG"}
package/dist/session.d.ts CHANGED
@@ -88,6 +88,18 @@ export interface Thread {
88
88
  * ```
89
89
  */
90
90
  destroy(): Promise<void>;
91
+ /**
92
+ * Check if the thread has any data.
93
+ * Returns true if thread state is empty (no data to save).
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * if (ctx.thread.empty()) {
98
+ * // Thread has no data, won't be persisted
99
+ * }
100
+ * ```
101
+ */
102
+ empty(): boolean;
91
103
  }
92
104
  /**
93
105
  * Represents a single request-response session within a thread.
@@ -363,6 +375,10 @@ export declare class DefaultThread implements Thread {
363
375
  * @internal
364
376
  */
365
377
  isDirty(): boolean;
378
+ /**
379
+ * Check if thread has any data
380
+ */
381
+ empty(): boolean;
366
382
  /**
367
383
  * Get serialized state for saving
368
384
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/session.js CHANGED
@@ -101,6 +101,12 @@ export class DefaultThread {
101
101
  const currentJson = JSON.stringify(Object.fromEntries(this.state));
102
102
  return currentJson !== this.#initialStateJson;
103
103
  }
104
+ /**
105
+ * Check if thread has any data
106
+ */
107
+ empty() {
108
+ return this.state.size === 0;
109
+ }
104
110
  /**
105
111
  * Get serialized state for saving
106
112
  * @internal