Commit
·
b71de78
1
Parent(s):
d820927
fix: remove binary files and add .gitignore
Browse files- .gitignore +8 -0
- __pycache__/llm.cpython-311.pyc +0 -0
- __pycache__/memory.cpython-311.pyc +0 -0
- frontend/package-lock.json +1256 -86
- frontend/package.json +1 -0
- frontend/src/App.jsx +8 -2
- frontend/src/components/ChatInterface.jsx +58 -18
- frontend/src/index.css +67 -4
- frontend/vite.config.js +5 -0
- llm.py +21 -62
.gitignore
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
chroma_db/
|
| 2 |
+
session_memory.db
|
| 3 |
+
__pycache__/
|
| 4 |
+
.env
|
| 5 |
+
*.pyc
|
| 6 |
+
.DS_Store
|
| 7 |
+
frontend/node_modules/
|
| 8 |
+
frontend/dist/
|
__pycache__/llm.cpython-311.pyc
DELETED
|
Binary file (5.45 kB)
|
|
|
__pycache__/memory.cpython-311.pyc
DELETED
|
Binary file (5.84 kB)
|
|
|
frontend/package-lock.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
| 11 |
"lucide-react": "^0.562.0",
|
| 12 |
"react": "^19.2.0",
|
| 13 |
"react-dom": "^19.2.0",
|
|
|
|
| 14 |
"uuid": "^13.0.0"
|
| 15 |
},
|
| 16 |
"devDependencies": {
|
|
@@ -1410,13 +1411,39 @@
|
|
| 1410 |
"@babel/types": "^7.28.2"
|
| 1411 |
}
|
| 1412 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1413 |
"node_modules/@types/estree": {
|
| 1414 |
"version": "1.0.8",
|
| 1415 |
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
| 1416 |
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
|
| 1417 |
-
"dev": true,
|
| 1418 |
"license": "MIT"
|
| 1419 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1420 |
"node_modules/@types/json-schema": {
|
| 1421 |
"version": "7.0.15",
|
| 1422 |
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
|
@@ -1424,11 +1451,25 @@
|
|
| 1424 |
"dev": true,
|
| 1425 |
"license": "MIT"
|
| 1426 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1427 |
"node_modules/@types/react": {
|
| 1428 |
"version": "19.2.7",
|
| 1429 |
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
|
| 1430 |
"integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
|
| 1431 |
-
"dev": true,
|
| 1432 |
"license": "MIT",
|
| 1433 |
"dependencies": {
|
| 1434 |
"csstype": "^3.2.2"
|
|
@@ -1444,6 +1485,18 @@
|
|
| 1444 |
"@types/react": "^19.2.0"
|
| 1445 |
}
|
| 1446 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1447 |
"node_modules/@vitejs/plugin-react": {
|
| 1448 |
"version": "5.1.2",
|
| 1449 |
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz",
|
|
@@ -1528,6 +1581,16 @@
|
|
| 1528 |
"dev": true,
|
| 1529 |
"license": "Python-2.0"
|
| 1530 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1531 |
"node_modules/balanced-match": {
|
| 1532 |
"version": "1.0.2",
|
| 1533 |
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
@@ -1621,6 +1684,16 @@
|
|
| 1621 |
],
|
| 1622 |
"license": "CC-BY-4.0"
|
| 1623 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1624 |
"node_modules/chalk": {
|
| 1625 |
"version": "4.1.2",
|
| 1626 |
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
|
@@ -1638,6 +1711,46 @@
|
|
| 1638 |
"url": "https://github.com/chalk/chalk?sponsor=1"
|
| 1639 |
}
|
| 1640 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1641 |
"node_modules/color-convert": {
|
| 1642 |
"version": "2.0.1",
|
| 1643 |
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
@@ -1658,6 +1771,16 @@
|
|
| 1658 |
"dev": true,
|
| 1659 |
"license": "MIT"
|
| 1660 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1661 |
"node_modules/concat-map": {
|
| 1662 |
"version": "0.0.1",
|
| 1663 |
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
|
@@ -1691,14 +1814,12 @@
|
|
| 1691 |
"version": "3.2.3",
|
| 1692 |
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
| 1693 |
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
| 1694 |
-
"dev": true,
|
| 1695 |
"license": "MIT"
|
| 1696 |
},
|
| 1697 |
"node_modules/debug": {
|
| 1698 |
"version": "4.4.3",
|
| 1699 |
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
| 1700 |
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
| 1701 |
-
"dev": true,
|
| 1702 |
"license": "MIT",
|
| 1703 |
"dependencies": {
|
| 1704 |
"ms": "^2.1.3"
|
|
@@ -1712,6 +1833,19 @@
|
|
| 1712 |
}
|
| 1713 |
}
|
| 1714 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1715 |
"node_modules/deep-is": {
|
| 1716 |
"version": "0.1.4",
|
| 1717 |
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
|
|
@@ -1719,6 +1853,28 @@
|
|
| 1719 |
"dev": true,
|
| 1720 |
"license": "MIT"
|
| 1721 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1722 |
"node_modules/electron-to-chromium": {
|
| 1723 |
"version": "1.5.267",
|
| 1724 |
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
|
|
@@ -1965,6 +2121,16 @@
|
|
| 1965 |
"node": ">=4.0"
|
| 1966 |
}
|
| 1967 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1968 |
"node_modules/esutils": {
|
| 1969 |
"version": "2.0.3",
|
| 1970 |
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
|
@@ -1975,6 +2141,12 @@
|
|
| 1975 |
"node": ">=0.10.0"
|
| 1976 |
}
|
| 1977 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1978 |
"node_modules/fast-deep-equal": {
|
| 1979 |
"version": "3.1.3",
|
| 1980 |
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
@@ -2126,6 +2298,46 @@
|
|
| 2126 |
"node": ">=8"
|
| 2127 |
}
|
| 2128 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2129 |
"node_modules/hermes-estree": {
|
| 2130 |
"version": "0.25.1",
|
| 2131 |
"resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
|
|
@@ -2143,6 +2355,16 @@
|
|
| 2143 |
"hermes-estree": "0.25.1"
|
| 2144 |
}
|
| 2145 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2146 |
"node_modules/ignore": {
|
| 2147 |
"version": "5.3.2",
|
| 2148 |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
|
|
@@ -2180,6 +2402,46 @@
|
|
| 2180 |
"node": ">=0.8.19"
|
| 2181 |
}
|
| 2182 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2183 |
"node_modules/is-extglob": {
|
| 2184 |
"version": "2.1.1",
|
| 2185 |
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
|
@@ -2203,6 +2465,28 @@
|
|
| 2203 |
"node": ">=0.10.0"
|
| 2204 |
}
|
| 2205 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2206 |
"node_modules/isexe": {
|
| 2207 |
"version": "2.0.0",
|
| 2208 |
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
|
@@ -2324,6 +2608,16 @@
|
|
| 2324 |
"dev": true,
|
| 2325 |
"license": "MIT"
|
| 2326 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2327 |
"node_modules/lru-cache": {
|
| 2328 |
"version": "5.1.1",
|
| 2329 |
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
|
@@ -2343,113 +2637,707 @@
|
|
| 2343 |
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
| 2344 |
}
|
| 2345 |
},
|
| 2346 |
-
"node_modules/
|
| 2347 |
-
"version": "
|
| 2348 |
-
"resolved": "https://registry.npmjs.org/
|
| 2349 |
-
"integrity": "sha512-
|
| 2350 |
-
"
|
| 2351 |
-
"license": "ISC",
|
| 2352 |
"dependencies": {
|
| 2353 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2354 |
},
|
| 2355 |
-
"
|
| 2356 |
-
"
|
|
|
|
| 2357 |
}
|
| 2358 |
},
|
| 2359 |
-
"node_modules/
|
| 2360 |
-
"version": "2.1
|
| 2361 |
-
"resolved": "https://registry.npmjs.org/
|
| 2362 |
-
"integrity": "sha512-
|
| 2363 |
-
"dev": true,
|
| 2364 |
-
"license": "MIT"
|
| 2365 |
-
},
|
| 2366 |
-
"node_modules/nanoid": {
|
| 2367 |
-
"version": "3.3.11",
|
| 2368 |
-
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
| 2369 |
-
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
| 2370 |
-
"dev": true,
|
| 2371 |
-
"funding": [
|
| 2372 |
-
{
|
| 2373 |
-
"type": "github",
|
| 2374 |
-
"url": "https://github.com/sponsors/ai"
|
| 2375 |
-
}
|
| 2376 |
-
],
|
| 2377 |
"license": "MIT",
|
| 2378 |
-
"
|
| 2379 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2380 |
},
|
| 2381 |
-
"
|
| 2382 |
-
"
|
|
|
|
| 2383 |
}
|
| 2384 |
},
|
| 2385 |
-
"node_modules/
|
| 2386 |
-
"version": "
|
| 2387 |
-
"resolved": "https://registry.npmjs.org/
|
| 2388 |
-
"integrity": "sha512-
|
| 2389 |
-
"dev": true,
|
| 2390 |
-
"license": "MIT"
|
| 2391 |
-
},
|
| 2392 |
-
"node_modules/node-releases": {
|
| 2393 |
-
"version": "2.0.27",
|
| 2394 |
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
|
| 2395 |
-
"integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
|
| 2396 |
-
"dev": true,
|
| 2397 |
-
"license": "MIT"
|
| 2398 |
-
},
|
| 2399 |
-
"node_modules/optionator": {
|
| 2400 |
-
"version": "0.9.4",
|
| 2401 |
-
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
|
| 2402 |
-
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
|
| 2403 |
-
"dev": true,
|
| 2404 |
"license": "MIT",
|
| 2405 |
"dependencies": {
|
| 2406 |
-
"
|
| 2407 |
-
"
|
| 2408 |
-
"
|
| 2409 |
-
"
|
| 2410 |
-
"
|
| 2411 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2412 |
},
|
| 2413 |
-
"
|
| 2414 |
-
"
|
|
|
|
| 2415 |
}
|
| 2416 |
},
|
| 2417 |
-
"node_modules/
|
| 2418 |
-
"version": "
|
| 2419 |
-
"resolved": "https://registry.npmjs.org/
|
| 2420 |
-
"integrity": "sha512-
|
| 2421 |
-
"dev": true,
|
| 2422 |
"license": "MIT",
|
| 2423 |
"dependencies": {
|
| 2424 |
-
"
|
| 2425 |
-
|
| 2426 |
-
|
| 2427 |
-
"
|
|
|
|
|
|
|
| 2428 |
},
|
| 2429 |
"funding": {
|
| 2430 |
-
"
|
|
|
|
| 2431 |
}
|
| 2432 |
},
|
| 2433 |
-
"node_modules/
|
| 2434 |
-
"version": "
|
| 2435 |
-
"resolved": "https://registry.npmjs.org/
|
| 2436 |
-
"integrity": "sha512-
|
| 2437 |
-
"dev": true,
|
| 2438 |
"license": "MIT",
|
| 2439 |
"dependencies": {
|
| 2440 |
-
"
|
| 2441 |
-
|
| 2442 |
-
"engines": {
|
| 2443 |
-
"node": ">=10"
|
| 2444 |
},
|
| 2445 |
"funding": {
|
| 2446 |
-
"
|
|
|
|
| 2447 |
}
|
| 2448 |
},
|
| 2449 |
-
"node_modules/
|
| 2450 |
-
"version": "
|
| 2451 |
-
"resolved": "https://registry.npmjs.org/
|
| 2452 |
-
"integrity": "sha512-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2453 |
"dev": true,
|
| 2454 |
"license": "MIT",
|
| 2455 |
"dependencies": {
|
|
@@ -2459,6 +3347,31 @@
|
|
| 2459 |
"node": ">=6"
|
| 2460 |
}
|
| 2461 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2462 |
"node_modules/path-exists": {
|
| 2463 |
"version": "4.0.0",
|
| 2464 |
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
@@ -2538,6 +3451,16 @@
|
|
| 2538 |
"node": ">= 0.8.0"
|
| 2539 |
}
|
| 2540 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2541 |
"node_modules/punycode": {
|
| 2542 |
"version": "2.3.1",
|
| 2543 |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
|
@@ -2569,6 +3492,33 @@
|
|
| 2569 |
"react": "^19.2.3"
|
| 2570 |
}
|
| 2571 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2572 |
"node_modules/react-refresh": {
|
| 2573 |
"version": "0.18.0",
|
| 2574 |
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
|
|
@@ -2579,6 +3529,39 @@
|
|
| 2579 |
"node": ">=0.10.0"
|
| 2580 |
}
|
| 2581 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2582 |
"node_modules/resolve-from": {
|
| 2583 |
"version": "4.0.0",
|
| 2584 |
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
|
@@ -2683,6 +3666,30 @@
|
|
| 2683 |
"node": ">=0.10.0"
|
| 2684 |
}
|
| 2685 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2686 |
"node_modules/strip-json-comments": {
|
| 2687 |
"version": "3.1.1",
|
| 2688 |
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
|
|
@@ -2696,6 +3703,24 @@
|
|
| 2696 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 2697 |
}
|
| 2698 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2699 |
"node_modules/supports-color": {
|
| 2700 |
"version": "7.2.0",
|
| 2701 |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
|
@@ -2726,6 +3751,26 @@
|
|
| 2726 |
"url": "https://github.com/sponsors/SuperchupuDev"
|
| 2727 |
}
|
| 2728 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2729 |
"node_modules/type-check": {
|
| 2730 |
"version": "0.4.0",
|
| 2731 |
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
|
@@ -2739,6 +3784,93 @@
|
|
| 2739 |
"node": ">= 0.8.0"
|
| 2740 |
}
|
| 2741 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2742 |
"node_modules/update-browserslist-db": {
|
| 2743 |
"version": "1.2.3",
|
| 2744 |
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
|
@@ -2793,6 +3925,34 @@
|
|
| 2793 |
"uuid": "dist-node/bin/uuid"
|
| 2794 |
}
|
| 2795 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2796 |
"node_modules/vite": {
|
| 2797 |
"version": "7.3.1",
|
| 2798 |
"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
|
|
@@ -2936,6 +4096,16 @@
|
|
| 2936 |
"peerDependencies": {
|
| 2937 |
"zod": "^3.25.0 || ^4.0.0"
|
| 2938 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2939 |
}
|
| 2940 |
}
|
| 2941 |
}
|
|
|
|
| 11 |
"lucide-react": "^0.562.0",
|
| 12 |
"react": "^19.2.0",
|
| 13 |
"react-dom": "^19.2.0",
|
| 14 |
+
"react-markdown": "^10.1.0",
|
| 15 |
"uuid": "^13.0.0"
|
| 16 |
},
|
| 17 |
"devDependencies": {
|
|
|
|
| 1411 |
"@babel/types": "^7.28.2"
|
| 1412 |
}
|
| 1413 |
},
|
| 1414 |
+
"node_modules/@types/debug": {
|
| 1415 |
+
"version": "4.1.12",
|
| 1416 |
+
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
|
| 1417 |
+
"integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
|
| 1418 |
+
"license": "MIT",
|
| 1419 |
+
"dependencies": {
|
| 1420 |
+
"@types/ms": "*"
|
| 1421 |
+
}
|
| 1422 |
+
},
|
| 1423 |
"node_modules/@types/estree": {
|
| 1424 |
"version": "1.0.8",
|
| 1425 |
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
| 1426 |
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
|
|
|
|
| 1427 |
"license": "MIT"
|
| 1428 |
},
|
| 1429 |
+
"node_modules/@types/estree-jsx": {
|
| 1430 |
+
"version": "1.0.5",
|
| 1431 |
+
"resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
|
| 1432 |
+
"integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
|
| 1433 |
+
"license": "MIT",
|
| 1434 |
+
"dependencies": {
|
| 1435 |
+
"@types/estree": "*"
|
| 1436 |
+
}
|
| 1437 |
+
},
|
| 1438 |
+
"node_modules/@types/hast": {
|
| 1439 |
+
"version": "3.0.4",
|
| 1440 |
+
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
|
| 1441 |
+
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
|
| 1442 |
+
"license": "MIT",
|
| 1443 |
+
"dependencies": {
|
| 1444 |
+
"@types/unist": "*"
|
| 1445 |
+
}
|
| 1446 |
+
},
|
| 1447 |
"node_modules/@types/json-schema": {
|
| 1448 |
"version": "7.0.15",
|
| 1449 |
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
|
|
|
| 1451 |
"dev": true,
|
| 1452 |
"license": "MIT"
|
| 1453 |
},
|
| 1454 |
+
"node_modules/@types/mdast": {
|
| 1455 |
+
"version": "4.0.4",
|
| 1456 |
+
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
|
| 1457 |
+
"integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
|
| 1458 |
+
"license": "MIT",
|
| 1459 |
+
"dependencies": {
|
| 1460 |
+
"@types/unist": "*"
|
| 1461 |
+
}
|
| 1462 |
+
},
|
| 1463 |
+
"node_modules/@types/ms": {
|
| 1464 |
+
"version": "2.1.0",
|
| 1465 |
+
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
|
| 1466 |
+
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
|
| 1467 |
+
"license": "MIT"
|
| 1468 |
+
},
|
| 1469 |
"node_modules/@types/react": {
|
| 1470 |
"version": "19.2.7",
|
| 1471 |
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
|
| 1472 |
"integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
|
|
|
|
| 1473 |
"license": "MIT",
|
| 1474 |
"dependencies": {
|
| 1475 |
"csstype": "^3.2.2"
|
|
|
|
| 1485 |
"@types/react": "^19.2.0"
|
| 1486 |
}
|
| 1487 |
},
|
| 1488 |
+
"node_modules/@types/unist": {
|
| 1489 |
+
"version": "3.0.3",
|
| 1490 |
+
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
|
| 1491 |
+
"integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
|
| 1492 |
+
"license": "MIT"
|
| 1493 |
+
},
|
| 1494 |
+
"node_modules/@ungap/structured-clone": {
|
| 1495 |
+
"version": "1.3.0",
|
| 1496 |
+
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
|
| 1497 |
+
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
|
| 1498 |
+
"license": "ISC"
|
| 1499 |
+
},
|
| 1500 |
"node_modules/@vitejs/plugin-react": {
|
| 1501 |
"version": "5.1.2",
|
| 1502 |
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz",
|
|
|
|
| 1581 |
"dev": true,
|
| 1582 |
"license": "Python-2.0"
|
| 1583 |
},
|
| 1584 |
+
"node_modules/bail": {
|
| 1585 |
+
"version": "2.0.2",
|
| 1586 |
+
"resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
|
| 1587 |
+
"integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
|
| 1588 |
+
"license": "MIT",
|
| 1589 |
+
"funding": {
|
| 1590 |
+
"type": "github",
|
| 1591 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1592 |
+
}
|
| 1593 |
+
},
|
| 1594 |
"node_modules/balanced-match": {
|
| 1595 |
"version": "1.0.2",
|
| 1596 |
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
|
|
| 1684 |
],
|
| 1685 |
"license": "CC-BY-4.0"
|
| 1686 |
},
|
| 1687 |
+
"node_modules/ccount": {
|
| 1688 |
+
"version": "2.0.1",
|
| 1689 |
+
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
|
| 1690 |
+
"integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
|
| 1691 |
+
"license": "MIT",
|
| 1692 |
+
"funding": {
|
| 1693 |
+
"type": "github",
|
| 1694 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1695 |
+
}
|
| 1696 |
+
},
|
| 1697 |
"node_modules/chalk": {
|
| 1698 |
"version": "4.1.2",
|
| 1699 |
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
|
|
|
| 1711 |
"url": "https://github.com/chalk/chalk?sponsor=1"
|
| 1712 |
}
|
| 1713 |
},
|
| 1714 |
+
"node_modules/character-entities": {
|
| 1715 |
+
"version": "2.0.2",
|
| 1716 |
+
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
|
| 1717 |
+
"integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
|
| 1718 |
+
"license": "MIT",
|
| 1719 |
+
"funding": {
|
| 1720 |
+
"type": "github",
|
| 1721 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1722 |
+
}
|
| 1723 |
+
},
|
| 1724 |
+
"node_modules/character-entities-html4": {
|
| 1725 |
+
"version": "2.1.0",
|
| 1726 |
+
"resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
|
| 1727 |
+
"integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
|
| 1728 |
+
"license": "MIT",
|
| 1729 |
+
"funding": {
|
| 1730 |
+
"type": "github",
|
| 1731 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1732 |
+
}
|
| 1733 |
+
},
|
| 1734 |
+
"node_modules/character-entities-legacy": {
|
| 1735 |
+
"version": "3.0.0",
|
| 1736 |
+
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
|
| 1737 |
+
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
|
| 1738 |
+
"license": "MIT",
|
| 1739 |
+
"funding": {
|
| 1740 |
+
"type": "github",
|
| 1741 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1742 |
+
}
|
| 1743 |
+
},
|
| 1744 |
+
"node_modules/character-reference-invalid": {
|
| 1745 |
+
"version": "2.0.1",
|
| 1746 |
+
"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
|
| 1747 |
+
"integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
|
| 1748 |
+
"license": "MIT",
|
| 1749 |
+
"funding": {
|
| 1750 |
+
"type": "github",
|
| 1751 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1752 |
+
}
|
| 1753 |
+
},
|
| 1754 |
"node_modules/color-convert": {
|
| 1755 |
"version": "2.0.1",
|
| 1756 |
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
|
|
| 1771 |
"dev": true,
|
| 1772 |
"license": "MIT"
|
| 1773 |
},
|
| 1774 |
+
"node_modules/comma-separated-tokens": {
|
| 1775 |
+
"version": "2.0.3",
|
| 1776 |
+
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
|
| 1777 |
+
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
|
| 1778 |
+
"license": "MIT",
|
| 1779 |
+
"funding": {
|
| 1780 |
+
"type": "github",
|
| 1781 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1782 |
+
}
|
| 1783 |
+
},
|
| 1784 |
"node_modules/concat-map": {
|
| 1785 |
"version": "0.0.1",
|
| 1786 |
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
|
|
|
| 1814 |
"version": "3.2.3",
|
| 1815 |
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
| 1816 |
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
|
|
|
| 1817 |
"license": "MIT"
|
| 1818 |
},
|
| 1819 |
"node_modules/debug": {
|
| 1820 |
"version": "4.4.3",
|
| 1821 |
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
| 1822 |
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
|
|
|
| 1823 |
"license": "MIT",
|
| 1824 |
"dependencies": {
|
| 1825 |
"ms": "^2.1.3"
|
|
|
|
| 1833 |
}
|
| 1834 |
}
|
| 1835 |
},
|
| 1836 |
+
"node_modules/decode-named-character-reference": {
|
| 1837 |
+
"version": "1.2.0",
|
| 1838 |
+
"resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
|
| 1839 |
+
"integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
|
| 1840 |
+
"license": "MIT",
|
| 1841 |
+
"dependencies": {
|
| 1842 |
+
"character-entities": "^2.0.0"
|
| 1843 |
+
},
|
| 1844 |
+
"funding": {
|
| 1845 |
+
"type": "github",
|
| 1846 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1847 |
+
}
|
| 1848 |
+
},
|
| 1849 |
"node_modules/deep-is": {
|
| 1850 |
"version": "0.1.4",
|
| 1851 |
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
|
|
|
|
| 1853 |
"dev": true,
|
| 1854 |
"license": "MIT"
|
| 1855 |
},
|
| 1856 |
+
"node_modules/dequal": {
|
| 1857 |
+
"version": "2.0.3",
|
| 1858 |
+
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
| 1859 |
+
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
|
| 1860 |
+
"license": "MIT",
|
| 1861 |
+
"engines": {
|
| 1862 |
+
"node": ">=6"
|
| 1863 |
+
}
|
| 1864 |
+
},
|
| 1865 |
+
"node_modules/devlop": {
|
| 1866 |
+
"version": "1.1.0",
|
| 1867 |
+
"resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
|
| 1868 |
+
"integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
|
| 1869 |
+
"license": "MIT",
|
| 1870 |
+
"dependencies": {
|
| 1871 |
+
"dequal": "^2.0.0"
|
| 1872 |
+
},
|
| 1873 |
+
"funding": {
|
| 1874 |
+
"type": "github",
|
| 1875 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 1876 |
+
}
|
| 1877 |
+
},
|
| 1878 |
"node_modules/electron-to-chromium": {
|
| 1879 |
"version": "1.5.267",
|
| 1880 |
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
|
|
|
|
| 2121 |
"node": ">=4.0"
|
| 2122 |
}
|
| 2123 |
},
|
| 2124 |
+
"node_modules/estree-util-is-identifier-name": {
|
| 2125 |
+
"version": "3.0.0",
|
| 2126 |
+
"resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
|
| 2127 |
+
"integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
|
| 2128 |
+
"license": "MIT",
|
| 2129 |
+
"funding": {
|
| 2130 |
+
"type": "opencollective",
|
| 2131 |
+
"url": "https://opencollective.com/unified"
|
| 2132 |
+
}
|
| 2133 |
+
},
|
| 2134 |
"node_modules/esutils": {
|
| 2135 |
"version": "2.0.3",
|
| 2136 |
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
|
|
|
| 2141 |
"node": ">=0.10.0"
|
| 2142 |
}
|
| 2143 |
},
|
| 2144 |
+
"node_modules/extend": {
|
| 2145 |
+
"version": "3.0.2",
|
| 2146 |
+
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
| 2147 |
+
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
|
| 2148 |
+
"license": "MIT"
|
| 2149 |
+
},
|
| 2150 |
"node_modules/fast-deep-equal": {
|
| 2151 |
"version": "3.1.3",
|
| 2152 |
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
|
|
| 2298 |
"node": ">=8"
|
| 2299 |
}
|
| 2300 |
},
|
| 2301 |
+
"node_modules/hast-util-to-jsx-runtime": {
|
| 2302 |
+
"version": "2.3.6",
|
| 2303 |
+
"resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
|
| 2304 |
+
"integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
|
| 2305 |
+
"license": "MIT",
|
| 2306 |
+
"dependencies": {
|
| 2307 |
+
"@types/estree": "^1.0.0",
|
| 2308 |
+
"@types/hast": "^3.0.0",
|
| 2309 |
+
"@types/unist": "^3.0.0",
|
| 2310 |
+
"comma-separated-tokens": "^2.0.0",
|
| 2311 |
+
"devlop": "^1.0.0",
|
| 2312 |
+
"estree-util-is-identifier-name": "^3.0.0",
|
| 2313 |
+
"hast-util-whitespace": "^3.0.0",
|
| 2314 |
+
"mdast-util-mdx-expression": "^2.0.0",
|
| 2315 |
+
"mdast-util-mdx-jsx": "^3.0.0",
|
| 2316 |
+
"mdast-util-mdxjs-esm": "^2.0.0",
|
| 2317 |
+
"property-information": "^7.0.0",
|
| 2318 |
+
"space-separated-tokens": "^2.0.0",
|
| 2319 |
+
"style-to-js": "^1.0.0",
|
| 2320 |
+
"unist-util-position": "^5.0.0",
|
| 2321 |
+
"vfile-message": "^4.0.0"
|
| 2322 |
+
},
|
| 2323 |
+
"funding": {
|
| 2324 |
+
"type": "opencollective",
|
| 2325 |
+
"url": "https://opencollective.com/unified"
|
| 2326 |
+
}
|
| 2327 |
+
},
|
| 2328 |
+
"node_modules/hast-util-whitespace": {
|
| 2329 |
+
"version": "3.0.0",
|
| 2330 |
+
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
|
| 2331 |
+
"integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
|
| 2332 |
+
"license": "MIT",
|
| 2333 |
+
"dependencies": {
|
| 2334 |
+
"@types/hast": "^3.0.0"
|
| 2335 |
+
},
|
| 2336 |
+
"funding": {
|
| 2337 |
+
"type": "opencollective",
|
| 2338 |
+
"url": "https://opencollective.com/unified"
|
| 2339 |
+
}
|
| 2340 |
+
},
|
| 2341 |
"node_modules/hermes-estree": {
|
| 2342 |
"version": "0.25.1",
|
| 2343 |
"resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
|
|
|
|
| 2355 |
"hermes-estree": "0.25.1"
|
| 2356 |
}
|
| 2357 |
},
|
| 2358 |
+
"node_modules/html-url-attributes": {
|
| 2359 |
+
"version": "3.0.1",
|
| 2360 |
+
"resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
|
| 2361 |
+
"integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
|
| 2362 |
+
"license": "MIT",
|
| 2363 |
+
"funding": {
|
| 2364 |
+
"type": "opencollective",
|
| 2365 |
+
"url": "https://opencollective.com/unified"
|
| 2366 |
+
}
|
| 2367 |
+
},
|
| 2368 |
"node_modules/ignore": {
|
| 2369 |
"version": "5.3.2",
|
| 2370 |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
|
|
|
|
| 2402 |
"node": ">=0.8.19"
|
| 2403 |
}
|
| 2404 |
},
|
| 2405 |
+
"node_modules/inline-style-parser": {
|
| 2406 |
+
"version": "0.2.7",
|
| 2407 |
+
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
|
| 2408 |
+
"integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
|
| 2409 |
+
"license": "MIT"
|
| 2410 |
+
},
|
| 2411 |
+
"node_modules/is-alphabetical": {
|
| 2412 |
+
"version": "2.0.1",
|
| 2413 |
+
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
|
| 2414 |
+
"integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
|
| 2415 |
+
"license": "MIT",
|
| 2416 |
+
"funding": {
|
| 2417 |
+
"type": "github",
|
| 2418 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 2419 |
+
}
|
| 2420 |
+
},
|
| 2421 |
+
"node_modules/is-alphanumerical": {
|
| 2422 |
+
"version": "2.0.1",
|
| 2423 |
+
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
|
| 2424 |
+
"integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
|
| 2425 |
+
"license": "MIT",
|
| 2426 |
+
"dependencies": {
|
| 2427 |
+
"is-alphabetical": "^2.0.0",
|
| 2428 |
+
"is-decimal": "^2.0.0"
|
| 2429 |
+
},
|
| 2430 |
+
"funding": {
|
| 2431 |
+
"type": "github",
|
| 2432 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 2433 |
+
}
|
| 2434 |
+
},
|
| 2435 |
+
"node_modules/is-decimal": {
|
| 2436 |
+
"version": "2.0.1",
|
| 2437 |
+
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
|
| 2438 |
+
"integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
|
| 2439 |
+
"license": "MIT",
|
| 2440 |
+
"funding": {
|
| 2441 |
+
"type": "github",
|
| 2442 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 2443 |
+
}
|
| 2444 |
+
},
|
| 2445 |
"node_modules/is-extglob": {
|
| 2446 |
"version": "2.1.1",
|
| 2447 |
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
|
|
|
| 2465 |
"node": ">=0.10.0"
|
| 2466 |
}
|
| 2467 |
},
|
| 2468 |
+
"node_modules/is-hexadecimal": {
|
| 2469 |
+
"version": "2.0.1",
|
| 2470 |
+
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
|
| 2471 |
+
"integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
|
| 2472 |
+
"license": "MIT",
|
| 2473 |
+
"funding": {
|
| 2474 |
+
"type": "github",
|
| 2475 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 2476 |
+
}
|
| 2477 |
+
},
|
| 2478 |
+
"node_modules/is-plain-obj": {
|
| 2479 |
+
"version": "4.1.0",
|
| 2480 |
+
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
|
| 2481 |
+
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
|
| 2482 |
+
"license": "MIT",
|
| 2483 |
+
"engines": {
|
| 2484 |
+
"node": ">=12"
|
| 2485 |
+
},
|
| 2486 |
+
"funding": {
|
| 2487 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 2488 |
+
}
|
| 2489 |
+
},
|
| 2490 |
"node_modules/isexe": {
|
| 2491 |
"version": "2.0.0",
|
| 2492 |
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
|
|
|
| 2608 |
"dev": true,
|
| 2609 |
"license": "MIT"
|
| 2610 |
},
|
| 2611 |
+
"node_modules/longest-streak": {
|
| 2612 |
+
"version": "3.1.0",
|
| 2613 |
+
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
|
| 2614 |
+
"integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
|
| 2615 |
+
"license": "MIT",
|
| 2616 |
+
"funding": {
|
| 2617 |
+
"type": "github",
|
| 2618 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 2619 |
+
}
|
| 2620 |
+
},
|
| 2621 |
"node_modules/lru-cache": {
|
| 2622 |
"version": "5.1.1",
|
| 2623 |
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
|
|
|
| 2637 |
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
| 2638 |
}
|
| 2639 |
},
|
| 2640 |
+
"node_modules/mdast-util-from-markdown": {
|
| 2641 |
+
"version": "2.0.2",
|
| 2642 |
+
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
|
| 2643 |
+
"integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
|
| 2644 |
+
"license": "MIT",
|
|
|
|
| 2645 |
"dependencies": {
|
| 2646 |
+
"@types/mdast": "^4.0.0",
|
| 2647 |
+
"@types/unist": "^3.0.0",
|
| 2648 |
+
"decode-named-character-reference": "^1.0.0",
|
| 2649 |
+
"devlop": "^1.0.0",
|
| 2650 |
+
"mdast-util-to-string": "^4.0.0",
|
| 2651 |
+
"micromark": "^4.0.0",
|
| 2652 |
+
"micromark-util-decode-numeric-character-reference": "^2.0.0",
|
| 2653 |
+
"micromark-util-decode-string": "^2.0.0",
|
| 2654 |
+
"micromark-util-normalize-identifier": "^2.0.0",
|
| 2655 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2656 |
+
"micromark-util-types": "^2.0.0",
|
| 2657 |
+
"unist-util-stringify-position": "^4.0.0"
|
| 2658 |
},
|
| 2659 |
+
"funding": {
|
| 2660 |
+
"type": "opencollective",
|
| 2661 |
+
"url": "https://opencollective.com/unified"
|
| 2662 |
}
|
| 2663 |
},
|
| 2664 |
+
"node_modules/mdast-util-mdx-expression": {
|
| 2665 |
+
"version": "2.0.1",
|
| 2666 |
+
"resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
|
| 2667 |
+
"integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2668 |
"license": "MIT",
|
| 2669 |
+
"dependencies": {
|
| 2670 |
+
"@types/estree-jsx": "^1.0.0",
|
| 2671 |
+
"@types/hast": "^3.0.0",
|
| 2672 |
+
"@types/mdast": "^4.0.0",
|
| 2673 |
+
"devlop": "^1.0.0",
|
| 2674 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 2675 |
+
"mdast-util-to-markdown": "^2.0.0"
|
| 2676 |
},
|
| 2677 |
+
"funding": {
|
| 2678 |
+
"type": "opencollective",
|
| 2679 |
+
"url": "https://opencollective.com/unified"
|
| 2680 |
}
|
| 2681 |
},
|
| 2682 |
+
"node_modules/mdast-util-mdx-jsx": {
|
| 2683 |
+
"version": "3.2.0",
|
| 2684 |
+
"resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
|
| 2685 |
+
"integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2686 |
"license": "MIT",
|
| 2687 |
"dependencies": {
|
| 2688 |
+
"@types/estree-jsx": "^1.0.0",
|
| 2689 |
+
"@types/hast": "^3.0.0",
|
| 2690 |
+
"@types/mdast": "^4.0.0",
|
| 2691 |
+
"@types/unist": "^3.0.0",
|
| 2692 |
+
"ccount": "^2.0.0",
|
| 2693 |
+
"devlop": "^1.1.0",
|
| 2694 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 2695 |
+
"mdast-util-to-markdown": "^2.0.0",
|
| 2696 |
+
"parse-entities": "^4.0.0",
|
| 2697 |
+
"stringify-entities": "^4.0.0",
|
| 2698 |
+
"unist-util-stringify-position": "^4.0.0",
|
| 2699 |
+
"vfile-message": "^4.0.0"
|
| 2700 |
},
|
| 2701 |
+
"funding": {
|
| 2702 |
+
"type": "opencollective",
|
| 2703 |
+
"url": "https://opencollective.com/unified"
|
| 2704 |
}
|
| 2705 |
},
|
| 2706 |
+
"node_modules/mdast-util-mdxjs-esm": {
|
| 2707 |
+
"version": "2.0.1",
|
| 2708 |
+
"resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
|
| 2709 |
+
"integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
|
|
|
|
| 2710 |
"license": "MIT",
|
| 2711 |
"dependencies": {
|
| 2712 |
+
"@types/estree-jsx": "^1.0.0",
|
| 2713 |
+
"@types/hast": "^3.0.0",
|
| 2714 |
+
"@types/mdast": "^4.0.0",
|
| 2715 |
+
"devlop": "^1.0.0",
|
| 2716 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 2717 |
+
"mdast-util-to-markdown": "^2.0.0"
|
| 2718 |
},
|
| 2719 |
"funding": {
|
| 2720 |
+
"type": "opencollective",
|
| 2721 |
+
"url": "https://opencollective.com/unified"
|
| 2722 |
}
|
| 2723 |
},
|
| 2724 |
+
"node_modules/mdast-util-phrasing": {
|
| 2725 |
+
"version": "4.1.0",
|
| 2726 |
+
"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
|
| 2727 |
+
"integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
|
|
|
|
| 2728 |
"license": "MIT",
|
| 2729 |
"dependencies": {
|
| 2730 |
+
"@types/mdast": "^4.0.0",
|
| 2731 |
+
"unist-util-is": "^6.0.0"
|
|
|
|
|
|
|
| 2732 |
},
|
| 2733 |
"funding": {
|
| 2734 |
+
"type": "opencollective",
|
| 2735 |
+
"url": "https://opencollective.com/unified"
|
| 2736 |
}
|
| 2737 |
},
|
| 2738 |
+
"node_modules/mdast-util-to-hast": {
|
| 2739 |
+
"version": "13.2.1",
|
| 2740 |
+
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
|
| 2741 |
+
"integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
|
| 2742 |
+
"license": "MIT",
|
| 2743 |
+
"dependencies": {
|
| 2744 |
+
"@types/hast": "^3.0.0",
|
| 2745 |
+
"@types/mdast": "^4.0.0",
|
| 2746 |
+
"@ungap/structured-clone": "^1.0.0",
|
| 2747 |
+
"devlop": "^1.0.0",
|
| 2748 |
+
"micromark-util-sanitize-uri": "^2.0.0",
|
| 2749 |
+
"trim-lines": "^3.0.0",
|
| 2750 |
+
"unist-util-position": "^5.0.0",
|
| 2751 |
+
"unist-util-visit": "^5.0.0",
|
| 2752 |
+
"vfile": "^6.0.0"
|
| 2753 |
+
},
|
| 2754 |
+
"funding": {
|
| 2755 |
+
"type": "opencollective",
|
| 2756 |
+
"url": "https://opencollective.com/unified"
|
| 2757 |
+
}
|
| 2758 |
+
},
|
| 2759 |
+
"node_modules/mdast-util-to-markdown": {
|
| 2760 |
+
"version": "2.1.2",
|
| 2761 |
+
"resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
|
| 2762 |
+
"integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
|
| 2763 |
+
"license": "MIT",
|
| 2764 |
+
"dependencies": {
|
| 2765 |
+
"@types/mdast": "^4.0.0",
|
| 2766 |
+
"@types/unist": "^3.0.0",
|
| 2767 |
+
"longest-streak": "^3.0.0",
|
| 2768 |
+
"mdast-util-phrasing": "^4.0.0",
|
| 2769 |
+
"mdast-util-to-string": "^4.0.0",
|
| 2770 |
+
"micromark-util-classify-character": "^2.0.0",
|
| 2771 |
+
"micromark-util-decode-string": "^2.0.0",
|
| 2772 |
+
"unist-util-visit": "^5.0.0",
|
| 2773 |
+
"zwitch": "^2.0.0"
|
| 2774 |
+
},
|
| 2775 |
+
"funding": {
|
| 2776 |
+
"type": "opencollective",
|
| 2777 |
+
"url": "https://opencollective.com/unified"
|
| 2778 |
+
}
|
| 2779 |
+
},
|
| 2780 |
+
"node_modules/mdast-util-to-string": {
|
| 2781 |
+
"version": "4.0.0",
|
| 2782 |
+
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
|
| 2783 |
+
"integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
|
| 2784 |
+
"license": "MIT",
|
| 2785 |
+
"dependencies": {
|
| 2786 |
+
"@types/mdast": "^4.0.0"
|
| 2787 |
+
},
|
| 2788 |
+
"funding": {
|
| 2789 |
+
"type": "opencollective",
|
| 2790 |
+
"url": "https://opencollective.com/unified"
|
| 2791 |
+
}
|
| 2792 |
+
},
|
| 2793 |
+
"node_modules/micromark": {
|
| 2794 |
+
"version": "4.0.2",
|
| 2795 |
+
"resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
|
| 2796 |
+
"integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
|
| 2797 |
+
"funding": [
|
| 2798 |
+
{
|
| 2799 |
+
"type": "GitHub Sponsors",
|
| 2800 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2801 |
+
},
|
| 2802 |
+
{
|
| 2803 |
+
"type": "OpenCollective",
|
| 2804 |
+
"url": "https://opencollective.com/unified"
|
| 2805 |
+
}
|
| 2806 |
+
],
|
| 2807 |
+
"license": "MIT",
|
| 2808 |
+
"dependencies": {
|
| 2809 |
+
"@types/debug": "^4.0.0",
|
| 2810 |
+
"debug": "^4.0.0",
|
| 2811 |
+
"decode-named-character-reference": "^1.0.0",
|
| 2812 |
+
"devlop": "^1.0.0",
|
| 2813 |
+
"micromark-core-commonmark": "^2.0.0",
|
| 2814 |
+
"micromark-factory-space": "^2.0.0",
|
| 2815 |
+
"micromark-util-character": "^2.0.0",
|
| 2816 |
+
"micromark-util-chunked": "^2.0.0",
|
| 2817 |
+
"micromark-util-combine-extensions": "^2.0.0",
|
| 2818 |
+
"micromark-util-decode-numeric-character-reference": "^2.0.0",
|
| 2819 |
+
"micromark-util-encode": "^2.0.0",
|
| 2820 |
+
"micromark-util-normalize-identifier": "^2.0.0",
|
| 2821 |
+
"micromark-util-resolve-all": "^2.0.0",
|
| 2822 |
+
"micromark-util-sanitize-uri": "^2.0.0",
|
| 2823 |
+
"micromark-util-subtokenize": "^2.0.0",
|
| 2824 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2825 |
+
"micromark-util-types": "^2.0.0"
|
| 2826 |
+
}
|
| 2827 |
+
},
|
| 2828 |
+
"node_modules/micromark-core-commonmark": {
|
| 2829 |
+
"version": "2.0.3",
|
| 2830 |
+
"resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
|
| 2831 |
+
"integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
|
| 2832 |
+
"funding": [
|
| 2833 |
+
{
|
| 2834 |
+
"type": "GitHub Sponsors",
|
| 2835 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2836 |
+
},
|
| 2837 |
+
{
|
| 2838 |
+
"type": "OpenCollective",
|
| 2839 |
+
"url": "https://opencollective.com/unified"
|
| 2840 |
+
}
|
| 2841 |
+
],
|
| 2842 |
+
"license": "MIT",
|
| 2843 |
+
"dependencies": {
|
| 2844 |
+
"decode-named-character-reference": "^1.0.0",
|
| 2845 |
+
"devlop": "^1.0.0",
|
| 2846 |
+
"micromark-factory-destination": "^2.0.0",
|
| 2847 |
+
"micromark-factory-label": "^2.0.0",
|
| 2848 |
+
"micromark-factory-space": "^2.0.0",
|
| 2849 |
+
"micromark-factory-title": "^2.0.0",
|
| 2850 |
+
"micromark-factory-whitespace": "^2.0.0",
|
| 2851 |
+
"micromark-util-character": "^2.0.0",
|
| 2852 |
+
"micromark-util-chunked": "^2.0.0",
|
| 2853 |
+
"micromark-util-classify-character": "^2.0.0",
|
| 2854 |
+
"micromark-util-html-tag-name": "^2.0.0",
|
| 2855 |
+
"micromark-util-normalize-identifier": "^2.0.0",
|
| 2856 |
+
"micromark-util-resolve-all": "^2.0.0",
|
| 2857 |
+
"micromark-util-subtokenize": "^2.0.0",
|
| 2858 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2859 |
+
"micromark-util-types": "^2.0.0"
|
| 2860 |
+
}
|
| 2861 |
+
},
|
| 2862 |
+
"node_modules/micromark-factory-destination": {
|
| 2863 |
+
"version": "2.0.1",
|
| 2864 |
+
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
|
| 2865 |
+
"integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
|
| 2866 |
+
"funding": [
|
| 2867 |
+
{
|
| 2868 |
+
"type": "GitHub Sponsors",
|
| 2869 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2870 |
+
},
|
| 2871 |
+
{
|
| 2872 |
+
"type": "OpenCollective",
|
| 2873 |
+
"url": "https://opencollective.com/unified"
|
| 2874 |
+
}
|
| 2875 |
+
],
|
| 2876 |
+
"license": "MIT",
|
| 2877 |
+
"dependencies": {
|
| 2878 |
+
"micromark-util-character": "^2.0.0",
|
| 2879 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2880 |
+
"micromark-util-types": "^2.0.0"
|
| 2881 |
+
}
|
| 2882 |
+
},
|
| 2883 |
+
"node_modules/micromark-factory-label": {
|
| 2884 |
+
"version": "2.0.1",
|
| 2885 |
+
"resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
|
| 2886 |
+
"integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
|
| 2887 |
+
"funding": [
|
| 2888 |
+
{
|
| 2889 |
+
"type": "GitHub Sponsors",
|
| 2890 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2891 |
+
},
|
| 2892 |
+
{
|
| 2893 |
+
"type": "OpenCollective",
|
| 2894 |
+
"url": "https://opencollective.com/unified"
|
| 2895 |
+
}
|
| 2896 |
+
],
|
| 2897 |
+
"license": "MIT",
|
| 2898 |
+
"dependencies": {
|
| 2899 |
+
"devlop": "^1.0.0",
|
| 2900 |
+
"micromark-util-character": "^2.0.0",
|
| 2901 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2902 |
+
"micromark-util-types": "^2.0.0"
|
| 2903 |
+
}
|
| 2904 |
+
},
|
| 2905 |
+
"node_modules/micromark-factory-space": {
|
| 2906 |
+
"version": "2.0.1",
|
| 2907 |
+
"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
|
| 2908 |
+
"integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
|
| 2909 |
+
"funding": [
|
| 2910 |
+
{
|
| 2911 |
+
"type": "GitHub Sponsors",
|
| 2912 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2913 |
+
},
|
| 2914 |
+
{
|
| 2915 |
+
"type": "OpenCollective",
|
| 2916 |
+
"url": "https://opencollective.com/unified"
|
| 2917 |
+
}
|
| 2918 |
+
],
|
| 2919 |
+
"license": "MIT",
|
| 2920 |
+
"dependencies": {
|
| 2921 |
+
"micromark-util-character": "^2.0.0",
|
| 2922 |
+
"micromark-util-types": "^2.0.0"
|
| 2923 |
+
}
|
| 2924 |
+
},
|
| 2925 |
+
"node_modules/micromark-factory-title": {
|
| 2926 |
+
"version": "2.0.1",
|
| 2927 |
+
"resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
|
| 2928 |
+
"integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
|
| 2929 |
+
"funding": [
|
| 2930 |
+
{
|
| 2931 |
+
"type": "GitHub Sponsors",
|
| 2932 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2933 |
+
},
|
| 2934 |
+
{
|
| 2935 |
+
"type": "OpenCollective",
|
| 2936 |
+
"url": "https://opencollective.com/unified"
|
| 2937 |
+
}
|
| 2938 |
+
],
|
| 2939 |
+
"license": "MIT",
|
| 2940 |
+
"dependencies": {
|
| 2941 |
+
"micromark-factory-space": "^2.0.0",
|
| 2942 |
+
"micromark-util-character": "^2.0.0",
|
| 2943 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2944 |
+
"micromark-util-types": "^2.0.0"
|
| 2945 |
+
}
|
| 2946 |
+
},
|
| 2947 |
+
"node_modules/micromark-factory-whitespace": {
|
| 2948 |
+
"version": "2.0.1",
|
| 2949 |
+
"resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
|
| 2950 |
+
"integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
|
| 2951 |
+
"funding": [
|
| 2952 |
+
{
|
| 2953 |
+
"type": "GitHub Sponsors",
|
| 2954 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2955 |
+
},
|
| 2956 |
+
{
|
| 2957 |
+
"type": "OpenCollective",
|
| 2958 |
+
"url": "https://opencollective.com/unified"
|
| 2959 |
+
}
|
| 2960 |
+
],
|
| 2961 |
+
"license": "MIT",
|
| 2962 |
+
"dependencies": {
|
| 2963 |
+
"micromark-factory-space": "^2.0.0",
|
| 2964 |
+
"micromark-util-character": "^2.0.0",
|
| 2965 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2966 |
+
"micromark-util-types": "^2.0.0"
|
| 2967 |
+
}
|
| 2968 |
+
},
|
| 2969 |
+
"node_modules/micromark-util-character": {
|
| 2970 |
+
"version": "2.1.1",
|
| 2971 |
+
"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
|
| 2972 |
+
"integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
|
| 2973 |
+
"funding": [
|
| 2974 |
+
{
|
| 2975 |
+
"type": "GitHub Sponsors",
|
| 2976 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2977 |
+
},
|
| 2978 |
+
{
|
| 2979 |
+
"type": "OpenCollective",
|
| 2980 |
+
"url": "https://opencollective.com/unified"
|
| 2981 |
+
}
|
| 2982 |
+
],
|
| 2983 |
+
"license": "MIT",
|
| 2984 |
+
"dependencies": {
|
| 2985 |
+
"micromark-util-symbol": "^2.0.0",
|
| 2986 |
+
"micromark-util-types": "^2.0.0"
|
| 2987 |
+
}
|
| 2988 |
+
},
|
| 2989 |
+
"node_modules/micromark-util-chunked": {
|
| 2990 |
+
"version": "2.0.1",
|
| 2991 |
+
"resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
|
| 2992 |
+
"integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
|
| 2993 |
+
"funding": [
|
| 2994 |
+
{
|
| 2995 |
+
"type": "GitHub Sponsors",
|
| 2996 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 2997 |
+
},
|
| 2998 |
+
{
|
| 2999 |
+
"type": "OpenCollective",
|
| 3000 |
+
"url": "https://opencollective.com/unified"
|
| 3001 |
+
}
|
| 3002 |
+
],
|
| 3003 |
+
"license": "MIT",
|
| 3004 |
+
"dependencies": {
|
| 3005 |
+
"micromark-util-symbol": "^2.0.0"
|
| 3006 |
+
}
|
| 3007 |
+
},
|
| 3008 |
+
"node_modules/micromark-util-classify-character": {
|
| 3009 |
+
"version": "2.0.1",
|
| 3010 |
+
"resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
|
| 3011 |
+
"integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
|
| 3012 |
+
"funding": [
|
| 3013 |
+
{
|
| 3014 |
+
"type": "GitHub Sponsors",
|
| 3015 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3016 |
+
},
|
| 3017 |
+
{
|
| 3018 |
+
"type": "OpenCollective",
|
| 3019 |
+
"url": "https://opencollective.com/unified"
|
| 3020 |
+
}
|
| 3021 |
+
],
|
| 3022 |
+
"license": "MIT",
|
| 3023 |
+
"dependencies": {
|
| 3024 |
+
"micromark-util-character": "^2.0.0",
|
| 3025 |
+
"micromark-util-symbol": "^2.0.0",
|
| 3026 |
+
"micromark-util-types": "^2.0.0"
|
| 3027 |
+
}
|
| 3028 |
+
},
|
| 3029 |
+
"node_modules/micromark-util-combine-extensions": {
|
| 3030 |
+
"version": "2.0.1",
|
| 3031 |
+
"resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
|
| 3032 |
+
"integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
|
| 3033 |
+
"funding": [
|
| 3034 |
+
{
|
| 3035 |
+
"type": "GitHub Sponsors",
|
| 3036 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3037 |
+
},
|
| 3038 |
+
{
|
| 3039 |
+
"type": "OpenCollective",
|
| 3040 |
+
"url": "https://opencollective.com/unified"
|
| 3041 |
+
}
|
| 3042 |
+
],
|
| 3043 |
+
"license": "MIT",
|
| 3044 |
+
"dependencies": {
|
| 3045 |
+
"micromark-util-chunked": "^2.0.0",
|
| 3046 |
+
"micromark-util-types": "^2.0.0"
|
| 3047 |
+
}
|
| 3048 |
+
},
|
| 3049 |
+
"node_modules/micromark-util-decode-numeric-character-reference": {
|
| 3050 |
+
"version": "2.0.2",
|
| 3051 |
+
"resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
|
| 3052 |
+
"integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
|
| 3053 |
+
"funding": [
|
| 3054 |
+
{
|
| 3055 |
+
"type": "GitHub Sponsors",
|
| 3056 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3057 |
+
},
|
| 3058 |
+
{
|
| 3059 |
+
"type": "OpenCollective",
|
| 3060 |
+
"url": "https://opencollective.com/unified"
|
| 3061 |
+
}
|
| 3062 |
+
],
|
| 3063 |
+
"license": "MIT",
|
| 3064 |
+
"dependencies": {
|
| 3065 |
+
"micromark-util-symbol": "^2.0.0"
|
| 3066 |
+
}
|
| 3067 |
+
},
|
| 3068 |
+
"node_modules/micromark-util-decode-string": {
|
| 3069 |
+
"version": "2.0.1",
|
| 3070 |
+
"resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
|
| 3071 |
+
"integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
|
| 3072 |
+
"funding": [
|
| 3073 |
+
{
|
| 3074 |
+
"type": "GitHub Sponsors",
|
| 3075 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3076 |
+
},
|
| 3077 |
+
{
|
| 3078 |
+
"type": "OpenCollective",
|
| 3079 |
+
"url": "https://opencollective.com/unified"
|
| 3080 |
+
}
|
| 3081 |
+
],
|
| 3082 |
+
"license": "MIT",
|
| 3083 |
+
"dependencies": {
|
| 3084 |
+
"decode-named-character-reference": "^1.0.0",
|
| 3085 |
+
"micromark-util-character": "^2.0.0",
|
| 3086 |
+
"micromark-util-decode-numeric-character-reference": "^2.0.0",
|
| 3087 |
+
"micromark-util-symbol": "^2.0.0"
|
| 3088 |
+
}
|
| 3089 |
+
},
|
| 3090 |
+
"node_modules/micromark-util-encode": {
|
| 3091 |
+
"version": "2.0.1",
|
| 3092 |
+
"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
|
| 3093 |
+
"integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
|
| 3094 |
+
"funding": [
|
| 3095 |
+
{
|
| 3096 |
+
"type": "GitHub Sponsors",
|
| 3097 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3098 |
+
},
|
| 3099 |
+
{
|
| 3100 |
+
"type": "OpenCollective",
|
| 3101 |
+
"url": "https://opencollective.com/unified"
|
| 3102 |
+
}
|
| 3103 |
+
],
|
| 3104 |
+
"license": "MIT"
|
| 3105 |
+
},
|
| 3106 |
+
"node_modules/micromark-util-html-tag-name": {
|
| 3107 |
+
"version": "2.0.1",
|
| 3108 |
+
"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
|
| 3109 |
+
"integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
|
| 3110 |
+
"funding": [
|
| 3111 |
+
{
|
| 3112 |
+
"type": "GitHub Sponsors",
|
| 3113 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3114 |
+
},
|
| 3115 |
+
{
|
| 3116 |
+
"type": "OpenCollective",
|
| 3117 |
+
"url": "https://opencollective.com/unified"
|
| 3118 |
+
}
|
| 3119 |
+
],
|
| 3120 |
+
"license": "MIT"
|
| 3121 |
+
},
|
| 3122 |
+
"node_modules/micromark-util-normalize-identifier": {
|
| 3123 |
+
"version": "2.0.1",
|
| 3124 |
+
"resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
|
| 3125 |
+
"integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
|
| 3126 |
+
"funding": [
|
| 3127 |
+
{
|
| 3128 |
+
"type": "GitHub Sponsors",
|
| 3129 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3130 |
+
},
|
| 3131 |
+
{
|
| 3132 |
+
"type": "OpenCollective",
|
| 3133 |
+
"url": "https://opencollective.com/unified"
|
| 3134 |
+
}
|
| 3135 |
+
],
|
| 3136 |
+
"license": "MIT",
|
| 3137 |
+
"dependencies": {
|
| 3138 |
+
"micromark-util-symbol": "^2.0.0"
|
| 3139 |
+
}
|
| 3140 |
+
},
|
| 3141 |
+
"node_modules/micromark-util-resolve-all": {
|
| 3142 |
+
"version": "2.0.1",
|
| 3143 |
+
"resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
|
| 3144 |
+
"integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
|
| 3145 |
+
"funding": [
|
| 3146 |
+
{
|
| 3147 |
+
"type": "GitHub Sponsors",
|
| 3148 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3149 |
+
},
|
| 3150 |
+
{
|
| 3151 |
+
"type": "OpenCollective",
|
| 3152 |
+
"url": "https://opencollective.com/unified"
|
| 3153 |
+
}
|
| 3154 |
+
],
|
| 3155 |
+
"license": "MIT",
|
| 3156 |
+
"dependencies": {
|
| 3157 |
+
"micromark-util-types": "^2.0.0"
|
| 3158 |
+
}
|
| 3159 |
+
},
|
| 3160 |
+
"node_modules/micromark-util-sanitize-uri": {
|
| 3161 |
+
"version": "2.0.1",
|
| 3162 |
+
"resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
|
| 3163 |
+
"integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
|
| 3164 |
+
"funding": [
|
| 3165 |
+
{
|
| 3166 |
+
"type": "GitHub Sponsors",
|
| 3167 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3168 |
+
},
|
| 3169 |
+
{
|
| 3170 |
+
"type": "OpenCollective",
|
| 3171 |
+
"url": "https://opencollective.com/unified"
|
| 3172 |
+
}
|
| 3173 |
+
],
|
| 3174 |
+
"license": "MIT",
|
| 3175 |
+
"dependencies": {
|
| 3176 |
+
"micromark-util-character": "^2.0.0",
|
| 3177 |
+
"micromark-util-encode": "^2.0.0",
|
| 3178 |
+
"micromark-util-symbol": "^2.0.0"
|
| 3179 |
+
}
|
| 3180 |
+
},
|
| 3181 |
+
"node_modules/micromark-util-subtokenize": {
|
| 3182 |
+
"version": "2.1.0",
|
| 3183 |
+
"resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
|
| 3184 |
+
"integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
|
| 3185 |
+
"funding": [
|
| 3186 |
+
{
|
| 3187 |
+
"type": "GitHub Sponsors",
|
| 3188 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3189 |
+
},
|
| 3190 |
+
{
|
| 3191 |
+
"type": "OpenCollective",
|
| 3192 |
+
"url": "https://opencollective.com/unified"
|
| 3193 |
+
}
|
| 3194 |
+
],
|
| 3195 |
+
"license": "MIT",
|
| 3196 |
+
"dependencies": {
|
| 3197 |
+
"devlop": "^1.0.0",
|
| 3198 |
+
"micromark-util-chunked": "^2.0.0",
|
| 3199 |
+
"micromark-util-symbol": "^2.0.0",
|
| 3200 |
+
"micromark-util-types": "^2.0.0"
|
| 3201 |
+
}
|
| 3202 |
+
},
|
| 3203 |
+
"node_modules/micromark-util-symbol": {
|
| 3204 |
+
"version": "2.0.1",
|
| 3205 |
+
"resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
|
| 3206 |
+
"integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
|
| 3207 |
+
"funding": [
|
| 3208 |
+
{
|
| 3209 |
+
"type": "GitHub Sponsors",
|
| 3210 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3211 |
+
},
|
| 3212 |
+
{
|
| 3213 |
+
"type": "OpenCollective",
|
| 3214 |
+
"url": "https://opencollective.com/unified"
|
| 3215 |
+
}
|
| 3216 |
+
],
|
| 3217 |
+
"license": "MIT"
|
| 3218 |
+
},
|
| 3219 |
+
"node_modules/micromark-util-types": {
|
| 3220 |
+
"version": "2.0.2",
|
| 3221 |
+
"resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
|
| 3222 |
+
"integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
|
| 3223 |
+
"funding": [
|
| 3224 |
+
{
|
| 3225 |
+
"type": "GitHub Sponsors",
|
| 3226 |
+
"url": "https://github.com/sponsors/unifiedjs"
|
| 3227 |
+
},
|
| 3228 |
+
{
|
| 3229 |
+
"type": "OpenCollective",
|
| 3230 |
+
"url": "https://opencollective.com/unified"
|
| 3231 |
+
}
|
| 3232 |
+
],
|
| 3233 |
+
"license": "MIT"
|
| 3234 |
+
},
|
| 3235 |
+
"node_modules/minimatch": {
|
| 3236 |
+
"version": "3.1.2",
|
| 3237 |
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
| 3238 |
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
| 3239 |
+
"dev": true,
|
| 3240 |
+
"license": "ISC",
|
| 3241 |
+
"dependencies": {
|
| 3242 |
+
"brace-expansion": "^1.1.7"
|
| 3243 |
+
},
|
| 3244 |
+
"engines": {
|
| 3245 |
+
"node": "*"
|
| 3246 |
+
}
|
| 3247 |
+
},
|
| 3248 |
+
"node_modules/ms": {
|
| 3249 |
+
"version": "2.1.3",
|
| 3250 |
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
| 3251 |
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
| 3252 |
+
"license": "MIT"
|
| 3253 |
+
},
|
| 3254 |
+
"node_modules/nanoid": {
|
| 3255 |
+
"version": "3.3.11",
|
| 3256 |
+
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
| 3257 |
+
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
| 3258 |
+
"dev": true,
|
| 3259 |
+
"funding": [
|
| 3260 |
+
{
|
| 3261 |
+
"type": "github",
|
| 3262 |
+
"url": "https://github.com/sponsors/ai"
|
| 3263 |
+
}
|
| 3264 |
+
],
|
| 3265 |
+
"license": "MIT",
|
| 3266 |
+
"bin": {
|
| 3267 |
+
"nanoid": "bin/nanoid.cjs"
|
| 3268 |
+
},
|
| 3269 |
+
"engines": {
|
| 3270 |
+
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
| 3271 |
+
}
|
| 3272 |
+
},
|
| 3273 |
+
"node_modules/natural-compare": {
|
| 3274 |
+
"version": "1.4.0",
|
| 3275 |
+
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
|
| 3276 |
+
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
|
| 3277 |
+
"dev": true,
|
| 3278 |
+
"license": "MIT"
|
| 3279 |
+
},
|
| 3280 |
+
"node_modules/node-releases": {
|
| 3281 |
+
"version": "2.0.27",
|
| 3282 |
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
|
| 3283 |
+
"integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
|
| 3284 |
+
"dev": true,
|
| 3285 |
+
"license": "MIT"
|
| 3286 |
+
},
|
| 3287 |
+
"node_modules/optionator": {
|
| 3288 |
+
"version": "0.9.4",
|
| 3289 |
+
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
|
| 3290 |
+
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
|
| 3291 |
+
"dev": true,
|
| 3292 |
+
"license": "MIT",
|
| 3293 |
+
"dependencies": {
|
| 3294 |
+
"deep-is": "^0.1.3",
|
| 3295 |
+
"fast-levenshtein": "^2.0.6",
|
| 3296 |
+
"levn": "^0.4.1",
|
| 3297 |
+
"prelude-ls": "^1.2.1",
|
| 3298 |
+
"type-check": "^0.4.0",
|
| 3299 |
+
"word-wrap": "^1.2.5"
|
| 3300 |
+
},
|
| 3301 |
+
"engines": {
|
| 3302 |
+
"node": ">= 0.8.0"
|
| 3303 |
+
}
|
| 3304 |
+
},
|
| 3305 |
+
"node_modules/p-limit": {
|
| 3306 |
+
"version": "3.1.0",
|
| 3307 |
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
| 3308 |
+
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
| 3309 |
+
"dev": true,
|
| 3310 |
+
"license": "MIT",
|
| 3311 |
+
"dependencies": {
|
| 3312 |
+
"yocto-queue": "^0.1.0"
|
| 3313 |
+
},
|
| 3314 |
+
"engines": {
|
| 3315 |
+
"node": ">=10"
|
| 3316 |
+
},
|
| 3317 |
+
"funding": {
|
| 3318 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 3319 |
+
}
|
| 3320 |
+
},
|
| 3321 |
+
"node_modules/p-locate": {
|
| 3322 |
+
"version": "5.0.0",
|
| 3323 |
+
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
| 3324 |
+
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
| 3325 |
+
"dev": true,
|
| 3326 |
+
"license": "MIT",
|
| 3327 |
+
"dependencies": {
|
| 3328 |
+
"p-limit": "^3.0.2"
|
| 3329 |
+
},
|
| 3330 |
+
"engines": {
|
| 3331 |
+
"node": ">=10"
|
| 3332 |
+
},
|
| 3333 |
+
"funding": {
|
| 3334 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 3335 |
+
}
|
| 3336 |
+
},
|
| 3337 |
+
"node_modules/parent-module": {
|
| 3338 |
+
"version": "1.0.1",
|
| 3339 |
+
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
| 3340 |
+
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
| 3341 |
"dev": true,
|
| 3342 |
"license": "MIT",
|
| 3343 |
"dependencies": {
|
|
|
|
| 3347 |
"node": ">=6"
|
| 3348 |
}
|
| 3349 |
},
|
| 3350 |
+
"node_modules/parse-entities": {
|
| 3351 |
+
"version": "4.0.2",
|
| 3352 |
+
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
|
| 3353 |
+
"integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
|
| 3354 |
+
"license": "MIT",
|
| 3355 |
+
"dependencies": {
|
| 3356 |
+
"@types/unist": "^2.0.0",
|
| 3357 |
+
"character-entities-legacy": "^3.0.0",
|
| 3358 |
+
"character-reference-invalid": "^2.0.0",
|
| 3359 |
+
"decode-named-character-reference": "^1.0.0",
|
| 3360 |
+
"is-alphanumerical": "^2.0.0",
|
| 3361 |
+
"is-decimal": "^2.0.0",
|
| 3362 |
+
"is-hexadecimal": "^2.0.0"
|
| 3363 |
+
},
|
| 3364 |
+
"funding": {
|
| 3365 |
+
"type": "github",
|
| 3366 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 3367 |
+
}
|
| 3368 |
+
},
|
| 3369 |
+
"node_modules/parse-entities/node_modules/@types/unist": {
|
| 3370 |
+
"version": "2.0.11",
|
| 3371 |
+
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
|
| 3372 |
+
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
|
| 3373 |
+
"license": "MIT"
|
| 3374 |
+
},
|
| 3375 |
"node_modules/path-exists": {
|
| 3376 |
"version": "4.0.0",
|
| 3377 |
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
|
|
| 3451 |
"node": ">= 0.8.0"
|
| 3452 |
}
|
| 3453 |
},
|
| 3454 |
+
"node_modules/property-information": {
|
| 3455 |
+
"version": "7.1.0",
|
| 3456 |
+
"resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
|
| 3457 |
+
"integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
|
| 3458 |
+
"license": "MIT",
|
| 3459 |
+
"funding": {
|
| 3460 |
+
"type": "github",
|
| 3461 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 3462 |
+
}
|
| 3463 |
+
},
|
| 3464 |
"node_modules/punycode": {
|
| 3465 |
"version": "2.3.1",
|
| 3466 |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
|
|
|
| 3492 |
"react": "^19.2.3"
|
| 3493 |
}
|
| 3494 |
},
|
| 3495 |
+
"node_modules/react-markdown": {
|
| 3496 |
+
"version": "10.1.0",
|
| 3497 |
+
"resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
|
| 3498 |
+
"integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
|
| 3499 |
+
"license": "MIT",
|
| 3500 |
+
"dependencies": {
|
| 3501 |
+
"@types/hast": "^3.0.0",
|
| 3502 |
+
"@types/mdast": "^4.0.0",
|
| 3503 |
+
"devlop": "^1.0.0",
|
| 3504 |
+
"hast-util-to-jsx-runtime": "^2.0.0",
|
| 3505 |
+
"html-url-attributes": "^3.0.0",
|
| 3506 |
+
"mdast-util-to-hast": "^13.0.0",
|
| 3507 |
+
"remark-parse": "^11.0.0",
|
| 3508 |
+
"remark-rehype": "^11.0.0",
|
| 3509 |
+
"unified": "^11.0.0",
|
| 3510 |
+
"unist-util-visit": "^5.0.0",
|
| 3511 |
+
"vfile": "^6.0.0"
|
| 3512 |
+
},
|
| 3513 |
+
"funding": {
|
| 3514 |
+
"type": "opencollective",
|
| 3515 |
+
"url": "https://opencollective.com/unified"
|
| 3516 |
+
},
|
| 3517 |
+
"peerDependencies": {
|
| 3518 |
+
"@types/react": ">=18",
|
| 3519 |
+
"react": ">=18"
|
| 3520 |
+
}
|
| 3521 |
+
},
|
| 3522 |
"node_modules/react-refresh": {
|
| 3523 |
"version": "0.18.0",
|
| 3524 |
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
|
|
|
|
| 3529 |
"node": ">=0.10.0"
|
| 3530 |
}
|
| 3531 |
},
|
| 3532 |
+
"node_modules/remark-parse": {
|
| 3533 |
+
"version": "11.0.0",
|
| 3534 |
+
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
|
| 3535 |
+
"integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
|
| 3536 |
+
"license": "MIT",
|
| 3537 |
+
"dependencies": {
|
| 3538 |
+
"@types/mdast": "^4.0.0",
|
| 3539 |
+
"mdast-util-from-markdown": "^2.0.0",
|
| 3540 |
+
"micromark-util-types": "^2.0.0",
|
| 3541 |
+
"unified": "^11.0.0"
|
| 3542 |
+
},
|
| 3543 |
+
"funding": {
|
| 3544 |
+
"type": "opencollective",
|
| 3545 |
+
"url": "https://opencollective.com/unified"
|
| 3546 |
+
}
|
| 3547 |
+
},
|
| 3548 |
+
"node_modules/remark-rehype": {
|
| 3549 |
+
"version": "11.1.2",
|
| 3550 |
+
"resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
|
| 3551 |
+
"integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
|
| 3552 |
+
"license": "MIT",
|
| 3553 |
+
"dependencies": {
|
| 3554 |
+
"@types/hast": "^3.0.0",
|
| 3555 |
+
"@types/mdast": "^4.0.0",
|
| 3556 |
+
"mdast-util-to-hast": "^13.0.0",
|
| 3557 |
+
"unified": "^11.0.0",
|
| 3558 |
+
"vfile": "^6.0.0"
|
| 3559 |
+
},
|
| 3560 |
+
"funding": {
|
| 3561 |
+
"type": "opencollective",
|
| 3562 |
+
"url": "https://opencollective.com/unified"
|
| 3563 |
+
}
|
| 3564 |
+
},
|
| 3565 |
"node_modules/resolve-from": {
|
| 3566 |
"version": "4.0.0",
|
| 3567 |
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
|
|
|
| 3666 |
"node": ">=0.10.0"
|
| 3667 |
}
|
| 3668 |
},
|
| 3669 |
+
"node_modules/space-separated-tokens": {
|
| 3670 |
+
"version": "2.0.2",
|
| 3671 |
+
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
|
| 3672 |
+
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
|
| 3673 |
+
"license": "MIT",
|
| 3674 |
+
"funding": {
|
| 3675 |
+
"type": "github",
|
| 3676 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 3677 |
+
}
|
| 3678 |
+
},
|
| 3679 |
+
"node_modules/stringify-entities": {
|
| 3680 |
+
"version": "4.0.4",
|
| 3681 |
+
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
|
| 3682 |
+
"integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
|
| 3683 |
+
"license": "MIT",
|
| 3684 |
+
"dependencies": {
|
| 3685 |
+
"character-entities-html4": "^2.0.0",
|
| 3686 |
+
"character-entities-legacy": "^3.0.0"
|
| 3687 |
+
},
|
| 3688 |
+
"funding": {
|
| 3689 |
+
"type": "github",
|
| 3690 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 3691 |
+
}
|
| 3692 |
+
},
|
| 3693 |
"node_modules/strip-json-comments": {
|
| 3694 |
"version": "3.1.1",
|
| 3695 |
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
|
|
|
|
| 3703 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 3704 |
}
|
| 3705 |
},
|
| 3706 |
+
"node_modules/style-to-js": {
|
| 3707 |
+
"version": "1.1.21",
|
| 3708 |
+
"resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
|
| 3709 |
+
"integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
|
| 3710 |
+
"license": "MIT",
|
| 3711 |
+
"dependencies": {
|
| 3712 |
+
"style-to-object": "1.0.14"
|
| 3713 |
+
}
|
| 3714 |
+
},
|
| 3715 |
+
"node_modules/style-to-object": {
|
| 3716 |
+
"version": "1.0.14",
|
| 3717 |
+
"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
|
| 3718 |
+
"integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
|
| 3719 |
+
"license": "MIT",
|
| 3720 |
+
"dependencies": {
|
| 3721 |
+
"inline-style-parser": "0.2.7"
|
| 3722 |
+
}
|
| 3723 |
+
},
|
| 3724 |
"node_modules/supports-color": {
|
| 3725 |
"version": "7.2.0",
|
| 3726 |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
|
|
|
| 3751 |
"url": "https://github.com/sponsors/SuperchupuDev"
|
| 3752 |
}
|
| 3753 |
},
|
| 3754 |
+
"node_modules/trim-lines": {
|
| 3755 |
+
"version": "3.0.1",
|
| 3756 |
+
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
|
| 3757 |
+
"integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
|
| 3758 |
+
"license": "MIT",
|
| 3759 |
+
"funding": {
|
| 3760 |
+
"type": "github",
|
| 3761 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 3762 |
+
}
|
| 3763 |
+
},
|
| 3764 |
+
"node_modules/trough": {
|
| 3765 |
+
"version": "2.2.0",
|
| 3766 |
+
"resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
|
| 3767 |
+
"integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
|
| 3768 |
+
"license": "MIT",
|
| 3769 |
+
"funding": {
|
| 3770 |
+
"type": "github",
|
| 3771 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 3772 |
+
}
|
| 3773 |
+
},
|
| 3774 |
"node_modules/type-check": {
|
| 3775 |
"version": "0.4.0",
|
| 3776 |
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
|
|
|
| 3784 |
"node": ">= 0.8.0"
|
| 3785 |
}
|
| 3786 |
},
|
| 3787 |
+
"node_modules/unified": {
|
| 3788 |
+
"version": "11.0.5",
|
| 3789 |
+
"resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
|
| 3790 |
+
"integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
|
| 3791 |
+
"license": "MIT",
|
| 3792 |
+
"dependencies": {
|
| 3793 |
+
"@types/unist": "^3.0.0",
|
| 3794 |
+
"bail": "^2.0.0",
|
| 3795 |
+
"devlop": "^1.0.0",
|
| 3796 |
+
"extend": "^3.0.0",
|
| 3797 |
+
"is-plain-obj": "^4.0.0",
|
| 3798 |
+
"trough": "^2.0.0",
|
| 3799 |
+
"vfile": "^6.0.0"
|
| 3800 |
+
},
|
| 3801 |
+
"funding": {
|
| 3802 |
+
"type": "opencollective",
|
| 3803 |
+
"url": "https://opencollective.com/unified"
|
| 3804 |
+
}
|
| 3805 |
+
},
|
| 3806 |
+
"node_modules/unist-util-is": {
|
| 3807 |
+
"version": "6.0.1",
|
| 3808 |
+
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
|
| 3809 |
+
"integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
|
| 3810 |
+
"license": "MIT",
|
| 3811 |
+
"dependencies": {
|
| 3812 |
+
"@types/unist": "^3.0.0"
|
| 3813 |
+
},
|
| 3814 |
+
"funding": {
|
| 3815 |
+
"type": "opencollective",
|
| 3816 |
+
"url": "https://opencollective.com/unified"
|
| 3817 |
+
}
|
| 3818 |
+
},
|
| 3819 |
+
"node_modules/unist-util-position": {
|
| 3820 |
+
"version": "5.0.0",
|
| 3821 |
+
"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
|
| 3822 |
+
"integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
|
| 3823 |
+
"license": "MIT",
|
| 3824 |
+
"dependencies": {
|
| 3825 |
+
"@types/unist": "^3.0.0"
|
| 3826 |
+
},
|
| 3827 |
+
"funding": {
|
| 3828 |
+
"type": "opencollective",
|
| 3829 |
+
"url": "https://opencollective.com/unified"
|
| 3830 |
+
}
|
| 3831 |
+
},
|
| 3832 |
+
"node_modules/unist-util-stringify-position": {
|
| 3833 |
+
"version": "4.0.0",
|
| 3834 |
+
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
|
| 3835 |
+
"integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
|
| 3836 |
+
"license": "MIT",
|
| 3837 |
+
"dependencies": {
|
| 3838 |
+
"@types/unist": "^3.0.0"
|
| 3839 |
+
},
|
| 3840 |
+
"funding": {
|
| 3841 |
+
"type": "opencollective",
|
| 3842 |
+
"url": "https://opencollective.com/unified"
|
| 3843 |
+
}
|
| 3844 |
+
},
|
| 3845 |
+
"node_modules/unist-util-visit": {
|
| 3846 |
+
"version": "5.0.0",
|
| 3847 |
+
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
|
| 3848 |
+
"integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
|
| 3849 |
+
"license": "MIT",
|
| 3850 |
+
"dependencies": {
|
| 3851 |
+
"@types/unist": "^3.0.0",
|
| 3852 |
+
"unist-util-is": "^6.0.0",
|
| 3853 |
+
"unist-util-visit-parents": "^6.0.0"
|
| 3854 |
+
},
|
| 3855 |
+
"funding": {
|
| 3856 |
+
"type": "opencollective",
|
| 3857 |
+
"url": "https://opencollective.com/unified"
|
| 3858 |
+
}
|
| 3859 |
+
},
|
| 3860 |
+
"node_modules/unist-util-visit-parents": {
|
| 3861 |
+
"version": "6.0.2",
|
| 3862 |
+
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
|
| 3863 |
+
"integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
|
| 3864 |
+
"license": "MIT",
|
| 3865 |
+
"dependencies": {
|
| 3866 |
+
"@types/unist": "^3.0.0",
|
| 3867 |
+
"unist-util-is": "^6.0.0"
|
| 3868 |
+
},
|
| 3869 |
+
"funding": {
|
| 3870 |
+
"type": "opencollective",
|
| 3871 |
+
"url": "https://opencollective.com/unified"
|
| 3872 |
+
}
|
| 3873 |
+
},
|
| 3874 |
"node_modules/update-browserslist-db": {
|
| 3875 |
"version": "1.2.3",
|
| 3876 |
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
|
|
|
| 3925 |
"uuid": "dist-node/bin/uuid"
|
| 3926 |
}
|
| 3927 |
},
|
| 3928 |
+
"node_modules/vfile": {
|
| 3929 |
+
"version": "6.0.3",
|
| 3930 |
+
"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
|
| 3931 |
+
"integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
|
| 3932 |
+
"license": "MIT",
|
| 3933 |
+
"dependencies": {
|
| 3934 |
+
"@types/unist": "^3.0.0",
|
| 3935 |
+
"vfile-message": "^4.0.0"
|
| 3936 |
+
},
|
| 3937 |
+
"funding": {
|
| 3938 |
+
"type": "opencollective",
|
| 3939 |
+
"url": "https://opencollective.com/unified"
|
| 3940 |
+
}
|
| 3941 |
+
},
|
| 3942 |
+
"node_modules/vfile-message": {
|
| 3943 |
+
"version": "4.0.3",
|
| 3944 |
+
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
|
| 3945 |
+
"integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
|
| 3946 |
+
"license": "MIT",
|
| 3947 |
+
"dependencies": {
|
| 3948 |
+
"@types/unist": "^3.0.0",
|
| 3949 |
+
"unist-util-stringify-position": "^4.0.0"
|
| 3950 |
+
},
|
| 3951 |
+
"funding": {
|
| 3952 |
+
"type": "opencollective",
|
| 3953 |
+
"url": "https://opencollective.com/unified"
|
| 3954 |
+
}
|
| 3955 |
+
},
|
| 3956 |
"node_modules/vite": {
|
| 3957 |
"version": "7.3.1",
|
| 3958 |
"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
|
|
|
|
| 4096 |
"peerDependencies": {
|
| 4097 |
"zod": "^3.25.0 || ^4.0.0"
|
| 4098 |
}
|
| 4099 |
+
},
|
| 4100 |
+
"node_modules/zwitch": {
|
| 4101 |
+
"version": "2.0.4",
|
| 4102 |
+
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
|
| 4103 |
+
"integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
|
| 4104 |
+
"license": "MIT",
|
| 4105 |
+
"funding": {
|
| 4106 |
+
"type": "github",
|
| 4107 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 4108 |
+
}
|
| 4109 |
}
|
| 4110 |
}
|
| 4111 |
}
|
frontend/package.json
CHANGED
|
@@ -13,6 +13,7 @@
|
|
| 13 |
"lucide-react": "^0.562.0",
|
| 14 |
"react": "^19.2.0",
|
| 15 |
"react-dom": "^19.2.0",
|
|
|
|
| 16 |
"uuid": "^13.0.0"
|
| 17 |
},
|
| 18 |
"devDependencies": {
|
|
|
|
| 13 |
"lucide-react": "^0.562.0",
|
| 14 |
"react": "^19.2.0",
|
| 15 |
"react-dom": "^19.2.0",
|
| 16 |
+
"react-markdown": "^10.1.0",
|
| 17 |
"uuid": "^13.0.0"
|
| 18 |
},
|
| 19 |
"devDependencies": {
|
frontend/src/App.jsx
CHANGED
|
@@ -3,8 +3,14 @@ import ChatInterface from './components/ChatInterface';
|
|
| 3 |
import { v4 as uuidv4 } from 'uuid';
|
| 4 |
|
| 5 |
function App() {
|
| 6 |
-
// Generate session ID on first load
|
| 7 |
-
const [sessionId] = useState(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
return (
|
| 10 |
<div className="app-container">
|
|
|
|
| 3 |
import { v4 as uuidv4 } from 'uuid';
|
| 4 |
|
| 5 |
function App() {
|
| 6 |
+
// Generate session ID on first load or retrieve from local storage
|
| 7 |
+
const [sessionId] = useState(() => {
|
| 8 |
+
const stored = localStorage.getItem('tesco_session_id');
|
| 9 |
+
if (stored) return stored;
|
| 10 |
+
const newId = uuidv4();
|
| 11 |
+
localStorage.setItem('tesco_session_id', newId);
|
| 12 |
+
return newId;
|
| 13 |
+
});
|
| 14 |
|
| 15 |
return (
|
| 16 |
<div className="app-container">
|
frontend/src/components/ChatInterface.jsx
CHANGED
|
@@ -1,13 +1,19 @@
|
|
| 1 |
import React, { useState, useRef, useEffect } from 'react';
|
| 2 |
-
import { Send
|
|
|
|
| 3 |
|
| 4 |
const ChatInterface = ({ sessionId }) => {
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
const [input, setInput] = useState('');
|
| 12 |
const [isLoading, setIsLoading] = useState(false);
|
| 13 |
const messagesEndRef = useRef(null);
|
|
@@ -20,6 +26,31 @@ const ChatInterface = ({ sessionId }) => {
|
|
| 20 |
scrollToBottom();
|
| 21 |
}, [messages]);
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
const handleSubmit = async (e) => {
|
| 24 |
e.preventDefault();
|
| 25 |
if (!input.trim() || isLoading) return;
|
|
@@ -40,7 +71,6 @@ const ChatInterface = ({ sessionId }) => {
|
|
| 40 |
|
| 41 |
const reader = response.body.getReader();
|
| 42 |
const decoder = new TextDecoder();
|
| 43 |
-
let assistantMessage = '';
|
| 44 |
|
| 45 |
// Add initial empty assistant message
|
| 46 |
setMessages(prev => [...prev, { role: 'assistant', content: '' }]);
|
|
@@ -50,14 +80,17 @@ const ChatInterface = ({ sessionId }) => {
|
|
| 50 |
if (done) break;
|
| 51 |
|
| 52 |
const chunk = decoder.decode(value, { stream: true });
|
| 53 |
-
assistantMessage += chunk;
|
| 54 |
|
| 55 |
setMessages(prev => {
|
| 56 |
const newMessages = [...prev];
|
| 57 |
-
newMessages[newMessages.length - 1]
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
return newMessages;
|
| 62 |
});
|
| 63 |
}
|
|
@@ -76,17 +109,24 @@ const ChatInterface = ({ sessionId }) => {
|
|
| 76 |
return (
|
| 77 |
<div className="chat-container">
|
| 78 |
<header className="chat-header">
|
| 79 |
-
<
|
|
|
|
|
|
|
| 80 |
<div className="header-title">
|
| 81 |
-
<h1>
|
| 82 |
-
<p>Always here to help</p>
|
| 83 |
</div>
|
| 84 |
</header>
|
| 85 |
|
| 86 |
<div className="messages-area">
|
| 87 |
{messages.map((msg, index) => (
|
| 88 |
<div key={index} className={`message ${msg.role}`}>
|
| 89 |
-
{msg.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
</div>
|
| 91 |
))}
|
| 92 |
{isLoading && messages[messages.length - 1]?.role === 'user' && (
|
|
@@ -105,7 +145,7 @@ const ChatInterface = ({ sessionId }) => {
|
|
| 105 |
className="input-field"
|
| 106 |
value={input}
|
| 107 |
onChange={(e) => setInput(e.target.value)}
|
| 108 |
-
placeholder="Type
|
| 109 |
disabled={isLoading}
|
| 110 |
/>
|
| 111 |
<button type="submit" className="send-button" disabled={isLoading || !input.trim()}>
|
|
|
|
| 1 |
import React, { useState, useRef, useEffect } from 'react';
|
| 2 |
+
import { Send } from 'lucide-react';
|
| 3 |
+
import ReactMarkdown from 'react-markdown';
|
| 4 |
|
| 5 |
const ChatInterface = ({ sessionId }) => {
|
| 6 |
+
// Initialize without a hardcoded greeting (let the user start or fetch history if we had it)
|
| 7 |
+
// However, for a fresh session, a simple "How can I help?" is okay, but user requested "No robotic greeting every time".
|
| 8 |
+
// Since we persist sessions, we don't want to show "Hello" if we reload.
|
| 9 |
+
// Ideally we would fetch history here. But for now, let's start empty or with a very subtle state if history is empty.
|
| 10 |
+
// For simplicity given the scope, we'll start with a "welcome" message only if the list is empty AND it's a new session.
|
| 11 |
+
// But since we don't fetch history here yet (we only push to it), let's keep the greeting but make it standard.
|
| 12 |
+
// Wait, the user said "Do not greeting every time". If I reload, `messages` state resets to default.
|
| 13 |
+
// To truly fix this, we'd need to fetch history from the backend on mount.
|
| 14 |
+
// I will add a `fetchHistory` call.
|
| 15 |
+
|
| 16 |
+
const [messages, setMessages] = useState([]);
|
| 17 |
const [input, setInput] = useState('');
|
| 18 |
const [isLoading, setIsLoading] = useState(false);
|
| 19 |
const messagesEndRef = useRef(null);
|
|
|
|
| 26 |
scrollToBottom();
|
| 27 |
}, [messages]);
|
| 28 |
|
| 29 |
+
// Fetch history on mount
|
| 30 |
+
useEffect(() => {
|
| 31 |
+
const fetchHistory = async () => {
|
| 32 |
+
try {
|
| 33 |
+
// We need an endpoint for history. existing `main.py` might not have it exposed?
|
| 34 |
+
// Let's check `main.py`... assumes it doesn't.
|
| 35 |
+
// Creating a new endpoint is out of scope of "frontend implementation" unless deemed critical.
|
| 36 |
+
// Re-reading requirements: "Use memory from previous messages".
|
| 37 |
+
// If I reload the page, and the backend has memory, but frontend wipes it, the context is lost to the USER but kept by the AI.
|
| 38 |
+
// The AI will know what we talked about, but the user won't see it.
|
| 39 |
+
// That's acceptable for now if we don't have a history endpoint.
|
| 40 |
+
// I will add a simple initial greeting if messages are empty.
|
| 41 |
+
setMessages([
|
| 42 |
+
{
|
| 43 |
+
role: 'assistant',
|
| 44 |
+
content: 'Hello, I\'m Tesco Support. How can I help you today?'
|
| 45 |
+
}
|
| 46 |
+
]);
|
| 47 |
+
} catch (e) {
|
| 48 |
+
console.error(e);
|
| 49 |
+
}
|
| 50 |
+
};
|
| 51 |
+
fetchHistory();
|
| 52 |
+
}, [sessionId]);
|
| 53 |
+
|
| 54 |
const handleSubmit = async (e) => {
|
| 55 |
e.preventDefault();
|
| 56 |
if (!input.trim() || isLoading) return;
|
|
|
|
| 71 |
|
| 72 |
const reader = response.body.getReader();
|
| 73 |
const decoder = new TextDecoder();
|
|
|
|
| 74 |
|
| 75 |
// Add initial empty assistant message
|
| 76 |
setMessages(prev => [...prev, { role: 'assistant', content: '' }]);
|
|
|
|
| 80 |
if (done) break;
|
| 81 |
|
| 82 |
const chunk = decoder.decode(value, { stream: true });
|
|
|
|
| 83 |
|
| 84 |
setMessages(prev => {
|
| 85 |
const newMessages = [...prev];
|
| 86 |
+
const lastMsg = newMessages[newMessages.length - 1];
|
| 87 |
+
// Ensure we are appending to the assistant's message
|
| 88 |
+
if (lastMsg.role === 'assistant') {
|
| 89 |
+
newMessages[newMessages.length - 1] = {
|
| 90 |
+
...lastMsg,
|
| 91 |
+
content: lastMsg.content + chunk
|
| 92 |
+
};
|
| 93 |
+
}
|
| 94 |
return newMessages;
|
| 95 |
});
|
| 96 |
}
|
|
|
|
| 109 |
return (
|
| 110 |
<div className="chat-container">
|
| 111 |
<header className="chat-header">
|
| 112 |
+
<div className="logo-area">
|
| 113 |
+
<span className="logo-text">TESCO</span>
|
| 114 |
+
</div>
|
| 115 |
<div className="header-title">
|
| 116 |
+
<h1>Support</h1>
|
|
|
|
| 117 |
</div>
|
| 118 |
</header>
|
| 119 |
|
| 120 |
<div className="messages-area">
|
| 121 |
{messages.map((msg, index) => (
|
| 122 |
<div key={index} className={`message ${msg.role}`}>
|
| 123 |
+
{msg.role === 'assistant' ? (
|
| 124 |
+
<div className="markdown-body">
|
| 125 |
+
<ReactMarkdown>{msg.content}</ReactMarkdown>
|
| 126 |
+
</div>
|
| 127 |
+
) : (
|
| 128 |
+
msg.content
|
| 129 |
+
)}
|
| 130 |
</div>
|
| 131 |
))}
|
| 132 |
{isLoading && messages[messages.length - 1]?.role === 'user' && (
|
|
|
|
| 145 |
className="input-field"
|
| 146 |
value={input}
|
| 147 |
onChange={(e) => setInput(e.target.value)}
|
| 148 |
+
placeholder="Type a message..."
|
| 149 |
disabled={isLoading}
|
| 150 |
/>
|
| 151 |
<button type="submit" className="send-button" disabled={isLoading || !input.trim()}>
|
frontend/src/index.css
CHANGED
|
@@ -68,11 +68,21 @@ body {
|
|
| 68 |
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
| 69 |
}
|
| 70 |
|
| 71 |
-
.logo {
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
background: white;
|
| 74 |
-
padding:
|
| 75 |
-
border-radius:
|
| 76 |
}
|
| 77 |
|
| 78 |
.header-title h1 {
|
|
@@ -119,6 +129,55 @@ body {
|
|
| 119 |
}
|
| 120 |
}
|
| 121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
.message.user {
|
| 123 |
align-self: flex-end;
|
| 124 |
background-color: var(--user-msg-bg);
|
|
@@ -133,6 +192,10 @@ body {
|
|
| 133 |
border-bottom-left-radius: 2px;
|
| 134 |
}
|
| 135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
/* Input Area */
|
| 137 |
.input-area {
|
| 138 |
padding: 1rem;
|
|
|
|
| 68 |
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
| 69 |
}
|
| 70 |
|
| 71 |
+
.logo-area {
|
| 72 |
+
background: transparent;
|
| 73 |
+
padding: 0;
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
.logo-text {
|
| 77 |
+
font-weight: 800;
|
| 78 |
+
font-size: 1.5rem;
|
| 79 |
+
color: var(--tesco-red);
|
| 80 |
+
letter-spacing: 0.5px;
|
| 81 |
+
text-shadow: 1px 1px 0px white;
|
| 82 |
+
/* Simple Tesco-like text representation */
|
| 83 |
background: white;
|
| 84 |
+
padding: 2px 6px;
|
| 85 |
+
border-radius: 2px;
|
| 86 |
}
|
| 87 |
|
| 88 |
.header-title h1 {
|
|
|
|
| 129 |
}
|
| 130 |
}
|
| 131 |
|
| 132 |
+
|
| 133 |
+
/* Message Rendering - Markdown Support */
|
| 134 |
+
.markdown-body {
|
| 135 |
+
font-size: 0.95rem;
|
| 136 |
+
line-height: 1.5;
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
.markdown-body p {
|
| 140 |
+
margin: 0 0 10px 0;
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
.markdown-body p:last-child {
|
| 144 |
+
margin-bottom: 0;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
.markdown-body ul,
|
| 148 |
+
.markdown-body ol {
|
| 149 |
+
margin: 8px 0;
|
| 150 |
+
padding-left: 20px;
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
.markdown-body li {
|
| 154 |
+
margin-bottom: 4px;
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
.markdown-body h1,
|
| 158 |
+
.markdown-body h2,
|
| 159 |
+
.markdown-body h3,
|
| 160 |
+
.markdown-body h4 {
|
| 161 |
+
font-weight: 600;
|
| 162 |
+
margin: 12px 0 8px 0;
|
| 163 |
+
font-size: 1.1em;
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
.markdown-body h1:first-child,
|
| 167 |
+
.markdown-body h2:first-child {
|
| 168 |
+
margin-top: 0;
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
.markdown-body strong {
|
| 172 |
+
font-weight: 600;
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
.markdown-body a {
|
| 176 |
+
color: var(--tesco-blue);
|
| 177 |
+
text-decoration: underline;
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
/* User Message specific overrides */
|
| 181 |
.message.user {
|
| 182 |
align-self: flex-end;
|
| 183 |
background-color: var(--user-msg-bg);
|
|
|
|
| 192 |
border-bottom-left-radius: 2px;
|
| 193 |
}
|
| 194 |
|
| 195 |
+
.message.assistant .markdown-body {
|
| 196 |
+
color: var(--bot-msg-text);
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
/* Input Area */
|
| 200 |
.input-area {
|
| 201 |
padding: 1rem;
|
frontend/vite.config.js
CHANGED
|
@@ -4,4 +4,9 @@ import react from '@vitejs/plugin-react'
|
|
| 4 |
// https://vite.dev/config/
|
| 5 |
export default defineConfig({
|
| 6 |
plugins: [react()],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
})
|
|
|
|
| 4 |
// https://vite.dev/config/
|
| 5 |
export default defineConfig({
|
| 6 |
plugins: [react()],
|
| 7 |
+
server: {
|
| 8 |
+
proxy: {
|
| 9 |
+
'/chat': 'http://localhost:7860'
|
| 10 |
+
}
|
| 11 |
+
}
|
| 12 |
})
|
llm.py
CHANGED
|
@@ -28,11 +28,10 @@ class LLMClient:
|
|
| 28 |
results = self.rag.retrieve(user_message, n_results=5)
|
| 29 |
# Flatten results and clean them
|
| 30 |
retrieved_texts = results['documents'][0] if results.get('documents') else []
|
| 31 |
-
|
| 32 |
-
context_str = "\n---\n".join([t for t in retrieved_texts if t])
|
| 33 |
except Exception as e:
|
| 34 |
logger.error(f"RAG Retrieval failed: {e}")
|
| 35 |
-
context_str = "
|
| 36 |
|
| 37 |
# 2. Get History safely
|
| 38 |
try:
|
|
@@ -41,66 +40,28 @@ class LLMClient:
|
|
| 41 |
logger.error(f"Memory retrieval failed: {e}")
|
| 42 |
history = []
|
| 43 |
|
| 44 |
-
# 3. Construct System Prompt (
|
| 45 |
-
system_prompt = f"""
|
| 46 |
|
| 47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
Groceries ordering:
|
| 55 |
-
www.tesco.com/groceries
|
| 56 |
-
|
| 57 |
-
Always direct users to the official Tesco website for ordering, checking products, and managing accounts.
|
| 58 |
-
|
| 59 |
-
You are powered by Retrieval-Augmented Generation (RAG).
|
| 60 |
-
Use retrieved context when available, but do not copy it word-for-word.
|
| 61 |
-
Reason over the information and respond naturally like a real customer assistant.
|
| 62 |
-
|
| 63 |
-
CRITICAL RESPONSE RULES:
|
| 64 |
-
- Do not use markdown symbols like **, ##, -, or markdown lists
|
| 65 |
-
- Do not wrap responses in markdown formatting
|
| 66 |
-
- Use clean paragraphs and natural headings written in plain text
|
| 67 |
-
- Write like a customer service chatbot, not a documentation bot
|
| 68 |
-
- Keep responses structured, clear, and friendly
|
| 69 |
-
|
| 70 |
-
FORMATTING STYLE:
|
| 71 |
-
- Use short section titles in plain text
|
| 72 |
-
- Separate sections with spacing
|
| 73 |
-
- Use normal sentences and paragraphs
|
| 74 |
-
- If steps are needed, write them as simple numbered lines
|
| 75 |
-
|
| 76 |
-
Example format:
|
| 77 |
-
|
| 78 |
-
Shopping with Tesco Groceries
|
| 79 |
-
|
| 80 |
-
Here’s how you can place an order on Tesco Groceries:
|
| 81 |
-
|
| 82 |
-
1. Visit www.tesco.com/groceries
|
| 83 |
-
2. Sign in or create an account
|
| 84 |
-
3. Browse products and add items to your basket
|
| 85 |
-
4. Choose a delivery or Click & Collect slot
|
| 86 |
-
5. Checkout and confirm your order
|
| 87 |
-
|
| 88 |
-
PERSONALITY:
|
| 89 |
-
- Friendly
|
| 90 |
-
- Professional
|
| 91 |
-
- Clear
|
| 92 |
-
- Efficient
|
| 93 |
-
- Customer-first
|
| 94 |
-
|
| 95 |
-
Never say:
|
| 96 |
-
"Based on the retrieved context"
|
| 97 |
-
"According to the documents"
|
| 98 |
-
"The data says"
|
| 99 |
-
|
| 100 |
-
If RAG context is missing or incomplete, use general Tesco shopping knowledge.
|
| 101 |
-
|
| 102 |
-
Your job is to feel like a real Tesco assistant.
|
| 103 |
|
|
|
|
| 104 |
"""
|
| 105 |
|
| 106 |
messages = [{"role": "system", "content": system_prompt}]
|
|
@@ -125,10 +86,8 @@ Your job is to feel like a real Tesco assistant.
|
|
| 125 |
|
| 126 |
except Exception as e:
|
| 127 |
logger.error(f"LLM Generation failed: {e}")
|
| 128 |
-
# If we haven't sent anything, send a generic apology (but only then)
|
| 129 |
if not full_response:
|
| 130 |
-
yield "I'm
|
| 131 |
-
# If we partially sent, we stop silently to avoid appending garbage.
|
| 132 |
|
| 133 |
# 5. Save Interaction to Memory (Only on success)
|
| 134 |
if full_response:
|
|
|
|
| 28 |
results = self.rag.retrieve(user_message, n_results=5)
|
| 29 |
# Flatten results and clean them
|
| 30 |
retrieved_texts = results['documents'][0] if results.get('documents') else []
|
| 31 |
+
context_str = "\n\n".join([t for t in retrieved_texts if t])
|
|
|
|
| 32 |
except Exception as e:
|
| 33 |
logger.error(f"RAG Retrieval failed: {e}")
|
| 34 |
+
context_str = ""
|
| 35 |
|
| 36 |
# 2. Get History safely
|
| 37 |
try:
|
|
|
|
| 40 |
logger.error(f"Memory retrieval failed: {e}")
|
| 41 |
history = []
|
| 42 |
|
| 43 |
+
# 3. Construct System Prompt (Persona & Formatting Focused)
|
| 44 |
+
system_prompt = f"""You are Tesco Support, a helpful and professional customer service agent for Tesco Groceries.
|
| 45 |
|
| 46 |
+
CORE BEHAVIOR:
|
| 47 |
+
- Be natural, polite, and direct (British English).
|
| 48 |
+
- Do not restart the conversation or greet excessively.
|
| 49 |
+
- Assume the user is continuing an ongoing chat unless context suggests otherwise.
|
| 50 |
+
- If you don't know the answer, infer logically from the context or suggest checking www.tesco.com/groceries.
|
| 51 |
+
- NEVER say "Based on the context", "According to the data", or "I am an AI".
|
| 52 |
|
| 53 |
+
FORMATTING RULES (Strict):
|
| 54 |
+
- Use Markdown for structure.
|
| 55 |
+
- Write in clear PARAGRAPHS separated by blank lines.
|
| 56 |
+
- Use bullet points (-) for lists.
|
| 57 |
+
- Use ## for main section headers (if the response is long).
|
| 58 |
+
- Use **bold** for key terms or buttons.
|
| 59 |
+
- Do NOT dump text in a single block.
|
| 60 |
|
| 61 |
+
CONTEXT DATA:
|
| 62 |
+
{context_str}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
|
| 64 |
+
If the context helps, use it. If not, rely on general knowledge about Tesco services (Clubcard, Delivery, Click & Collect).
|
| 65 |
"""
|
| 66 |
|
| 67 |
messages = [{"role": "system", "content": system_prompt}]
|
|
|
|
| 86 |
|
| 87 |
except Exception as e:
|
| 88 |
logger.error(f"LLM Generation failed: {e}")
|
|
|
|
| 89 |
if not full_response:
|
| 90 |
+
yield "I'm having a bit of trouble connecting at the moment. Please try asking again in a few seconds."
|
|
|
|
| 91 |
|
| 92 |
# 5. Save Interaction to Memory (Only on success)
|
| 93 |
if full_response:
|