Tripagra commited on
Commit
19cb8cf
·
1 Parent(s): b7cceb0

Fix: Remove node_modules from git and update gitignore

Browse files
.gitignore CHANGED
@@ -55,3 +55,7 @@ frontend/.env.local
55
 
56
  # Kiro
57
  .kiro/
 
 
 
 
 
55
 
56
  # Kiro
57
  .kiro/
58
+
59
+ # Node
60
+ node_modules/
61
+ package-lock.json
node_modules/.package-lock.json DELETED
@@ -1,2328 +0,0 @@
1
- {
2
- "name": "smart-escalation-api",
3
- "version": "1.0.0",
4
- "lockfileVersion": 3,
5
- "requires": true,
6
- "packages": {
7
- "frontend": {
8
- "version": "0.0.0",
9
- "dependencies": {
10
- "axios": "^1.15.0",
11
- "react": "^19.2.4",
12
- "react-dom": "^19.2.4"
13
- },
14
- "devDependencies": {
15
- "@eslint/js": "^9.39.4",
16
- "@types/node": "^24.12.2",
17
- "@types/react": "^19.2.14",
18
- "@types/react-dom": "^19.2.3",
19
- "@vitejs/plugin-react": "^6.0.1",
20
- "eslint": "^9.39.4",
21
- "eslint-plugin-react-hooks": "^7.0.1",
22
- "eslint-plugin-react-refresh": "^0.5.2",
23
- "globals": "^17.4.0",
24
- "typescript": "~6.0.2",
25
- "typescript-eslint": "^8.58.0",
26
- "vite": "^8.0.4"
27
- }
28
- },
29
- "frontend/node_modules/@babel/code-frame": {
30
- "version": "7.29.0",
31
- "dev": true,
32
- "license": "MIT",
33
- "dependencies": {
34
- "@babel/helper-validator-identifier": "^7.28.5",
35
- "js-tokens": "^4.0.0",
36
- "picocolors": "^1.1.1"
37
- },
38
- "engines": {
39
- "node": ">=6.9.0"
40
- }
41
- },
42
- "frontend/node_modules/@babel/compat-data": {
43
- "version": "7.29.0",
44
- "dev": true,
45
- "license": "MIT",
46
- "engines": {
47
- "node": ">=6.9.0"
48
- }
49
- },
50
- "frontend/node_modules/@babel/core": {
51
- "version": "7.29.0",
52
- "dev": true,
53
- "license": "MIT",
54
- "dependencies": {
55
- "@babel/code-frame": "^7.29.0",
56
- "@babel/generator": "^7.29.0",
57
- "@babel/helper-compilation-targets": "^7.28.6",
58
- "@babel/helper-module-transforms": "^7.28.6",
59
- "@babel/helpers": "^7.28.6",
60
- "@babel/parser": "^7.29.0",
61
- "@babel/template": "^7.28.6",
62
- "@babel/traverse": "^7.29.0",
63
- "@babel/types": "^7.29.0",
64
- "@jridgewell/remapping": "^2.3.5",
65
- "convert-source-map": "^2.0.0",
66
- "debug": "^4.1.0",
67
- "gensync": "^1.0.0-beta.2",
68
- "json5": "^2.2.3",
69
- "semver": "^6.3.1"
70
- },
71
- "engines": {
72
- "node": ">=6.9.0"
73
- },
74
- "funding": {
75
- "type": "opencollective",
76
- "url": "https://opencollective.com/babel"
77
- }
78
- },
79
- "frontend/node_modules/@babel/generator": {
80
- "version": "7.29.1",
81
- "dev": true,
82
- "license": "MIT",
83
- "dependencies": {
84
- "@babel/parser": "^7.29.0",
85
- "@babel/types": "^7.29.0",
86
- "@jridgewell/gen-mapping": "^0.3.12",
87
- "@jridgewell/trace-mapping": "^0.3.28",
88
- "jsesc": "^3.0.2"
89
- },
90
- "engines": {
91
- "node": ">=6.9.0"
92
- }
93
- },
94
- "frontend/node_modules/@babel/helper-compilation-targets": {
95
- "version": "7.28.6",
96
- "dev": true,
97
- "license": "MIT",
98
- "dependencies": {
99
- "@babel/compat-data": "^7.28.6",
100
- "@babel/helper-validator-option": "^7.27.1",
101
- "browserslist": "^4.24.0",
102
- "lru-cache": "^5.1.1",
103
- "semver": "^6.3.1"
104
- },
105
- "engines": {
106
- "node": ">=6.9.0"
107
- }
108
- },
109
- "frontend/node_modules/@babel/helper-globals": {
110
- "version": "7.28.0",
111
- "dev": true,
112
- "license": "MIT",
113
- "engines": {
114
- "node": ">=6.9.0"
115
- }
116
- },
117
- "frontend/node_modules/@babel/helper-module-imports": {
118
- "version": "7.28.6",
119
- "dev": true,
120
- "license": "MIT",
121
- "dependencies": {
122
- "@babel/traverse": "^7.28.6",
123
- "@babel/types": "^7.28.6"
124
- },
125
- "engines": {
126
- "node": ">=6.9.0"
127
- }
128
- },
129
- "frontend/node_modules/@babel/helper-module-transforms": {
130
- "version": "7.28.6",
131
- "dev": true,
132
- "license": "MIT",
133
- "dependencies": {
134
- "@babel/helper-module-imports": "^7.28.6",
135
- "@babel/helper-validator-identifier": "^7.28.5",
136
- "@babel/traverse": "^7.28.6"
137
- },
138
- "engines": {
139
- "node": ">=6.9.0"
140
- },
141
- "peerDependencies": {
142
- "@babel/core": "^7.0.0"
143
- }
144
- },
145
- "frontend/node_modules/@babel/helper-string-parser": {
146
- "version": "7.27.1",
147
- "dev": true,
148
- "license": "MIT",
149
- "engines": {
150
- "node": ">=6.9.0"
151
- }
152
- },
153
- "frontend/node_modules/@babel/helper-validator-identifier": {
154
- "version": "7.28.5",
155
- "dev": true,
156
- "license": "MIT",
157
- "engines": {
158
- "node": ">=6.9.0"
159
- }
160
- },
161
- "frontend/node_modules/@babel/helper-validator-option": {
162
- "version": "7.27.1",
163
- "dev": true,
164
- "license": "MIT",
165
- "engines": {
166
- "node": ">=6.9.0"
167
- }
168
- },
169
- "frontend/node_modules/@babel/helpers": {
170
- "version": "7.29.2",
171
- "dev": true,
172
- "license": "MIT",
173
- "dependencies": {
174
- "@babel/template": "^7.28.6",
175
- "@babel/types": "^7.29.0"
176
- },
177
- "engines": {
178
- "node": ">=6.9.0"
179
- }
180
- },
181
- "frontend/node_modules/@babel/parser": {
182
- "version": "7.29.2",
183
- "dev": true,
184
- "license": "MIT",
185
- "dependencies": {
186
- "@babel/types": "^7.29.0"
187
- },
188
- "bin": {
189
- "parser": "bin/babel-parser.js"
190
- },
191
- "engines": {
192
- "node": ">=6.0.0"
193
- }
194
- },
195
- "frontend/node_modules/@babel/template": {
196
- "version": "7.28.6",
197
- "dev": true,
198
- "license": "MIT",
199
- "dependencies": {
200
- "@babel/code-frame": "^7.28.6",
201
- "@babel/parser": "^7.28.6",
202
- "@babel/types": "^7.28.6"
203
- },
204
- "engines": {
205
- "node": ">=6.9.0"
206
- }
207
- },
208
- "frontend/node_modules/@babel/traverse": {
209
- "version": "7.29.0",
210
- "dev": true,
211
- "license": "MIT",
212
- "dependencies": {
213
- "@babel/code-frame": "^7.29.0",
214
- "@babel/generator": "^7.29.0",
215
- "@babel/helper-globals": "^7.28.0",
216
- "@babel/parser": "^7.29.0",
217
- "@babel/template": "^7.28.6",
218
- "@babel/types": "^7.29.0",
219
- "debug": "^4.3.1"
220
- },
221
- "engines": {
222
- "node": ">=6.9.0"
223
- }
224
- },
225
- "frontend/node_modules/@babel/types": {
226
- "version": "7.29.0",
227
- "dev": true,
228
- "license": "MIT",
229
- "dependencies": {
230
- "@babel/helper-string-parser": "^7.27.1",
231
- "@babel/helper-validator-identifier": "^7.28.5"
232
- },
233
- "engines": {
234
- "node": ">=6.9.0"
235
- }
236
- },
237
- "frontend/node_modules/@eslint-community/eslint-utils": {
238
- "version": "4.9.1",
239
- "dev": true,
240
- "license": "MIT",
241
- "dependencies": {
242
- "eslint-visitor-keys": "^3.4.3"
243
- },
244
- "engines": {
245
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
246
- },
247
- "funding": {
248
- "url": "https://opencollective.com/eslint"
249
- },
250
- "peerDependencies": {
251
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
252
- }
253
- },
254
- "frontend/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
255
- "version": "3.4.3",
256
- "dev": true,
257
- "license": "Apache-2.0",
258
- "engines": {
259
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
260
- },
261
- "funding": {
262
- "url": "https://opencollective.com/eslint"
263
- }
264
- },
265
- "frontend/node_modules/@eslint-community/regexpp": {
266
- "version": "4.12.2",
267
- "dev": true,
268
- "license": "MIT",
269
- "engines": {
270
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
271
- }
272
- },
273
- "frontend/node_modules/@eslint/config-array": {
274
- "version": "0.21.2",
275
- "dev": true,
276
- "license": "Apache-2.0",
277
- "dependencies": {
278
- "@eslint/object-schema": "^2.1.7",
279
- "debug": "^4.3.1",
280
- "minimatch": "^3.1.5"
281
- },
282
- "engines": {
283
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
284
- }
285
- },
286
- "frontend/node_modules/@eslint/config-helpers": {
287
- "version": "0.4.2",
288
- "dev": true,
289
- "license": "Apache-2.0",
290
- "dependencies": {
291
- "@eslint/core": "^0.17.0"
292
- },
293
- "engines": {
294
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
295
- }
296
- },
297
- "frontend/node_modules/@eslint/core": {
298
- "version": "0.17.0",
299
- "dev": true,
300
- "license": "Apache-2.0",
301
- "dependencies": {
302
- "@types/json-schema": "^7.0.15"
303
- },
304
- "engines": {
305
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
306
- }
307
- },
308
- "frontend/node_modules/@eslint/eslintrc": {
309
- "version": "3.3.5",
310
- "dev": true,
311
- "license": "MIT",
312
- "dependencies": {
313
- "ajv": "^6.14.0",
314
- "debug": "^4.3.2",
315
- "espree": "^10.0.1",
316
- "globals": "^14.0.0",
317
- "ignore": "^5.2.0",
318
- "import-fresh": "^3.2.1",
319
- "js-yaml": "^4.1.1",
320
- "minimatch": "^3.1.5",
321
- "strip-json-comments": "^3.1.1"
322
- },
323
- "engines": {
324
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
325
- },
326
- "funding": {
327
- "url": "https://opencollective.com/eslint"
328
- }
329
- },
330
- "frontend/node_modules/@eslint/eslintrc/node_modules/globals": {
331
- "version": "14.0.0",
332
- "dev": true,
333
- "license": "MIT",
334
- "engines": {
335
- "node": ">=18"
336
- },
337
- "funding": {
338
- "url": "https://github.com/sponsors/sindresorhus"
339
- }
340
- },
341
- "frontend/node_modules/@eslint/js": {
342
- "version": "9.39.4",
343
- "dev": true,
344
- "license": "MIT",
345
- "engines": {
346
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
347
- },
348
- "funding": {
349
- "url": "https://eslint.org/donate"
350
- }
351
- },
352
- "frontend/node_modules/@eslint/object-schema": {
353
- "version": "2.1.7",
354
- "dev": true,
355
- "license": "Apache-2.0",
356
- "engines": {
357
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
358
- }
359
- },
360
- "frontend/node_modules/@eslint/plugin-kit": {
361
- "version": "0.4.1",
362
- "dev": true,
363
- "license": "Apache-2.0",
364
- "dependencies": {
365
- "@eslint/core": "^0.17.0",
366
- "levn": "^0.4.1"
367
- },
368
- "engines": {
369
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
370
- }
371
- },
372
- "frontend/node_modules/@humanfs/core": {
373
- "version": "0.19.1",
374
- "dev": true,
375
- "license": "Apache-2.0",
376
- "engines": {
377
- "node": ">=18.18.0"
378
- }
379
- },
380
- "frontend/node_modules/@humanfs/node": {
381
- "version": "0.16.7",
382
- "dev": true,
383
- "license": "Apache-2.0",
384
- "dependencies": {
385
- "@humanfs/core": "^0.19.1",
386
- "@humanwhocodes/retry": "^0.4.0"
387
- },
388
- "engines": {
389
- "node": ">=18.18.0"
390
- }
391
- },
392
- "frontend/node_modules/@humanwhocodes/module-importer": {
393
- "version": "1.0.1",
394
- "dev": true,
395
- "license": "Apache-2.0",
396
- "engines": {
397
- "node": ">=12.22"
398
- },
399
- "funding": {
400
- "type": "github",
401
- "url": "https://github.com/sponsors/nzakas"
402
- }
403
- },
404
- "frontend/node_modules/@humanwhocodes/retry": {
405
- "version": "0.4.3",
406
- "dev": true,
407
- "license": "Apache-2.0",
408
- "engines": {
409
- "node": ">=18.18"
410
- },
411
- "funding": {
412
- "type": "github",
413
- "url": "https://github.com/sponsors/nzakas"
414
- }
415
- },
416
- "frontend/node_modules/@jridgewell/gen-mapping": {
417
- "version": "0.3.13",
418
- "dev": true,
419
- "license": "MIT",
420
- "dependencies": {
421
- "@jridgewell/sourcemap-codec": "^1.5.0",
422
- "@jridgewell/trace-mapping": "^0.3.24"
423
- }
424
- },
425
- "frontend/node_modules/@jridgewell/remapping": {
426
- "version": "2.3.5",
427
- "dev": true,
428
- "license": "MIT",
429
- "dependencies": {
430
- "@jridgewell/gen-mapping": "^0.3.5",
431
- "@jridgewell/trace-mapping": "^0.3.24"
432
- }
433
- },
434
- "frontend/node_modules/@jridgewell/resolve-uri": {
435
- "version": "3.1.2",
436
- "dev": true,
437
- "license": "MIT",
438
- "engines": {
439
- "node": ">=6.0.0"
440
- }
441
- },
442
- "frontend/node_modules/@jridgewell/sourcemap-codec": {
443
- "version": "1.5.5",
444
- "dev": true,
445
- "license": "MIT"
446
- },
447
- "frontend/node_modules/@jridgewell/trace-mapping": {
448
- "version": "0.3.31",
449
- "dev": true,
450
- "license": "MIT",
451
- "dependencies": {
452
- "@jridgewell/resolve-uri": "^3.1.0",
453
- "@jridgewell/sourcemap-codec": "^1.4.14"
454
- }
455
- },
456
- "frontend/node_modules/@oxc-project/types": {
457
- "version": "0.124.0",
458
- "dev": true,
459
- "license": "MIT",
460
- "funding": {
461
- "url": "https://github.com/sponsors/Boshen"
462
- }
463
- },
464
- "frontend/node_modules/@rolldown/binding-win32-x64-msvc": {
465
- "version": "1.0.0-rc.15",
466
- "cpu": [
467
- "x64"
468
- ],
469
- "dev": true,
470
- "license": "MIT",
471
- "optional": true,
472
- "os": [
473
- "win32"
474
- ],
475
- "engines": {
476
- "node": "^20.19.0 || >=22.12.0"
477
- }
478
- },
479
- "frontend/node_modules/@rolldown/pluginutils": {
480
- "version": "1.0.0-rc.7",
481
- "dev": true,
482
- "license": "MIT"
483
- },
484
- "frontend/node_modules/@types/estree": {
485
- "version": "1.0.8",
486
- "dev": true,
487
- "license": "MIT"
488
- },
489
- "frontend/node_modules/@types/json-schema": {
490
- "version": "7.0.15",
491
- "dev": true,
492
- "license": "MIT"
493
- },
494
- "frontend/node_modules/@types/node": {
495
- "version": "24.12.2",
496
- "dev": true,
497
- "license": "MIT",
498
- "dependencies": {
499
- "undici-types": "~7.16.0"
500
- }
501
- },
502
- "frontend/node_modules/@types/react": {
503
- "version": "19.2.14",
504
- "dev": true,
505
- "license": "MIT",
506
- "dependencies": {
507
- "csstype": "^3.2.2"
508
- }
509
- },
510
- "frontend/node_modules/@types/react-dom": {
511
- "version": "19.2.3",
512
- "dev": true,
513
- "license": "MIT",
514
- "peerDependencies": {
515
- "@types/react": "^19.2.0"
516
- }
517
- },
518
- "frontend/node_modules/@typescript-eslint/eslint-plugin": {
519
- "version": "8.58.1",
520
- "dev": true,
521
- "license": "MIT",
522
- "dependencies": {
523
- "@eslint-community/regexpp": "^4.12.2",
524
- "@typescript-eslint/scope-manager": "8.58.1",
525
- "@typescript-eslint/type-utils": "8.58.1",
526
- "@typescript-eslint/utils": "8.58.1",
527
- "@typescript-eslint/visitor-keys": "8.58.1",
528
- "ignore": "^7.0.5",
529
- "natural-compare": "^1.4.0",
530
- "ts-api-utils": "^2.5.0"
531
- },
532
- "engines": {
533
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
534
- },
535
- "funding": {
536
- "type": "opencollective",
537
- "url": "https://opencollective.com/typescript-eslint"
538
- },
539
- "peerDependencies": {
540
- "@typescript-eslint/parser": "^8.58.1",
541
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
542
- "typescript": ">=4.8.4 <6.1.0"
543
- }
544
- },
545
- "frontend/node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
546
- "version": "7.0.5",
547
- "dev": true,
548
- "license": "MIT",
549
- "engines": {
550
- "node": ">= 4"
551
- }
552
- },
553
- "frontend/node_modules/@typescript-eslint/parser": {
554
- "version": "8.58.1",
555
- "dev": true,
556
- "license": "MIT",
557
- "dependencies": {
558
- "@typescript-eslint/scope-manager": "8.58.1",
559
- "@typescript-eslint/types": "8.58.1",
560
- "@typescript-eslint/typescript-estree": "8.58.1",
561
- "@typescript-eslint/visitor-keys": "8.58.1",
562
- "debug": "^4.4.3"
563
- },
564
- "engines": {
565
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
566
- },
567
- "funding": {
568
- "type": "opencollective",
569
- "url": "https://opencollective.com/typescript-eslint"
570
- },
571
- "peerDependencies": {
572
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
573
- "typescript": ">=4.8.4 <6.1.0"
574
- }
575
- },
576
- "frontend/node_modules/@typescript-eslint/project-service": {
577
- "version": "8.58.1",
578
- "dev": true,
579
- "license": "MIT",
580
- "dependencies": {
581
- "@typescript-eslint/tsconfig-utils": "^8.58.1",
582
- "@typescript-eslint/types": "^8.58.1",
583
- "debug": "^4.4.3"
584
- },
585
- "engines": {
586
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
587
- },
588
- "funding": {
589
- "type": "opencollective",
590
- "url": "https://opencollective.com/typescript-eslint"
591
- },
592
- "peerDependencies": {
593
- "typescript": ">=4.8.4 <6.1.0"
594
- }
595
- },
596
- "frontend/node_modules/@typescript-eslint/scope-manager": {
597
- "version": "8.58.1",
598
- "dev": true,
599
- "license": "MIT",
600
- "dependencies": {
601
- "@typescript-eslint/types": "8.58.1",
602
- "@typescript-eslint/visitor-keys": "8.58.1"
603
- },
604
- "engines": {
605
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
606
- },
607
- "funding": {
608
- "type": "opencollective",
609
- "url": "https://opencollective.com/typescript-eslint"
610
- }
611
- },
612
- "frontend/node_modules/@typescript-eslint/tsconfig-utils": {
613
- "version": "8.58.1",
614
- "dev": true,
615
- "license": "MIT",
616
- "engines": {
617
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
618
- },
619
- "funding": {
620
- "type": "opencollective",
621
- "url": "https://opencollective.com/typescript-eslint"
622
- },
623
- "peerDependencies": {
624
- "typescript": ">=4.8.4 <6.1.0"
625
- }
626
- },
627
- "frontend/node_modules/@typescript-eslint/type-utils": {
628
- "version": "8.58.1",
629
- "dev": true,
630
- "license": "MIT",
631
- "dependencies": {
632
- "@typescript-eslint/types": "8.58.1",
633
- "@typescript-eslint/typescript-estree": "8.58.1",
634
- "@typescript-eslint/utils": "8.58.1",
635
- "debug": "^4.4.3",
636
- "ts-api-utils": "^2.5.0"
637
- },
638
- "engines": {
639
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
640
- },
641
- "funding": {
642
- "type": "opencollective",
643
- "url": "https://opencollective.com/typescript-eslint"
644
- },
645
- "peerDependencies": {
646
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
647
- "typescript": ">=4.8.4 <6.1.0"
648
- }
649
- },
650
- "frontend/node_modules/@typescript-eslint/types": {
651
- "version": "8.58.1",
652
- "dev": true,
653
- "license": "MIT",
654
- "engines": {
655
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
656
- },
657
- "funding": {
658
- "type": "opencollective",
659
- "url": "https://opencollective.com/typescript-eslint"
660
- }
661
- },
662
- "frontend/node_modules/@typescript-eslint/typescript-estree": {
663
- "version": "8.58.1",
664
- "dev": true,
665
- "license": "MIT",
666
- "dependencies": {
667
- "@typescript-eslint/project-service": "8.58.1",
668
- "@typescript-eslint/tsconfig-utils": "8.58.1",
669
- "@typescript-eslint/types": "8.58.1",
670
- "@typescript-eslint/visitor-keys": "8.58.1",
671
- "debug": "^4.4.3",
672
- "minimatch": "^10.2.2",
673
- "semver": "^7.7.3",
674
- "tinyglobby": "^0.2.15",
675
- "ts-api-utils": "^2.5.0"
676
- },
677
- "engines": {
678
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
679
- },
680
- "funding": {
681
- "type": "opencollective",
682
- "url": "https://opencollective.com/typescript-eslint"
683
- },
684
- "peerDependencies": {
685
- "typescript": ">=4.8.4 <6.1.0"
686
- }
687
- },
688
- "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
689
- "version": "4.0.4",
690
- "dev": true,
691
- "license": "MIT",
692
- "engines": {
693
- "node": "18 || 20 || >=22"
694
- }
695
- },
696
- "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
697
- "version": "5.0.5",
698
- "dev": true,
699
- "license": "MIT",
700
- "dependencies": {
701
- "balanced-match": "^4.0.2"
702
- },
703
- "engines": {
704
- "node": "18 || 20 || >=22"
705
- }
706
- },
707
- "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
708
- "version": "10.2.5",
709
- "dev": true,
710
- "license": "BlueOak-1.0.0",
711
- "dependencies": {
712
- "brace-expansion": "^5.0.5"
713
- },
714
- "engines": {
715
- "node": "18 || 20 || >=22"
716
- },
717
- "funding": {
718
- "url": "https://github.com/sponsors/isaacs"
719
- }
720
- },
721
- "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
722
- "version": "7.7.4",
723
- "dev": true,
724
- "license": "ISC",
725
- "bin": {
726
- "semver": "bin/semver.js"
727
- },
728
- "engines": {
729
- "node": ">=10"
730
- }
731
- },
732
- "frontend/node_modules/@typescript-eslint/utils": {
733
- "version": "8.58.1",
734
- "dev": true,
735
- "license": "MIT",
736
- "dependencies": {
737
- "@eslint-community/eslint-utils": "^4.9.1",
738
- "@typescript-eslint/scope-manager": "8.58.1",
739
- "@typescript-eslint/types": "8.58.1",
740
- "@typescript-eslint/typescript-estree": "8.58.1"
741
- },
742
- "engines": {
743
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
744
- },
745
- "funding": {
746
- "type": "opencollective",
747
- "url": "https://opencollective.com/typescript-eslint"
748
- },
749
- "peerDependencies": {
750
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
751
- "typescript": ">=4.8.4 <6.1.0"
752
- }
753
- },
754
- "frontend/node_modules/@typescript-eslint/visitor-keys": {
755
- "version": "8.58.1",
756
- "dev": true,
757
- "license": "MIT",
758
- "dependencies": {
759
- "@typescript-eslint/types": "8.58.1",
760
- "eslint-visitor-keys": "^5.0.0"
761
- },
762
- "engines": {
763
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
764
- },
765
- "funding": {
766
- "type": "opencollective",
767
- "url": "https://opencollective.com/typescript-eslint"
768
- }
769
- },
770
- "frontend/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
771
- "version": "5.0.1",
772
- "dev": true,
773
- "license": "Apache-2.0",
774
- "engines": {
775
- "node": "^20.19.0 || ^22.13.0 || >=24"
776
- },
777
- "funding": {
778
- "url": "https://opencollective.com/eslint"
779
- }
780
- },
781
- "frontend/node_modules/@vitejs/plugin-react": {
782
- "version": "6.0.1",
783
- "dev": true,
784
- "license": "MIT",
785
- "dependencies": {
786
- "@rolldown/pluginutils": "1.0.0-rc.7"
787
- },
788
- "engines": {
789
- "node": "^20.19.0 || >=22.12.0"
790
- },
791
- "peerDependencies": {
792
- "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
793
- "babel-plugin-react-compiler": "^1.0.0",
794
- "vite": "^8.0.0"
795
- },
796
- "peerDependenciesMeta": {
797
- "@rolldown/plugin-babel": {
798
- "optional": true
799
- },
800
- "babel-plugin-react-compiler": {
801
- "optional": true
802
- }
803
- }
804
- },
805
- "frontend/node_modules/acorn": {
806
- "version": "8.16.0",
807
- "dev": true,
808
- "license": "MIT",
809
- "bin": {
810
- "acorn": "bin/acorn"
811
- },
812
- "engines": {
813
- "node": ">=0.4.0"
814
- }
815
- },
816
- "frontend/node_modules/acorn-jsx": {
817
- "version": "5.3.2",
818
- "dev": true,
819
- "license": "MIT",
820
- "peerDependencies": {
821
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
822
- }
823
- },
824
- "frontend/node_modules/ajv": {
825
- "version": "6.14.0",
826
- "dev": true,
827
- "license": "MIT",
828
- "dependencies": {
829
- "fast-deep-equal": "^3.1.1",
830
- "fast-json-stable-stringify": "^2.0.0",
831
- "json-schema-traverse": "^0.4.1",
832
- "uri-js": "^4.2.2"
833
- },
834
- "funding": {
835
- "type": "github",
836
- "url": "https://github.com/sponsors/epoberezkin"
837
- }
838
- },
839
- "frontend/node_modules/ansi-styles": {
840
- "version": "4.3.0",
841
- "dev": true,
842
- "license": "MIT",
843
- "dependencies": {
844
- "color-convert": "^2.0.1"
845
- },
846
- "engines": {
847
- "node": ">=8"
848
- },
849
- "funding": {
850
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
851
- }
852
- },
853
- "frontend/node_modules/argparse": {
854
- "version": "2.0.1",
855
- "dev": true,
856
- "license": "Python-2.0"
857
- },
858
- "frontend/node_modules/asynckit": {
859
- "version": "0.4.0",
860
- "license": "MIT"
861
- },
862
- "frontend/node_modules/axios": {
863
- "version": "1.15.0",
864
- "license": "MIT",
865
- "dependencies": {
866
- "follow-redirects": "^1.15.11",
867
- "form-data": "^4.0.5",
868
- "proxy-from-env": "^2.1.0"
869
- }
870
- },
871
- "frontend/node_modules/balanced-match": {
872
- "version": "1.0.2",
873
- "dev": true,
874
- "license": "MIT"
875
- },
876
- "frontend/node_modules/baseline-browser-mapping": {
877
- "version": "2.10.18",
878
- "dev": true,
879
- "license": "Apache-2.0",
880
- "bin": {
881
- "baseline-browser-mapping": "dist/cli.cjs"
882
- },
883
- "engines": {
884
- "node": ">=6.0.0"
885
- }
886
- },
887
- "frontend/node_modules/brace-expansion": {
888
- "version": "1.1.14",
889
- "dev": true,
890
- "license": "MIT",
891
- "dependencies": {
892
- "balanced-match": "^1.0.0",
893
- "concat-map": "0.0.1"
894
- }
895
- },
896
- "frontend/node_modules/browserslist": {
897
- "version": "4.28.2",
898
- "dev": true,
899
- "funding": [
900
- {
901
- "type": "opencollective",
902
- "url": "https://opencollective.com/browserslist"
903
- },
904
- {
905
- "type": "tidelift",
906
- "url": "https://tidelift.com/funding/github/npm/browserslist"
907
- },
908
- {
909
- "type": "github",
910
- "url": "https://github.com/sponsors/ai"
911
- }
912
- ],
913
- "license": "MIT",
914
- "dependencies": {
915
- "baseline-browser-mapping": "^2.10.12",
916
- "caniuse-lite": "^1.0.30001782",
917
- "electron-to-chromium": "^1.5.328",
918
- "node-releases": "^2.0.36",
919
- "update-browserslist-db": "^1.2.3"
920
- },
921
- "bin": {
922
- "browserslist": "cli.js"
923
- },
924
- "engines": {
925
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
926
- }
927
- },
928
- "frontend/node_modules/call-bind-apply-helpers": {
929
- "version": "1.0.2",
930
- "license": "MIT",
931
- "dependencies": {
932
- "es-errors": "^1.3.0",
933
- "function-bind": "^1.1.2"
934
- },
935
- "engines": {
936
- "node": ">= 0.4"
937
- }
938
- },
939
- "frontend/node_modules/callsites": {
940
- "version": "3.1.0",
941
- "dev": true,
942
- "license": "MIT",
943
- "engines": {
944
- "node": ">=6"
945
- }
946
- },
947
- "frontend/node_modules/caniuse-lite": {
948
- "version": "1.0.30001787",
949
- "dev": true,
950
- "funding": [
951
- {
952
- "type": "opencollective",
953
- "url": "https://opencollective.com/browserslist"
954
- },
955
- {
956
- "type": "tidelift",
957
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
958
- },
959
- {
960
- "type": "github",
961
- "url": "https://github.com/sponsors/ai"
962
- }
963
- ],
964
- "license": "CC-BY-4.0"
965
- },
966
- "frontend/node_modules/chalk": {
967
- "version": "4.1.2",
968
- "dev": true,
969
- "license": "MIT",
970
- "dependencies": {
971
- "ansi-styles": "^4.1.0",
972
- "supports-color": "^7.1.0"
973
- },
974
- "engines": {
975
- "node": ">=10"
976
- },
977
- "funding": {
978
- "url": "https://github.com/chalk/chalk?sponsor=1"
979
- }
980
- },
981
- "frontend/node_modules/color-convert": {
982
- "version": "2.0.1",
983
- "dev": true,
984
- "license": "MIT",
985
- "dependencies": {
986
- "color-name": "~1.1.4"
987
- },
988
- "engines": {
989
- "node": ">=7.0.0"
990
- }
991
- },
992
- "frontend/node_modules/color-name": {
993
- "version": "1.1.4",
994
- "dev": true,
995
- "license": "MIT"
996
- },
997
- "frontend/node_modules/combined-stream": {
998
- "version": "1.0.8",
999
- "license": "MIT",
1000
- "dependencies": {
1001
- "delayed-stream": "~1.0.0"
1002
- },
1003
- "engines": {
1004
- "node": ">= 0.8"
1005
- }
1006
- },
1007
- "frontend/node_modules/concat-map": {
1008
- "version": "0.0.1",
1009
- "dev": true,
1010
- "license": "MIT"
1011
- },
1012
- "frontend/node_modules/convert-source-map": {
1013
- "version": "2.0.0",
1014
- "dev": true,
1015
- "license": "MIT"
1016
- },
1017
- "frontend/node_modules/cross-spawn": {
1018
- "version": "7.0.6",
1019
- "dev": true,
1020
- "license": "MIT",
1021
- "dependencies": {
1022
- "path-key": "^3.1.0",
1023
- "shebang-command": "^2.0.0",
1024
- "which": "^2.0.1"
1025
- },
1026
- "engines": {
1027
- "node": ">= 8"
1028
- }
1029
- },
1030
- "frontend/node_modules/csstype": {
1031
- "version": "3.2.3",
1032
- "dev": true,
1033
- "license": "MIT"
1034
- },
1035
- "frontend/node_modules/debug": {
1036
- "version": "4.4.3",
1037
- "dev": true,
1038
- "license": "MIT",
1039
- "dependencies": {
1040
- "ms": "^2.1.3"
1041
- },
1042
- "engines": {
1043
- "node": ">=6.0"
1044
- },
1045
- "peerDependenciesMeta": {
1046
- "supports-color": {
1047
- "optional": true
1048
- }
1049
- }
1050
- },
1051
- "frontend/node_modules/deep-is": {
1052
- "version": "0.1.4",
1053
- "dev": true,
1054
- "license": "MIT"
1055
- },
1056
- "frontend/node_modules/delayed-stream": {
1057
- "version": "1.0.0",
1058
- "license": "MIT",
1059
- "engines": {
1060
- "node": ">=0.4.0"
1061
- }
1062
- },
1063
- "frontend/node_modules/detect-libc": {
1064
- "version": "2.1.2",
1065
- "dev": true,
1066
- "license": "Apache-2.0",
1067
- "engines": {
1068
- "node": ">=8"
1069
- }
1070
- },
1071
- "frontend/node_modules/dunder-proto": {
1072
- "version": "1.0.1",
1073
- "license": "MIT",
1074
- "dependencies": {
1075
- "call-bind-apply-helpers": "^1.0.1",
1076
- "es-errors": "^1.3.0",
1077
- "gopd": "^1.2.0"
1078
- },
1079
- "engines": {
1080
- "node": ">= 0.4"
1081
- }
1082
- },
1083
- "frontend/node_modules/electron-to-chromium": {
1084
- "version": "1.5.335",
1085
- "dev": true,
1086
- "license": "ISC"
1087
- },
1088
- "frontend/node_modules/es-define-property": {
1089
- "version": "1.0.1",
1090
- "license": "MIT",
1091
- "engines": {
1092
- "node": ">= 0.4"
1093
- }
1094
- },
1095
- "frontend/node_modules/es-errors": {
1096
- "version": "1.3.0",
1097
- "license": "MIT",
1098
- "engines": {
1099
- "node": ">= 0.4"
1100
- }
1101
- },
1102
- "frontend/node_modules/es-object-atoms": {
1103
- "version": "1.1.1",
1104
- "license": "MIT",
1105
- "dependencies": {
1106
- "es-errors": "^1.3.0"
1107
- },
1108
- "engines": {
1109
- "node": ">= 0.4"
1110
- }
1111
- },
1112
- "frontend/node_modules/es-set-tostringtag": {
1113
- "version": "2.1.0",
1114
- "license": "MIT",
1115
- "dependencies": {
1116
- "es-errors": "^1.3.0",
1117
- "get-intrinsic": "^1.2.6",
1118
- "has-tostringtag": "^1.0.2",
1119
- "hasown": "^2.0.2"
1120
- },
1121
- "engines": {
1122
- "node": ">= 0.4"
1123
- }
1124
- },
1125
- "frontend/node_modules/escalade": {
1126
- "version": "3.2.0",
1127
- "dev": true,
1128
- "license": "MIT",
1129
- "engines": {
1130
- "node": ">=6"
1131
- }
1132
- },
1133
- "frontend/node_modules/escape-string-regexp": {
1134
- "version": "4.0.0",
1135
- "dev": true,
1136
- "license": "MIT",
1137
- "engines": {
1138
- "node": ">=10"
1139
- },
1140
- "funding": {
1141
- "url": "https://github.com/sponsors/sindresorhus"
1142
- }
1143
- },
1144
- "frontend/node_modules/eslint": {
1145
- "version": "9.39.4",
1146
- "dev": true,
1147
- "license": "MIT",
1148
- "dependencies": {
1149
- "@eslint-community/eslint-utils": "^4.8.0",
1150
- "@eslint-community/regexpp": "^4.12.1",
1151
- "@eslint/config-array": "^0.21.2",
1152
- "@eslint/config-helpers": "^0.4.2",
1153
- "@eslint/core": "^0.17.0",
1154
- "@eslint/eslintrc": "^3.3.5",
1155
- "@eslint/js": "9.39.4",
1156
- "@eslint/plugin-kit": "^0.4.1",
1157
- "@humanfs/node": "^0.16.6",
1158
- "@humanwhocodes/module-importer": "^1.0.1",
1159
- "@humanwhocodes/retry": "^0.4.2",
1160
- "@types/estree": "^1.0.6",
1161
- "ajv": "^6.14.0",
1162
- "chalk": "^4.0.0",
1163
- "cross-spawn": "^7.0.6",
1164
- "debug": "^4.3.2",
1165
- "escape-string-regexp": "^4.0.0",
1166
- "eslint-scope": "^8.4.0",
1167
- "eslint-visitor-keys": "^4.2.1",
1168
- "espree": "^10.4.0",
1169
- "esquery": "^1.5.0",
1170
- "esutils": "^2.0.2",
1171
- "fast-deep-equal": "^3.1.3",
1172
- "file-entry-cache": "^8.0.0",
1173
- "find-up": "^5.0.0",
1174
- "glob-parent": "^6.0.2",
1175
- "ignore": "^5.2.0",
1176
- "imurmurhash": "^0.1.4",
1177
- "is-glob": "^4.0.0",
1178
- "json-stable-stringify-without-jsonify": "^1.0.1",
1179
- "lodash.merge": "^4.6.2",
1180
- "minimatch": "^3.1.5",
1181
- "natural-compare": "^1.4.0",
1182
- "optionator": "^0.9.3"
1183
- },
1184
- "bin": {
1185
- "eslint": "bin/eslint.js"
1186
- },
1187
- "engines": {
1188
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1189
- },
1190
- "funding": {
1191
- "url": "https://eslint.org/donate"
1192
- },
1193
- "peerDependencies": {
1194
- "jiti": "*"
1195
- },
1196
- "peerDependenciesMeta": {
1197
- "jiti": {
1198
- "optional": true
1199
- }
1200
- }
1201
- },
1202
- "frontend/node_modules/eslint-plugin-react-hooks": {
1203
- "version": "7.0.1",
1204
- "dev": true,
1205
- "license": "MIT",
1206
- "dependencies": {
1207
- "@babel/core": "^7.24.4",
1208
- "@babel/parser": "^7.24.4",
1209
- "hermes-parser": "^0.25.1",
1210
- "zod": "^3.25.0 || ^4.0.0",
1211
- "zod-validation-error": "^3.5.0 || ^4.0.0"
1212
- },
1213
- "engines": {
1214
- "node": ">=18"
1215
- },
1216
- "peerDependencies": {
1217
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
1218
- }
1219
- },
1220
- "frontend/node_modules/eslint-plugin-react-refresh": {
1221
- "version": "0.5.2",
1222
- "dev": true,
1223
- "license": "MIT",
1224
- "peerDependencies": {
1225
- "eslint": "^9 || ^10"
1226
- }
1227
- },
1228
- "frontend/node_modules/eslint-scope": {
1229
- "version": "8.4.0",
1230
- "dev": true,
1231
- "license": "BSD-2-Clause",
1232
- "dependencies": {
1233
- "esrecurse": "^4.3.0",
1234
- "estraverse": "^5.2.0"
1235
- },
1236
- "engines": {
1237
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1238
- },
1239
- "funding": {
1240
- "url": "https://opencollective.com/eslint"
1241
- }
1242
- },
1243
- "frontend/node_modules/eslint-visitor-keys": {
1244
- "version": "4.2.1",
1245
- "dev": true,
1246
- "license": "Apache-2.0",
1247
- "engines": {
1248
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1249
- },
1250
- "funding": {
1251
- "url": "https://opencollective.com/eslint"
1252
- }
1253
- },
1254
- "frontend/node_modules/espree": {
1255
- "version": "10.4.0",
1256
- "dev": true,
1257
- "license": "BSD-2-Clause",
1258
- "dependencies": {
1259
- "acorn": "^8.15.0",
1260
- "acorn-jsx": "^5.3.2",
1261
- "eslint-visitor-keys": "^4.2.1"
1262
- },
1263
- "engines": {
1264
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1265
- },
1266
- "funding": {
1267
- "url": "https://opencollective.com/eslint"
1268
- }
1269
- },
1270
- "frontend/node_modules/esquery": {
1271
- "version": "1.7.0",
1272
- "dev": true,
1273
- "license": "BSD-3-Clause",
1274
- "dependencies": {
1275
- "estraverse": "^5.1.0"
1276
- },
1277
- "engines": {
1278
- "node": ">=0.10"
1279
- }
1280
- },
1281
- "frontend/node_modules/esrecurse": {
1282
- "version": "4.3.0",
1283
- "dev": true,
1284
- "license": "BSD-2-Clause",
1285
- "dependencies": {
1286
- "estraverse": "^5.2.0"
1287
- },
1288
- "engines": {
1289
- "node": ">=4.0"
1290
- }
1291
- },
1292
- "frontend/node_modules/estraverse": {
1293
- "version": "5.3.0",
1294
- "dev": true,
1295
- "license": "BSD-2-Clause",
1296
- "engines": {
1297
- "node": ">=4.0"
1298
- }
1299
- },
1300
- "frontend/node_modules/esutils": {
1301
- "version": "2.0.3",
1302
- "dev": true,
1303
- "license": "BSD-2-Clause",
1304
- "engines": {
1305
- "node": ">=0.10.0"
1306
- }
1307
- },
1308
- "frontend/node_modules/fast-deep-equal": {
1309
- "version": "3.1.3",
1310
- "dev": true,
1311
- "license": "MIT"
1312
- },
1313
- "frontend/node_modules/fast-json-stable-stringify": {
1314
- "version": "2.1.0",
1315
- "dev": true,
1316
- "license": "MIT"
1317
- },
1318
- "frontend/node_modules/fast-levenshtein": {
1319
- "version": "2.0.6",
1320
- "dev": true,
1321
- "license": "MIT"
1322
- },
1323
- "frontend/node_modules/fdir": {
1324
- "version": "6.5.0",
1325
- "dev": true,
1326
- "license": "MIT",
1327
- "engines": {
1328
- "node": ">=12.0.0"
1329
- },
1330
- "peerDependencies": {
1331
- "picomatch": "^3 || ^4"
1332
- },
1333
- "peerDependenciesMeta": {
1334
- "picomatch": {
1335
- "optional": true
1336
- }
1337
- }
1338
- },
1339
- "frontend/node_modules/file-entry-cache": {
1340
- "version": "8.0.0",
1341
- "dev": true,
1342
- "license": "MIT",
1343
- "dependencies": {
1344
- "flat-cache": "^4.0.0"
1345
- },
1346
- "engines": {
1347
- "node": ">=16.0.0"
1348
- }
1349
- },
1350
- "frontend/node_modules/find-up": {
1351
- "version": "5.0.0",
1352
- "dev": true,
1353
- "license": "MIT",
1354
- "dependencies": {
1355
- "locate-path": "^6.0.0",
1356
- "path-exists": "^4.0.0"
1357
- },
1358
- "engines": {
1359
- "node": ">=10"
1360
- },
1361
- "funding": {
1362
- "url": "https://github.com/sponsors/sindresorhus"
1363
- }
1364
- },
1365
- "frontend/node_modules/flat-cache": {
1366
- "version": "4.0.1",
1367
- "dev": true,
1368
- "license": "MIT",
1369
- "dependencies": {
1370
- "flatted": "^3.2.9",
1371
- "keyv": "^4.5.4"
1372
- },
1373
- "engines": {
1374
- "node": ">=16"
1375
- }
1376
- },
1377
- "frontend/node_modules/flatted": {
1378
- "version": "3.4.2",
1379
- "dev": true,
1380
- "license": "ISC"
1381
- },
1382
- "frontend/node_modules/follow-redirects": {
1383
- "version": "1.15.11",
1384
- "funding": [
1385
- {
1386
- "type": "individual",
1387
- "url": "https://github.com/sponsors/RubenVerborgh"
1388
- }
1389
- ],
1390
- "license": "MIT",
1391
- "engines": {
1392
- "node": ">=4.0"
1393
- },
1394
- "peerDependenciesMeta": {
1395
- "debug": {
1396
- "optional": true
1397
- }
1398
- }
1399
- },
1400
- "frontend/node_modules/form-data": {
1401
- "version": "4.0.5",
1402
- "license": "MIT",
1403
- "dependencies": {
1404
- "asynckit": "^0.4.0",
1405
- "combined-stream": "^1.0.8",
1406
- "es-set-tostringtag": "^2.1.0",
1407
- "hasown": "^2.0.2",
1408
- "mime-types": "^2.1.12"
1409
- },
1410
- "engines": {
1411
- "node": ">= 6"
1412
- }
1413
- },
1414
- "frontend/node_modules/function-bind": {
1415
- "version": "1.1.2",
1416
- "license": "MIT",
1417
- "funding": {
1418
- "url": "https://github.com/sponsors/ljharb"
1419
- }
1420
- },
1421
- "frontend/node_modules/gensync": {
1422
- "version": "1.0.0-beta.2",
1423
- "dev": true,
1424
- "license": "MIT",
1425
- "engines": {
1426
- "node": ">=6.9.0"
1427
- }
1428
- },
1429
- "frontend/node_modules/get-intrinsic": {
1430
- "version": "1.3.0",
1431
- "license": "MIT",
1432
- "dependencies": {
1433
- "call-bind-apply-helpers": "^1.0.2",
1434
- "es-define-property": "^1.0.1",
1435
- "es-errors": "^1.3.0",
1436
- "es-object-atoms": "^1.1.1",
1437
- "function-bind": "^1.1.2",
1438
- "get-proto": "^1.0.1",
1439
- "gopd": "^1.2.0",
1440
- "has-symbols": "^1.1.0",
1441
- "hasown": "^2.0.2",
1442
- "math-intrinsics": "^1.1.0"
1443
- },
1444
- "engines": {
1445
- "node": ">= 0.4"
1446
- },
1447
- "funding": {
1448
- "url": "https://github.com/sponsors/ljharb"
1449
- }
1450
- },
1451
- "frontend/node_modules/get-proto": {
1452
- "version": "1.0.1",
1453
- "license": "MIT",
1454
- "dependencies": {
1455
- "dunder-proto": "^1.0.1",
1456
- "es-object-atoms": "^1.0.0"
1457
- },
1458
- "engines": {
1459
- "node": ">= 0.4"
1460
- }
1461
- },
1462
- "frontend/node_modules/glob-parent": {
1463
- "version": "6.0.2",
1464
- "dev": true,
1465
- "license": "ISC",
1466
- "dependencies": {
1467
- "is-glob": "^4.0.3"
1468
- },
1469
- "engines": {
1470
- "node": ">=10.13.0"
1471
- }
1472
- },
1473
- "frontend/node_modules/globals": {
1474
- "version": "17.5.0",
1475
- "dev": true,
1476
- "license": "MIT",
1477
- "engines": {
1478
- "node": ">=18"
1479
- },
1480
- "funding": {
1481
- "url": "https://github.com/sponsors/sindresorhus"
1482
- }
1483
- },
1484
- "frontend/node_modules/gopd": {
1485
- "version": "1.2.0",
1486
- "license": "MIT",
1487
- "engines": {
1488
- "node": ">= 0.4"
1489
- },
1490
- "funding": {
1491
- "url": "https://github.com/sponsors/ljharb"
1492
- }
1493
- },
1494
- "frontend/node_modules/has-flag": {
1495
- "version": "4.0.0",
1496
- "dev": true,
1497
- "license": "MIT",
1498
- "engines": {
1499
- "node": ">=8"
1500
- }
1501
- },
1502
- "frontend/node_modules/has-symbols": {
1503
- "version": "1.1.0",
1504
- "license": "MIT",
1505
- "engines": {
1506
- "node": ">= 0.4"
1507
- },
1508
- "funding": {
1509
- "url": "https://github.com/sponsors/ljharb"
1510
- }
1511
- },
1512
- "frontend/node_modules/has-tostringtag": {
1513
- "version": "1.0.2",
1514
- "license": "MIT",
1515
- "dependencies": {
1516
- "has-symbols": "^1.0.3"
1517
- },
1518
- "engines": {
1519
- "node": ">= 0.4"
1520
- },
1521
- "funding": {
1522
- "url": "https://github.com/sponsors/ljharb"
1523
- }
1524
- },
1525
- "frontend/node_modules/hasown": {
1526
- "version": "2.0.2",
1527
- "license": "MIT",
1528
- "dependencies": {
1529
- "function-bind": "^1.1.2"
1530
- },
1531
- "engines": {
1532
- "node": ">= 0.4"
1533
- }
1534
- },
1535
- "frontend/node_modules/hermes-estree": {
1536
- "version": "0.25.1",
1537
- "dev": true,
1538
- "license": "MIT"
1539
- },
1540
- "frontend/node_modules/hermes-parser": {
1541
- "version": "0.25.1",
1542
- "dev": true,
1543
- "license": "MIT",
1544
- "dependencies": {
1545
- "hermes-estree": "0.25.1"
1546
- }
1547
- },
1548
- "frontend/node_modules/ignore": {
1549
- "version": "5.3.2",
1550
- "dev": true,
1551
- "license": "MIT",
1552
- "engines": {
1553
- "node": ">= 4"
1554
- }
1555
- },
1556
- "frontend/node_modules/import-fresh": {
1557
- "version": "3.3.1",
1558
- "dev": true,
1559
- "license": "MIT",
1560
- "dependencies": {
1561
- "parent-module": "^1.0.0",
1562
- "resolve-from": "^4.0.0"
1563
- },
1564
- "engines": {
1565
- "node": ">=6"
1566
- },
1567
- "funding": {
1568
- "url": "https://github.com/sponsors/sindresorhus"
1569
- }
1570
- },
1571
- "frontend/node_modules/imurmurhash": {
1572
- "version": "0.1.4",
1573
- "dev": true,
1574
- "license": "MIT",
1575
- "engines": {
1576
- "node": ">=0.8.19"
1577
- }
1578
- },
1579
- "frontend/node_modules/is-extglob": {
1580
- "version": "2.1.1",
1581
- "dev": true,
1582
- "license": "MIT",
1583
- "engines": {
1584
- "node": ">=0.10.0"
1585
- }
1586
- },
1587
- "frontend/node_modules/is-glob": {
1588
- "version": "4.0.3",
1589
- "dev": true,
1590
- "license": "MIT",
1591
- "dependencies": {
1592
- "is-extglob": "^2.1.1"
1593
- },
1594
- "engines": {
1595
- "node": ">=0.10.0"
1596
- }
1597
- },
1598
- "frontend/node_modules/isexe": {
1599
- "version": "2.0.0",
1600
- "dev": true,
1601
- "license": "ISC"
1602
- },
1603
- "frontend/node_modules/js-tokens": {
1604
- "version": "4.0.0",
1605
- "dev": true,
1606
- "license": "MIT"
1607
- },
1608
- "frontend/node_modules/js-yaml": {
1609
- "version": "4.1.1",
1610
- "dev": true,
1611
- "license": "MIT",
1612
- "dependencies": {
1613
- "argparse": "^2.0.1"
1614
- },
1615
- "bin": {
1616
- "js-yaml": "bin/js-yaml.js"
1617
- }
1618
- },
1619
- "frontend/node_modules/jsesc": {
1620
- "version": "3.1.0",
1621
- "dev": true,
1622
- "license": "MIT",
1623
- "bin": {
1624
- "jsesc": "bin/jsesc"
1625
- },
1626
- "engines": {
1627
- "node": ">=6"
1628
- }
1629
- },
1630
- "frontend/node_modules/json-buffer": {
1631
- "version": "3.0.1",
1632
- "dev": true,
1633
- "license": "MIT"
1634
- },
1635
- "frontend/node_modules/json-schema-traverse": {
1636
- "version": "0.4.1",
1637
- "dev": true,
1638
- "license": "MIT"
1639
- },
1640
- "frontend/node_modules/json-stable-stringify-without-jsonify": {
1641
- "version": "1.0.1",
1642
- "dev": true,
1643
- "license": "MIT"
1644
- },
1645
- "frontend/node_modules/json5": {
1646
- "version": "2.2.3",
1647
- "dev": true,
1648
- "license": "MIT",
1649
- "bin": {
1650
- "json5": "lib/cli.js"
1651
- },
1652
- "engines": {
1653
- "node": ">=6"
1654
- }
1655
- },
1656
- "frontend/node_modules/keyv": {
1657
- "version": "4.5.4",
1658
- "dev": true,
1659
- "license": "MIT",
1660
- "dependencies": {
1661
- "json-buffer": "3.0.1"
1662
- }
1663
- },
1664
- "frontend/node_modules/levn": {
1665
- "version": "0.4.1",
1666
- "dev": true,
1667
- "license": "MIT",
1668
- "dependencies": {
1669
- "prelude-ls": "^1.2.1",
1670
- "type-check": "~0.4.0"
1671
- },
1672
- "engines": {
1673
- "node": ">= 0.8.0"
1674
- }
1675
- },
1676
- "frontend/node_modules/lightningcss": {
1677
- "version": "1.32.0",
1678
- "dev": true,
1679
- "license": "MPL-2.0",
1680
- "dependencies": {
1681
- "detect-libc": "^2.0.3"
1682
- },
1683
- "engines": {
1684
- "node": ">= 12.0.0"
1685
- },
1686
- "funding": {
1687
- "type": "opencollective",
1688
- "url": "https://opencollective.com/parcel"
1689
- },
1690
- "optionalDependencies": {
1691
- "lightningcss-android-arm64": "1.32.0",
1692
- "lightningcss-darwin-arm64": "1.32.0",
1693
- "lightningcss-darwin-x64": "1.32.0",
1694
- "lightningcss-freebsd-x64": "1.32.0",
1695
- "lightningcss-linux-arm-gnueabihf": "1.32.0",
1696
- "lightningcss-linux-arm64-gnu": "1.32.0",
1697
- "lightningcss-linux-arm64-musl": "1.32.0",
1698
- "lightningcss-linux-x64-gnu": "1.32.0",
1699
- "lightningcss-linux-x64-musl": "1.32.0",
1700
- "lightningcss-win32-arm64-msvc": "1.32.0",
1701
- "lightningcss-win32-x64-msvc": "1.32.0"
1702
- }
1703
- },
1704
- "frontend/node_modules/lightningcss-win32-x64-msvc": {
1705
- "version": "1.32.0",
1706
- "cpu": [
1707
- "x64"
1708
- ],
1709
- "dev": true,
1710
- "license": "MPL-2.0",
1711
- "optional": true,
1712
- "os": [
1713
- "win32"
1714
- ],
1715
- "engines": {
1716
- "node": ">= 12.0.0"
1717
- },
1718
- "funding": {
1719
- "type": "opencollective",
1720
- "url": "https://opencollective.com/parcel"
1721
- }
1722
- },
1723
- "frontend/node_modules/locate-path": {
1724
- "version": "6.0.0",
1725
- "dev": true,
1726
- "license": "MIT",
1727
- "dependencies": {
1728
- "p-locate": "^5.0.0"
1729
- },
1730
- "engines": {
1731
- "node": ">=10"
1732
- },
1733
- "funding": {
1734
- "url": "https://github.com/sponsors/sindresorhus"
1735
- }
1736
- },
1737
- "frontend/node_modules/lodash.merge": {
1738
- "version": "4.6.2",
1739
- "dev": true,
1740
- "license": "MIT"
1741
- },
1742
- "frontend/node_modules/lru-cache": {
1743
- "version": "5.1.1",
1744
- "dev": true,
1745
- "license": "ISC",
1746
- "dependencies": {
1747
- "yallist": "^3.0.2"
1748
- }
1749
- },
1750
- "frontend/node_modules/math-intrinsics": {
1751
- "version": "1.1.0",
1752
- "license": "MIT",
1753
- "engines": {
1754
- "node": ">= 0.4"
1755
- }
1756
- },
1757
- "frontend/node_modules/mime-db": {
1758
- "version": "1.52.0",
1759
- "license": "MIT",
1760
- "engines": {
1761
- "node": ">= 0.6"
1762
- }
1763
- },
1764
- "frontend/node_modules/mime-types": {
1765
- "version": "2.1.35",
1766
- "license": "MIT",
1767
- "dependencies": {
1768
- "mime-db": "1.52.0"
1769
- },
1770
- "engines": {
1771
- "node": ">= 0.6"
1772
- }
1773
- },
1774
- "frontend/node_modules/minimatch": {
1775
- "version": "3.1.5",
1776
- "dev": true,
1777
- "license": "ISC",
1778
- "dependencies": {
1779
- "brace-expansion": "^1.1.7"
1780
- },
1781
- "engines": {
1782
- "node": "*"
1783
- }
1784
- },
1785
- "frontend/node_modules/ms": {
1786
- "version": "2.1.3",
1787
- "dev": true,
1788
- "license": "MIT"
1789
- },
1790
- "frontend/node_modules/nanoid": {
1791
- "version": "3.3.11",
1792
- "dev": true,
1793
- "funding": [
1794
- {
1795
- "type": "github",
1796
- "url": "https://github.com/sponsors/ai"
1797
- }
1798
- ],
1799
- "license": "MIT",
1800
- "bin": {
1801
- "nanoid": "bin/nanoid.cjs"
1802
- },
1803
- "engines": {
1804
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1805
- }
1806
- },
1807
- "frontend/node_modules/natural-compare": {
1808
- "version": "1.4.0",
1809
- "dev": true,
1810
- "license": "MIT"
1811
- },
1812
- "frontend/node_modules/node-releases": {
1813
- "version": "2.0.37",
1814
- "dev": true,
1815
- "license": "MIT"
1816
- },
1817
- "frontend/node_modules/optionator": {
1818
- "version": "0.9.4",
1819
- "dev": true,
1820
- "license": "MIT",
1821
- "dependencies": {
1822
- "deep-is": "^0.1.3",
1823
- "fast-levenshtein": "^2.0.6",
1824
- "levn": "^0.4.1",
1825
- "prelude-ls": "^1.2.1",
1826
- "type-check": "^0.4.0",
1827
- "word-wrap": "^1.2.5"
1828
- },
1829
- "engines": {
1830
- "node": ">= 0.8.0"
1831
- }
1832
- },
1833
- "frontend/node_modules/p-limit": {
1834
- "version": "3.1.0",
1835
- "dev": true,
1836
- "license": "MIT",
1837
- "dependencies": {
1838
- "yocto-queue": "^0.1.0"
1839
- },
1840
- "engines": {
1841
- "node": ">=10"
1842
- },
1843
- "funding": {
1844
- "url": "https://github.com/sponsors/sindresorhus"
1845
- }
1846
- },
1847
- "frontend/node_modules/p-locate": {
1848
- "version": "5.0.0",
1849
- "dev": true,
1850
- "license": "MIT",
1851
- "dependencies": {
1852
- "p-limit": "^3.0.2"
1853
- },
1854
- "engines": {
1855
- "node": ">=10"
1856
- },
1857
- "funding": {
1858
- "url": "https://github.com/sponsors/sindresorhus"
1859
- }
1860
- },
1861
- "frontend/node_modules/parent-module": {
1862
- "version": "1.0.1",
1863
- "dev": true,
1864
- "license": "MIT",
1865
- "dependencies": {
1866
- "callsites": "^3.0.0"
1867
- },
1868
- "engines": {
1869
- "node": ">=6"
1870
- }
1871
- },
1872
- "frontend/node_modules/path-exists": {
1873
- "version": "4.0.0",
1874
- "dev": true,
1875
- "license": "MIT",
1876
- "engines": {
1877
- "node": ">=8"
1878
- }
1879
- },
1880
- "frontend/node_modules/path-key": {
1881
- "version": "3.1.1",
1882
- "dev": true,
1883
- "license": "MIT",
1884
- "engines": {
1885
- "node": ">=8"
1886
- }
1887
- },
1888
- "frontend/node_modules/picocolors": {
1889
- "version": "1.1.1",
1890
- "dev": true,
1891
- "license": "ISC"
1892
- },
1893
- "frontend/node_modules/picomatch": {
1894
- "version": "4.0.4",
1895
- "dev": true,
1896
- "license": "MIT",
1897
- "engines": {
1898
- "node": ">=12"
1899
- },
1900
- "funding": {
1901
- "url": "https://github.com/sponsors/jonschlinkert"
1902
- }
1903
- },
1904
- "frontend/node_modules/postcss": {
1905
- "version": "8.5.9",
1906
- "dev": true,
1907
- "funding": [
1908
- {
1909
- "type": "opencollective",
1910
- "url": "https://opencollective.com/postcss/"
1911
- },
1912
- {
1913
- "type": "tidelift",
1914
- "url": "https://tidelift.com/funding/github/npm/postcss"
1915
- },
1916
- {
1917
- "type": "github",
1918
- "url": "https://github.com/sponsors/ai"
1919
- }
1920
- ],
1921
- "license": "MIT",
1922
- "dependencies": {
1923
- "nanoid": "^3.3.11",
1924
- "picocolors": "^1.1.1",
1925
- "source-map-js": "^1.2.1"
1926
- },
1927
- "engines": {
1928
- "node": "^10 || ^12 || >=14"
1929
- }
1930
- },
1931
- "frontend/node_modules/prelude-ls": {
1932
- "version": "1.2.1",
1933
- "dev": true,
1934
- "license": "MIT",
1935
- "engines": {
1936
- "node": ">= 0.8.0"
1937
- }
1938
- },
1939
- "frontend/node_modules/proxy-from-env": {
1940
- "version": "2.1.0",
1941
- "license": "MIT",
1942
- "engines": {
1943
- "node": ">=10"
1944
- }
1945
- },
1946
- "frontend/node_modules/punycode": {
1947
- "version": "2.3.1",
1948
- "dev": true,
1949
- "license": "MIT",
1950
- "engines": {
1951
- "node": ">=6"
1952
- }
1953
- },
1954
- "frontend/node_modules/react": {
1955
- "version": "19.2.5",
1956
- "license": "MIT",
1957
- "engines": {
1958
- "node": ">=0.10.0"
1959
- }
1960
- },
1961
- "frontend/node_modules/react-dom": {
1962
- "version": "19.2.5",
1963
- "license": "MIT",
1964
- "dependencies": {
1965
- "scheduler": "^0.27.0"
1966
- },
1967
- "peerDependencies": {
1968
- "react": "^19.2.5"
1969
- }
1970
- },
1971
- "frontend/node_modules/resolve-from": {
1972
- "version": "4.0.0",
1973
- "dev": true,
1974
- "license": "MIT",
1975
- "engines": {
1976
- "node": ">=4"
1977
- }
1978
- },
1979
- "frontend/node_modules/rolldown": {
1980
- "version": "1.0.0-rc.15",
1981
- "dev": true,
1982
- "license": "MIT",
1983
- "dependencies": {
1984
- "@oxc-project/types": "=0.124.0",
1985
- "@rolldown/pluginutils": "1.0.0-rc.15"
1986
- },
1987
- "bin": {
1988
- "rolldown": "bin/cli.mjs"
1989
- },
1990
- "engines": {
1991
- "node": "^20.19.0 || >=22.12.0"
1992
- },
1993
- "optionalDependencies": {
1994
- "@rolldown/binding-android-arm64": "1.0.0-rc.15",
1995
- "@rolldown/binding-darwin-arm64": "1.0.0-rc.15",
1996
- "@rolldown/binding-darwin-x64": "1.0.0-rc.15",
1997
- "@rolldown/binding-freebsd-x64": "1.0.0-rc.15",
1998
- "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15",
1999
- "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15",
2000
- "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15",
2001
- "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15",
2002
- "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15",
2003
- "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15",
2004
- "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15",
2005
- "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15",
2006
- "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15",
2007
- "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15",
2008
- "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15"
2009
- }
2010
- },
2011
- "frontend/node_modules/rolldown/node_modules/@rolldown/pluginutils": {
2012
- "version": "1.0.0-rc.15",
2013
- "dev": true,
2014
- "license": "MIT"
2015
- },
2016
- "frontend/node_modules/scheduler": {
2017
- "version": "0.27.0",
2018
- "license": "MIT"
2019
- },
2020
- "frontend/node_modules/semver": {
2021
- "version": "6.3.1",
2022
- "dev": true,
2023
- "license": "ISC",
2024
- "bin": {
2025
- "semver": "bin/semver.js"
2026
- }
2027
- },
2028
- "frontend/node_modules/shebang-command": {
2029
- "version": "2.0.0",
2030
- "dev": true,
2031
- "license": "MIT",
2032
- "dependencies": {
2033
- "shebang-regex": "^3.0.0"
2034
- },
2035
- "engines": {
2036
- "node": ">=8"
2037
- }
2038
- },
2039
- "frontend/node_modules/shebang-regex": {
2040
- "version": "3.0.0",
2041
- "dev": true,
2042
- "license": "MIT",
2043
- "engines": {
2044
- "node": ">=8"
2045
- }
2046
- },
2047
- "frontend/node_modules/source-map-js": {
2048
- "version": "1.2.1",
2049
- "dev": true,
2050
- "license": "BSD-3-Clause",
2051
- "engines": {
2052
- "node": ">=0.10.0"
2053
- }
2054
- },
2055
- "frontend/node_modules/strip-json-comments": {
2056
- "version": "3.1.1",
2057
- "dev": true,
2058
- "license": "MIT",
2059
- "engines": {
2060
- "node": ">=8"
2061
- },
2062
- "funding": {
2063
- "url": "https://github.com/sponsors/sindresorhus"
2064
- }
2065
- },
2066
- "frontend/node_modules/supports-color": {
2067
- "version": "7.2.0",
2068
- "dev": true,
2069
- "license": "MIT",
2070
- "dependencies": {
2071
- "has-flag": "^4.0.0"
2072
- },
2073
- "engines": {
2074
- "node": ">=8"
2075
- }
2076
- },
2077
- "frontend/node_modules/tinyglobby": {
2078
- "version": "0.2.16",
2079
- "dev": true,
2080
- "license": "MIT",
2081
- "dependencies": {
2082
- "fdir": "^6.5.0",
2083
- "picomatch": "^4.0.4"
2084
- },
2085
- "engines": {
2086
- "node": ">=12.0.0"
2087
- },
2088
- "funding": {
2089
- "url": "https://github.com/sponsors/SuperchupuDev"
2090
- }
2091
- },
2092
- "frontend/node_modules/ts-api-utils": {
2093
- "version": "2.5.0",
2094
- "dev": true,
2095
- "license": "MIT",
2096
- "engines": {
2097
- "node": ">=18.12"
2098
- },
2099
- "peerDependencies": {
2100
- "typescript": ">=4.8.4"
2101
- }
2102
- },
2103
- "frontend/node_modules/type-check": {
2104
- "version": "0.4.0",
2105
- "dev": true,
2106
- "license": "MIT",
2107
- "dependencies": {
2108
- "prelude-ls": "^1.2.1"
2109
- },
2110
- "engines": {
2111
- "node": ">= 0.8.0"
2112
- }
2113
- },
2114
- "frontend/node_modules/typescript": {
2115
- "version": "6.0.2",
2116
- "dev": true,
2117
- "license": "Apache-2.0",
2118
- "bin": {
2119
- "tsc": "bin/tsc",
2120
- "tsserver": "bin/tsserver"
2121
- },
2122
- "engines": {
2123
- "node": ">=14.17"
2124
- }
2125
- },
2126
- "frontend/node_modules/typescript-eslint": {
2127
- "version": "8.58.1",
2128
- "dev": true,
2129
- "license": "MIT",
2130
- "dependencies": {
2131
- "@typescript-eslint/eslint-plugin": "8.58.1",
2132
- "@typescript-eslint/parser": "8.58.1",
2133
- "@typescript-eslint/typescript-estree": "8.58.1",
2134
- "@typescript-eslint/utils": "8.58.1"
2135
- },
2136
- "engines": {
2137
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2138
- },
2139
- "funding": {
2140
- "type": "opencollective",
2141
- "url": "https://opencollective.com/typescript-eslint"
2142
- },
2143
- "peerDependencies": {
2144
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
2145
- "typescript": ">=4.8.4 <6.1.0"
2146
- }
2147
- },
2148
- "frontend/node_modules/undici-types": {
2149
- "version": "7.16.0",
2150
- "dev": true,
2151
- "license": "MIT"
2152
- },
2153
- "frontend/node_modules/update-browserslist-db": {
2154
- "version": "1.2.3",
2155
- "dev": true,
2156
- "funding": [
2157
- {
2158
- "type": "opencollective",
2159
- "url": "https://opencollective.com/browserslist"
2160
- },
2161
- {
2162
- "type": "tidelift",
2163
- "url": "https://tidelift.com/funding/github/npm/browserslist"
2164
- },
2165
- {
2166
- "type": "github",
2167
- "url": "https://github.com/sponsors/ai"
2168
- }
2169
- ],
2170
- "license": "MIT",
2171
- "dependencies": {
2172
- "escalade": "^3.2.0",
2173
- "picocolors": "^1.1.1"
2174
- },
2175
- "bin": {
2176
- "update-browserslist-db": "cli.js"
2177
- },
2178
- "peerDependencies": {
2179
- "browserslist": ">= 4.21.0"
2180
- }
2181
- },
2182
- "frontend/node_modules/uri-js": {
2183
- "version": "4.4.1",
2184
- "dev": true,
2185
- "license": "BSD-2-Clause",
2186
- "dependencies": {
2187
- "punycode": "^2.1.0"
2188
- }
2189
- },
2190
- "frontend/node_modules/vite": {
2191
- "version": "8.0.8",
2192
- "dev": true,
2193
- "license": "MIT",
2194
- "dependencies": {
2195
- "lightningcss": "^1.32.0",
2196
- "picomatch": "^4.0.4",
2197
- "postcss": "^8.5.8",
2198
- "rolldown": "1.0.0-rc.15",
2199
- "tinyglobby": "^0.2.15"
2200
- },
2201
- "bin": {
2202
- "vite": "bin/vite.js"
2203
- },
2204
- "engines": {
2205
- "node": "^20.19.0 || >=22.12.0"
2206
- },
2207
- "funding": {
2208
- "url": "https://github.com/vitejs/vite?sponsor=1"
2209
- },
2210
- "optionalDependencies": {
2211
- "fsevents": "~2.3.3"
2212
- },
2213
- "peerDependencies": {
2214
- "@types/node": "^20.19.0 || >=22.12.0",
2215
- "@vitejs/devtools": "^0.1.0",
2216
- "esbuild": "^0.27.0 || ^0.28.0",
2217
- "jiti": ">=1.21.0",
2218
- "less": "^4.0.0",
2219
- "sass": "^1.70.0",
2220
- "sass-embedded": "^1.70.0",
2221
- "stylus": ">=0.54.8",
2222
- "sugarss": "^5.0.0",
2223
- "terser": "^5.16.0",
2224
- "tsx": "^4.8.1",
2225
- "yaml": "^2.4.2"
2226
- },
2227
- "peerDependenciesMeta": {
2228
- "@types/node": {
2229
- "optional": true
2230
- },
2231
- "@vitejs/devtools": {
2232
- "optional": true
2233
- },
2234
- "esbuild": {
2235
- "optional": true
2236
- },
2237
- "jiti": {
2238
- "optional": true
2239
- },
2240
- "less": {
2241
- "optional": true
2242
- },
2243
- "sass": {
2244
- "optional": true
2245
- },
2246
- "sass-embedded": {
2247
- "optional": true
2248
- },
2249
- "stylus": {
2250
- "optional": true
2251
- },
2252
- "sugarss": {
2253
- "optional": true
2254
- },
2255
- "terser": {
2256
- "optional": true
2257
- },
2258
- "tsx": {
2259
- "optional": true
2260
- },
2261
- "yaml": {
2262
- "optional": true
2263
- }
2264
- }
2265
- },
2266
- "frontend/node_modules/which": {
2267
- "version": "2.0.2",
2268
- "dev": true,
2269
- "license": "ISC",
2270
- "dependencies": {
2271
- "isexe": "^2.0.0"
2272
- },
2273
- "bin": {
2274
- "node-which": "bin/node-which"
2275
- },
2276
- "engines": {
2277
- "node": ">= 8"
2278
- }
2279
- },
2280
- "frontend/node_modules/word-wrap": {
2281
- "version": "1.2.5",
2282
- "dev": true,
2283
- "license": "MIT",
2284
- "engines": {
2285
- "node": ">=0.10.0"
2286
- }
2287
- },
2288
- "frontend/node_modules/yallist": {
2289
- "version": "3.1.1",
2290
- "dev": true,
2291
- "license": "ISC"
2292
- },
2293
- "frontend/node_modules/yocto-queue": {
2294
- "version": "0.1.0",
2295
- "dev": true,
2296
- "license": "MIT",
2297
- "engines": {
2298
- "node": ">=10"
2299
- },
2300
- "funding": {
2301
- "url": "https://github.com/sponsors/sindresorhus"
2302
- }
2303
- },
2304
- "frontend/node_modules/zod": {
2305
- "version": "4.3.6",
2306
- "dev": true,
2307
- "license": "MIT",
2308
- "funding": {
2309
- "url": "https://github.com/sponsors/colinhacks"
2310
- }
2311
- },
2312
- "frontend/node_modules/zod-validation-error": {
2313
- "version": "4.0.2",
2314
- "dev": true,
2315
- "license": "MIT",
2316
- "engines": {
2317
- "node": ">=18.0.0"
2318
- },
2319
- "peerDependencies": {
2320
- "zod": "^3.25.0 || ^4.0.0"
2321
- }
2322
- },
2323
- "node_modules/frontend": {
2324
- "resolved": "frontend",
2325
- "link": true
2326
- }
2327
- }
2328
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/.env.example DELETED
@@ -1,9 +0,0 @@
1
- # API Configuration
2
- # For local development with separate backend server, use:
3
- # VITE_API_URL=http://localhost:8000
4
-
5
- # For Vercel deployment (monorepo with serverless functions), leave empty or use:
6
- # VITE_API_URL=/api
7
-
8
- # The default is /api which works for Vercel deployment
9
- VITE_API_URL=/api
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/.gitignore DELETED
@@ -1,24 +0,0 @@
1
- # Logs
2
- logs
3
- *.log
4
- npm-debug.log*
5
- yarn-debug.log*
6
- yarn-error.log*
7
- pnpm-debug.log*
8
- lerna-debug.log*
9
-
10
- node_modules
11
- dist
12
- dist-ssr
13
- *.local
14
-
15
- # Editor directories and files
16
- .vscode/*
17
- !.vscode/extensions.json
18
- .idea
19
- .DS_Store
20
- *.suo
21
- *.ntvs*
22
- *.njsproj
23
- *.sln
24
- *.sw?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/README.md DELETED
@@ -1,73 +0,0 @@
1
- # React + TypeScript + Vite
2
-
3
- This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
-
5
- Currently, two official plugins are available:
6
-
7
- - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
8
- - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
9
-
10
- ## React Compiler
11
-
12
- The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
-
14
- ## Expanding the ESLint configuration
15
-
16
- If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
17
-
18
- ```js
19
- export default defineConfig([
20
- globalIgnores(['dist']),
21
- {
22
- files: ['**/*.{ts,tsx}'],
23
- extends: [
24
- // Other configs...
25
-
26
- // Remove tseslint.configs.recommended and replace with this
27
- tseslint.configs.recommendedTypeChecked,
28
- // Alternatively, use this for stricter rules
29
- tseslint.configs.strictTypeChecked,
30
- // Optionally, add this for stylistic rules
31
- tseslint.configs.stylisticTypeChecked,
32
-
33
- // Other configs...
34
- ],
35
- languageOptions: {
36
- parserOptions: {
37
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
38
- tsconfigRootDir: import.meta.dirname,
39
- },
40
- // other options...
41
- },
42
- },
43
- ])
44
- ```
45
-
46
- You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
47
-
48
- ```js
49
- // eslint.config.js
50
- import reactX from 'eslint-plugin-react-x'
51
- import reactDom from 'eslint-plugin-react-dom'
52
-
53
- export default defineConfig([
54
- globalIgnores(['dist']),
55
- {
56
- files: ['**/*.{ts,tsx}'],
57
- extends: [
58
- // Other configs...
59
- // Enable lint rules for React
60
- reactX.configs['recommended-typescript'],
61
- // Enable lint rules for React DOM
62
- reactDom.configs.recommended,
63
- ],
64
- languageOptions: {
65
- parserOptions: {
66
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
67
- tsconfigRootDir: import.meta.dirname,
68
- },
69
- // other options...
70
- },
71
- },
72
- ])
73
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/eslint.config.js DELETED
@@ -1,23 +0,0 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import reactHooks from 'eslint-plugin-react-hooks'
4
- import reactRefresh from 'eslint-plugin-react-refresh'
5
- import tseslint from 'typescript-eslint'
6
- import { defineConfig, globalIgnores } from 'eslint/config'
7
-
8
- export default defineConfig([
9
- globalIgnores(['dist']),
10
- {
11
- files: ['**/*.{ts,tsx}'],
12
- extends: [
13
- js.configs.recommended,
14
- tseslint.configs.recommended,
15
- reactHooks.configs.flat.recommended,
16
- reactRefresh.configs.vite,
17
- ],
18
- languageOptions: {
19
- ecmaVersion: 2020,
20
- globals: globals.browser,
21
- },
22
- },
23
- ])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/index.html DELETED
@@ -1,13 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>frontend</title>
8
- </head>
9
- <body>
10
- <div id="root"></div>
11
- <script type="module" src="/src/main.tsx"></script>
12
- </body>
13
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/package-lock.json DELETED
The diff for this file is too large to render. See raw diff
 
node_modules/frontend/package.json DELETED
@@ -1,31 +0,0 @@
1
- {
2
- "name": "frontend",
3
- "private": true,
4
- "version": "0.0.0",
5
- "type": "module",
6
- "scripts": {
7
- "dev": "vite",
8
- "build": "vite build",
9
- "lint": "eslint .",
10
- "preview": "vite preview"
11
- },
12
- "dependencies": {
13
- "axios": "^1.15.0",
14
- "react": "^19.2.4",
15
- "react-dom": "^19.2.4"
16
- },
17
- "devDependencies": {
18
- "@eslint/js": "^9.39.4",
19
- "@types/node": "^24.12.2",
20
- "@types/react": "^19.2.14",
21
- "@types/react-dom": "^19.2.3",
22
- "@vitejs/plugin-react": "^6.0.1",
23
- "eslint": "^9.39.4",
24
- "eslint-plugin-react-hooks": "^7.0.1",
25
- "eslint-plugin-react-refresh": "^0.5.2",
26
- "globals": "^17.4.0",
27
- "typescript": "~6.0.2",
28
- "typescript-eslint": "^8.58.0",
29
- "vite": "^8.0.4"
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/public/favicon.svg DELETED
node_modules/frontend/public/icons.svg DELETED
node_modules/frontend/src/App.css DELETED
@@ -1,246 +0,0 @@
1
- /* Chat Container */
2
- .chat-container {
3
- display: flex;
4
- flex-direction: column;
5
- height: 100vh;
6
- max-width: 900px;
7
- margin: 0 auto;
8
- background: var(--bg);
9
- }
10
-
11
- /* Chat Header */
12
- .chat-header {
13
- padding: 24px;
14
- border-bottom: 1px solid var(--border);
15
- text-align: center;
16
- background: var(--bg);
17
- }
18
-
19
- .chat-header h1 {
20
- margin: 0 0 8px 0;
21
- font-size: 24px;
22
- color: var(--text-h);
23
- }
24
-
25
- .chat-header p {
26
- margin: 0;
27
- font-size: 14px;
28
- color: var(--text);
29
- opacity: 0.8;
30
- }
31
-
32
- /* Chat Messages Area */
33
- .chat-messages {
34
- flex: 1;
35
- overflow-y: auto;
36
- padding: 24px;
37
- display: flex;
38
- flex-direction: column;
39
- gap: 16px;
40
- }
41
-
42
- .empty-state {
43
- display: flex;
44
- align-items: center;
45
- justify-content: center;
46
- height: 100%;
47
- color: var(--text);
48
- opacity: 0.6;
49
- font-size: 14px;
50
- }
51
-
52
- /* Message Styles */
53
- .message {
54
- display: flex;
55
- flex-direction: column;
56
- max-width: 80%;
57
- animation: fadeIn 0.3s ease-in;
58
- }
59
-
60
- @keyframes fadeIn {
61
- from {
62
- opacity: 0;
63
- transform: translateY(10px);
64
- }
65
- to {
66
- opacity: 1;
67
- transform: translateY(0);
68
- }
69
- }
70
-
71
- .message.user {
72
- align-self: flex-end;
73
- }
74
-
75
- .message.assistant {
76
- align-self: flex-start;
77
- }
78
-
79
- .message-content {
80
- padding: 12px 16px;
81
- border-radius: 12px;
82
- background: var(--social-bg);
83
- }
84
-
85
- .message.user .message-content {
86
- background: var(--accent-bg);
87
- border: 1px solid var(--accent-border);
88
- }
89
-
90
- .message.assistant .message-content {
91
- background: var(--social-bg);
92
- border: 1px solid var(--border);
93
- }
94
-
95
- .message.assistant.escalation .message-content {
96
- background: #fff3cd;
97
- border: 1px solid #ffc107;
98
- }
99
-
100
- .message-role {
101
- display: block;
102
- font-size: 12px;
103
- font-weight: 600;
104
- margin-bottom: 6px;
105
- color: var(--text-h);
106
- text-transform: uppercase;
107
- letter-spacing: 0.5px;
108
- }
109
-
110
- .message-content p {
111
- margin: 0;
112
- font-size: 15px;
113
- line-height: 1.5;
114
- color: var(--text);
115
- }
116
-
117
- /* Confidence Indicator */
118
- .confidence-indicator {
119
- margin-top: 12px;
120
- padding-top: 12px;
121
- border-top: 1px solid var(--border);
122
- font-size: 13px;
123
- }
124
-
125
- .confidence-label {
126
- font-weight: 600;
127
- color: var(--text-h);
128
- margin-right: 6px;
129
- }
130
-
131
- .confidence-text {
132
- color: var(--text);
133
- opacity: 0.9;
134
- }
135
-
136
- /* Escalation Badge */
137
- .escalation-badge {
138
- margin-top: 8px;
139
- padding: 6px 12px;
140
- background: #ffc107;
141
- color: #000;
142
- border-radius: 6px;
143
- font-size: 12px;
144
- font-weight: 600;
145
- display: inline-block;
146
- }
147
-
148
- /* Loading State */
149
- .message.loading .message-content {
150
- opacity: 0.7;
151
- }
152
-
153
- .loading-text {
154
- font-style: italic;
155
- }
156
-
157
- /* Chat Input Form */
158
- .chat-input-form {
159
- display: flex;
160
- gap: 12px;
161
- padding: 24px;
162
- border-top: 1px solid var(--border);
163
- background: var(--bg);
164
- }
165
-
166
- .chat-input {
167
- flex: 1;
168
- padding: 12px 16px;
169
- font-size: 15px;
170
- border: 2px solid var(--border);
171
- border-radius: 8px;
172
- background: var(--bg);
173
- color: var(--text);
174
- transition: border-color 0.3s;
175
- }
176
-
177
- .chat-input:focus {
178
- outline: none;
179
- border-color: var(--accent);
180
- }
181
-
182
- .chat-input:disabled {
183
- opacity: 0.5;
184
- cursor: not-allowed;
185
- }
186
-
187
- .chat-submit {
188
- padding: 12px 24px;
189
- font-size: 15px;
190
- font-weight: 600;
191
- border: 2px solid var(--accent-border);
192
- border-radius: 8px;
193
- background: var(--accent-bg);
194
- color: var(--accent);
195
- cursor: pointer;
196
- transition: all 0.3s;
197
- }
198
-
199
- .chat-submit:hover:not(:disabled) {
200
- border-color: var(--accent);
201
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
202
- }
203
-
204
- .chat-submit:disabled {
205
- opacity: 0.5;
206
- cursor: not-allowed;
207
- }
208
-
209
- .chat-submit:focus-visible {
210
- outline: 2px solid var(--accent);
211
- outline-offset: 2px;
212
- }
213
-
214
- /* Responsive Design */
215
- @media (max-width: 768px) {
216
- .chat-header {
217
- padding: 16px;
218
- }
219
-
220
- .chat-header h1 {
221
- font-size: 20px;
222
- }
223
-
224
- .chat-messages {
225
- padding: 16px;
226
- }
227
-
228
- .message {
229
- max-width: 90%;
230
- }
231
-
232
- .chat-input-form {
233
- padding: 16px;
234
- gap: 8px;
235
- }
236
-
237
- .chat-input {
238
- font-size: 14px;
239
- }
240
-
241
- .chat-submit {
242
- padding: 12px 16px;
243
- font-size: 14px;
244
- }
245
- }
246
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/src/App.tsx DELETED
@@ -1,137 +0,0 @@
1
- import { useState } from 'react'
2
- import './App.css'
3
- import { askQuestion, ApiError } from './services/api'
4
-
5
- interface Message {
6
- role: 'user' | 'assistant';
7
- content: string;
8
- confidenceExplanation?: string;
9
- responseType?: 'answer' | 'escalation';
10
- }
11
-
12
- function App() {
13
- const [messages, setMessages] = useState<Message[]>([]);
14
- const [input, setInput] = useState('');
15
- const [loading, setLoading] = useState(false);
16
-
17
- const handleSubmit = async (e: React.FormEvent) => {
18
- e.preventDefault();
19
-
20
- if (!input.trim() || loading) return;
21
-
22
- const userMessage: Message = {
23
- role: 'user',
24
- content: input.trim()
25
- };
26
-
27
- setMessages(prev => [...prev, userMessage]);
28
- const questionText = input.trim();
29
- setInput('');
30
- setLoading(true);
31
-
32
- try {
33
- const response = await askQuestion(questionText);
34
-
35
- const assistantMessage: Message = {
36
- role: 'assistant',
37
- content: response.message,
38
- confidenceExplanation: response.confidence_explanation,
39
- responseType: response.response_type
40
- };
41
-
42
- setMessages(prev => [...prev, assistantMessage]);
43
- } catch (error) {
44
- console.error('API Error:', error);
45
-
46
- let errorMessage = 'Sorry, something went wrong. Please try again.';
47
-
48
- if (error instanceof ApiError) {
49
- errorMessage = error.message;
50
- }
51
-
52
- const errorResponse: Message = {
53
- role: 'assistant',
54
- content: errorMessage,
55
- confidenceExplanation: 'Error occurred while processing your request',
56
- responseType: 'escalation'
57
- };
58
-
59
- setMessages(prev => [...prev, errorResponse]);
60
- } finally {
61
- setLoading(false);
62
- }
63
- };
64
-
65
- return (
66
- <div className="chat-container">
67
- <header className="chat-header">
68
- <h1>TaskFlow Support Chat</h1>
69
- <p>Ask questions about TaskFlow features and documentation</p>
70
- </header>
71
-
72
- <div className="chat-messages">
73
- {messages.length === 0 && (
74
- <div className="empty-state">
75
- <p>Start a conversation by asking a question below</p>
76
- </div>
77
- )}
78
-
79
- {messages.map((message, index) => (
80
- <div
81
- key={index}
82
- className={`message ${message.role} ${message.responseType || ''}`}
83
- >
84
- <div className="message-content">
85
- <strong className="message-role">
86
- {message.role === 'user' ? 'You' : 'Assistant'}
87
- </strong>
88
- <p>{message.content}</p>
89
-
90
- {message.confidenceExplanation && (
91
- <div className="confidence-indicator">
92
- <span className="confidence-label">Confidence:</span>
93
- <span className="confidence-text">{message.confidenceExplanation}</span>
94
- </div>
95
- )}
96
-
97
- {message.responseType === 'escalation' && (
98
- <div className="escalation-badge">
99
- Escalated to Human Support
100
- </div>
101
- )}
102
- </div>
103
- </div>
104
- ))}
105
-
106
- {loading && (
107
- <div className="message assistant loading">
108
- <div className="message-content">
109
- <strong className="message-role">Assistant</strong>
110
- <p className="loading-text">Thinking...</p>
111
- </div>
112
- </div>
113
- )}
114
- </div>
115
-
116
- <form className="chat-input-form" onSubmit={handleSubmit}>
117
- <input
118
- type="text"
119
- className="chat-input"
120
- placeholder="Ask a question about TaskFlow..."
121
- value={input}
122
- onChange={(e) => setInput(e.target.value)}
123
- disabled={loading}
124
- />
125
- <button
126
- type="submit"
127
- className="chat-submit"
128
- disabled={loading || !input.trim()}
129
- >
130
- {loading ? 'Sending...' : 'Send'}
131
- </button>
132
- </form>
133
- </div>
134
- )
135
- }
136
-
137
- export default App
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/src/assets/hero.png DELETED
Binary file (44.9 kB)
 
node_modules/frontend/src/assets/react.svg DELETED
node_modules/frontend/src/assets/vite.svg DELETED
node_modules/frontend/src/index.css DELETED
@@ -1,111 +0,0 @@
1
- :root {
2
- --text: #6b6375;
3
- --text-h: #08060d;
4
- --bg: #fff;
5
- --border: #e5e4e7;
6
- --code-bg: #f4f3ec;
7
- --accent: #aa3bff;
8
- --accent-bg: rgba(170, 59, 255, 0.1);
9
- --accent-border: rgba(170, 59, 255, 0.5);
10
- --social-bg: rgba(244, 243, 236, 0.5);
11
- --shadow:
12
- rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px;
13
-
14
- --sans: system-ui, 'Segoe UI', Roboto, sans-serif;
15
- --heading: system-ui, 'Segoe UI', Roboto, sans-serif;
16
- --mono: ui-monospace, Consolas, monospace;
17
-
18
- font: 18px/145% var(--sans);
19
- letter-spacing: 0.18px;
20
- color-scheme: light dark;
21
- color: var(--text);
22
- background: var(--bg);
23
- font-synthesis: none;
24
- text-rendering: optimizeLegibility;
25
- -webkit-font-smoothing: antialiased;
26
- -moz-osx-font-smoothing: grayscale;
27
-
28
- @media (max-width: 1024px) {
29
- font-size: 16px;
30
- }
31
- }
32
-
33
- @media (prefers-color-scheme: dark) {
34
- :root {
35
- --text: #9ca3af;
36
- --text-h: #f3f4f6;
37
- --bg: #16171d;
38
- --border: #2e303a;
39
- --code-bg: #1f2028;
40
- --accent: #c084fc;
41
- --accent-bg: rgba(192, 132, 252, 0.15);
42
- --accent-border: rgba(192, 132, 252, 0.5);
43
- --social-bg: rgba(47, 48, 58, 0.5);
44
- --shadow:
45
- rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px;
46
- }
47
-
48
- #social .button-icon {
49
- filter: invert(1) brightness(2);
50
- }
51
- }
52
-
53
- #root {
54
- width: 1126px;
55
- max-width: 100%;
56
- margin: 0 auto;
57
- text-align: center;
58
- border-inline: 1px solid var(--border);
59
- min-height: 100svh;
60
- display: flex;
61
- flex-direction: column;
62
- box-sizing: border-box;
63
- }
64
-
65
- body {
66
- margin: 0;
67
- }
68
-
69
- h1,
70
- h2 {
71
- font-family: var(--heading);
72
- font-weight: 500;
73
- color: var(--text-h);
74
- }
75
-
76
- h1 {
77
- font-size: 56px;
78
- letter-spacing: -1.68px;
79
- margin: 32px 0;
80
- @media (max-width: 1024px) {
81
- font-size: 36px;
82
- margin: 20px 0;
83
- }
84
- }
85
- h2 {
86
- font-size: 24px;
87
- line-height: 118%;
88
- letter-spacing: -0.24px;
89
- margin: 0 0 8px;
90
- @media (max-width: 1024px) {
91
- font-size: 20px;
92
- }
93
- }
94
- p {
95
- margin: 0;
96
- }
97
-
98
- code,
99
- .counter {
100
- font-family: var(--mono);
101
- display: inline-flex;
102
- border-radius: 4px;
103
- color: var(--text-h);
104
- }
105
-
106
- code {
107
- font-size: 15px;
108
- line-height: 135%;
109
- padding: 4px 8px;
110
- background: var(--code-bg);
111
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/src/main.tsx DELETED
@@ -1,10 +0,0 @@
1
- import { StrictMode } from 'react'
2
- import { createRoot } from 'react-dom/client'
3
- import './index.css'
4
- import App from './App.tsx'
5
-
6
- createRoot(document.getElementById('root')!).render(
7
- <StrictMode>
8
- <App />
9
- </StrictMode>,
10
- )
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/src/services/api.ts DELETED
@@ -1,154 +0,0 @@
1
- /**
2
- * API client for Smart Escalation API
3
- * Handles communication with the backend /ask endpoint
4
- */
5
-
6
- // API Response Types
7
- export interface ApiResponse {
8
- response_type: 'answer' | 'escalation';
9
- message: string;
10
- confidence_explanation: string;
11
- sources: string[] | null;
12
- }
13
-
14
- // API Request Types
15
- export interface QuestionRequest {
16
- question: string;
17
- }
18
-
19
- // Error Types
20
- export class ApiError extends Error {
21
- statusCode?: number;
22
- originalError?: unknown;
23
-
24
- constructor(
25
- message: string,
26
- statusCode?: number,
27
- originalError?: unknown
28
- ) {
29
- super(message);
30
- this.name = 'ApiError';
31
- this.statusCode = statusCode;
32
- this.originalError = originalError;
33
- }
34
- }
35
-
36
- /**
37
- * Get API URL from environment variables
38
- * For Vercel deployment, uses relative path /api
39
- * For local development, uses localhost:8000
40
- */
41
- const getApiUrl = (): string => {
42
- // In production (Vercel), use relative path to serverless function
43
- // In development, use environment variable or default to localhost
44
- return import.meta.env.VITE_API_URL || '/api';
45
- };
46
-
47
- /**
48
- * POST a question to the /ask endpoint
49
- *
50
- * @param question - The customer question to submit
51
- * @returns Promise resolving to the API response
52
- * @throws ApiError on network errors, timeouts, or invalid responses
53
- */
54
- export const askQuestion = async (question: string): Promise<ApiResponse> => {
55
- const apiUrl = getApiUrl();
56
- const endpoint = `${apiUrl}/ask`;
57
-
58
- // Validate input
59
- if (!question || question.trim().length === 0) {
60
- throw new ApiError('Question cannot be empty', 400);
61
- }
62
-
63
- const requestBody: QuestionRequest = {
64
- question: question.trim()
65
- };
66
-
67
- try {
68
- const controller = new AbortController();
69
- const timeoutId = setTimeout(() => controller.abort(), 30000); // 30 second timeout
70
-
71
- const response = await fetch(endpoint, {
72
- method: 'POST',
73
- headers: {
74
- 'Content-Type': 'application/json',
75
- },
76
- body: JSON.stringify(requestBody),
77
- signal: controller.signal,
78
- });
79
-
80
- clearTimeout(timeoutId);
81
-
82
- // Handle HTTP errors
83
- if (!response.ok) {
84
- let errorMessage = `API request failed with status ${response.status}`;
85
-
86
- try {
87
- const errorData = await response.json();
88
- errorMessage = errorData.detail || errorData.message || errorMessage;
89
- } catch {
90
- // If error response is not JSON, use status text
91
- errorMessage = response.statusText || errorMessage;
92
- }
93
-
94
- throw new ApiError(errorMessage, response.status);
95
- }
96
-
97
- // Parse response
98
- const data = await response.json();
99
-
100
- // Validate response structure
101
- if (!isValidApiResponse(data)) {
102
- throw new ApiError('Invalid response format from API', 500);
103
- }
104
-
105
- return data;
106
-
107
- } catch (error) {
108
- // Handle network errors
109
- if (error instanceof ApiError) {
110
- throw error;
111
- }
112
-
113
- if (error instanceof Error) {
114
- if (error.name === 'AbortError') {
115
- throw new ApiError('Request timeout - please try again', 408, error);
116
- }
117
-
118
- if (error.message.includes('fetch')) {
119
- throw new ApiError(
120
- 'Unable to connect to the API. Please check your connection and try again.',
121
- 0,
122
- error
123
- );
124
- }
125
-
126
- throw new ApiError(
127
- `Network error: ${error.message}`,
128
- 0,
129
- error
130
- );
131
- }
132
-
133
- throw new ApiError('An unexpected error occurred', 0, error);
134
- }
135
- };
136
-
137
- /**
138
- * Type guard to validate API response structure
139
- */
140
- function isValidApiResponse(data: unknown): data is ApiResponse {
141
- if (typeof data !== 'object' || data === null) {
142
- return false;
143
- }
144
-
145
- const response = data as Record<string, unknown>;
146
-
147
- return (
148
- typeof response.response_type === 'string' &&
149
- (response.response_type === 'answer' || response.response_type === 'escalation') &&
150
- typeof response.message === 'string' &&
151
- typeof response.confidence_explanation === 'string' &&
152
- (response.sources === null || Array.isArray(response.sources))
153
- );
154
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/tsconfig.app.json DELETED
@@ -1,25 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
- "target": "es2023",
5
- "lib": ["ES2023", "DOM", "DOM.Iterable"],
6
- "module": "esnext",
7
- "types": ["vite/client"],
8
- "skipLibCheck": true,
9
-
10
- /* Bundler mode */
11
- "moduleResolution": "bundler",
12
- "allowImportingTsExtensions": true,
13
- "verbatimModuleSyntax": true,
14
- "moduleDetection": "force",
15
- "noEmit": true,
16
- "jsx": "react-jsx",
17
-
18
- /* Linting */
19
- "noUnusedLocals": true,
20
- "noUnusedParameters": true,
21
- "erasableSyntaxOnly": true,
22
- "noFallthroughCasesInSwitch": true
23
- },
24
- "include": ["src"]
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/tsconfig.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "files": [],
3
- "references": [
4
- { "path": "./tsconfig.app.json" },
5
- { "path": "./tsconfig.node.json" }
6
- ]
7
- }
 
 
 
 
 
 
 
 
node_modules/frontend/tsconfig.node.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
- "target": "es2023",
5
- "lib": ["ES2023"],
6
- "module": "esnext",
7
- "types": ["node"],
8
- "skipLibCheck": true,
9
-
10
- /* Bundler mode */
11
- "moduleResolution": "bundler",
12
- "allowImportingTsExtensions": true,
13
- "verbatimModuleSyntax": true,
14
- "moduleDetection": "force",
15
- "noEmit": true,
16
-
17
- /* Linting */
18
- "noUnusedLocals": true,
19
- "noUnusedParameters": true,
20
- "erasableSyntaxOnly": true,
21
- "noFallthroughCasesInSwitch": true
22
- },
23
- "include": ["vite.config.ts"]
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/frontend/vite.config.ts DELETED
@@ -1,7 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import react from '@vitejs/plugin-react'
3
-
4
- // https://vite.dev/config/
5
- export default defineConfig({
6
- plugins: [react()],
7
- })