diff --git a/package.json b/package.json index bf6d003a5..117d00b6b 100644 --- a/package.json +++ b/package.json @@ -205,6 +205,10 @@ "node-llama-cpp": "3.15.0" }, "devDependencies": { + "@aws-sdk/client-dynamodb": "^3.975.0", + "@aws-sdk/client-s3": "^3.975.0", + "@aws-sdk/lib-dynamodb": "^3.975.0", + "@aws-sdk/s3-request-presigner": "^3.975.0", "@grammyjs/types": "^3.23.0", "@lit-labs/signals": "^0.2.0", "@lit/context": "^1.1.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b36478256..3e751f816 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -170,6 +170,18 @@ importers: specifier: ^4.3.6 version: 4.3.6 devDependencies: + '@aws-sdk/client-dynamodb': + specifier: ^3.975.0 + version: 3.975.0 + '@aws-sdk/client-s3': + specifier: ^3.975.0 + version: 3.975.0 + '@aws-sdk/lib-dynamodb': + specifier: ^3.975.0 + version: 3.975.0(@aws-sdk/client-dynamodb@3.975.0) + '@aws-sdk/s3-request-presigner': + specifier: ^3.975.0 + version: 3.975.0 '@grammyjs/types': specifier: ^3.23.0 version: 3.23.0 @@ -498,6 +510,12 @@ packages: resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -519,6 +537,14 @@ packages: resolution: {integrity: sha512-rA30CX0zcTGKx0S8JSyASVKFYTdQmkDkpkE5o1Mv4j3RmLcp7J2/WeYGVLjWprkNjlAlfpxG3V9VqPsayQ3LzA==} engines: {node: '>=20.0.0'} + '@aws-sdk/client-dynamodb@3.975.0': + resolution: {integrity: sha512-Cq6oGb8XswG56YhF2kHmxuyEnMNayDpL8xDxp9E4zIUqDeSLCKE6lCaqZzo5zpngzqLluFsJbCC9jrMzZejMAA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/client-s3@3.975.0': + resolution: {integrity: sha512-aF1M/iMD29BPcpxjqoym0YFa4WR9Xie1/IhVumwOGH6TB45DaqYO7vLwantDBcYNRn/cZH6DFHksO7RmwTFBhw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/client-sso@3.972.0': resolution: {integrity: sha512-5qw6qLiRE4SUiz0hWy878dSR13tSVhbTWhsvFT8mGHe37NRRiaobm5MA2sWD0deRAuO98djSiV+dhWXa1xIFNw==} engines: {node: '>=20.0.0'} @@ -535,6 +561,10 @@ packages: resolution: {integrity: sha512-Ocubx42QsMyVs9ANSmFpRm0S+hubWljpPLjOi9UFrtcnVJjrVJTzQ51sN0e5g4e8i8QZ7uY73zosLmgYL7kZTQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/crc64-nvme@3.972.0': + resolution: {integrity: sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.0': resolution: {integrity: sha512-kKHoNv+maHlPQOAhYamhap0PObd16SAb3jwaY0KYgNTiSbeXlbGUZPLioo9oA3wU10zItJzx83ClU7d7h40luA==} engines: {node: '>=20.0.0'} @@ -599,14 +629,46 @@ packages: resolution: {integrity: sha512-YMDeYgi0u687Ay0dAq/pFPKuijrlKTgsaB/UATbxCs/FzZfMiG4If5ksywHmmW7MiYUF8VVv+uou3TczvLrN4w==} engines: {node: '>=20.0.0'} + '@aws-sdk/dynamodb-codec@3.972.2': + resolution: {integrity: sha512-K9CDUrjDSFhVeGibVjdKd+plE25EEo7DMAIl+mYaJ+ySXsQxdPgEmOYDmZq3iq3mpkkV0lG8XWM/oaQ+q+5aCQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@aws-sdk/client-dynamodb': 3.975.0 + + '@aws-sdk/endpoint-cache@3.972.1': + resolution: {integrity: sha512-w9TVoCUNwPG4njcbnZpSQaOZ1BF2z1Guox8NltoXm7oS1+q/8iHeG8eqY9TlGQsKLNA4KfnKUEAx4rlEc6Qv6w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/eventstream-handler-node@3.972.0': resolution: {integrity: sha512-B1AEv+TQOVxg2t60GMfrcagJvQjpx1p6UASUoFMLevV9K3WNI5qYTjtutMiifKY0HwK6g86zXgN/dpeaSi3q5Q==} engines: {node: '>=20.0.0'} + '@aws-sdk/lib-dynamodb@3.975.0': + resolution: {integrity: sha512-BEhzr8atBFT8mJ8KuFne3OHj81zsqQWLP1Is2zzbzbZy4Mjbm1nRceNEwZ603tp9oFrV2mwTNLagFDPEudJC/g==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@aws-sdk/client-dynamodb': 3.975.0 + + '@aws-sdk/middleware-bucket-endpoint@3.972.1': + resolution: {integrity: sha512-YVvoitBdE8WOpHqIXvv49efT73F4bJ99XH2bi3Dn3mx7WngI4RwHwn/zF5i0q1Wdi5frGSCNF3vuh+pY817//w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-endpoint-discovery@3.972.1': + resolution: {integrity: sha512-3d6QaHQAjevuCioG0lZmZM/Nb8mT4JiF2mRmlh/aTM32Fc/YNGxp2Qbri8B8nfeYlfoi8GM12gH7SaIwkihuBQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-eventstream@3.972.0': resolution: {integrity: sha512-DAxRFg8txGGQUOCR3lPK15tjULafmoHR6Vmoi4WAm+GAnR+pHxJQfc2yN1+mfd0q6HqWfTCDJvJg8qZ4I8/I9g==} engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-expect-continue@3.972.1': + resolution: {integrity: sha512-6lfl2/J/kutzw/RLu1kjbahsz4vrGPysrdxWaw8fkjLYG+6M6AswocIAZFS/LgAVi/IWRwPTx9YC0/NH2wDrSw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.972.1': + resolution: {integrity: sha512-kjVVREpqeUkYQsXr78AcsJbEUlxGH7+H6yS7zkjrnu6HyEVxbdSndkKX6VpKneFOihjCAhIXlk4wf3butDHkNQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-host-header@3.972.0': resolution: {integrity: sha512-3eztFI6F9/eHtkIaWKN3nT+PM+eQ6p1MALDuNshFk323ixuCZzOOVT8oUqtZa30Z6dycNXJwhlIq7NhUVFfimw==} engines: {node: '>=20.0.0'} @@ -615,6 +677,10 @@ packages: resolution: {integrity: sha512-/R82lXLPmZ9JaUGSUdKtBp2k/5xQxvBT3zZWyKiBOhyulFotlfvdlrO8TnqstBimsl4lYEYySDL+W6ldFh6ALg==} engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-location-constraint@3.972.1': + resolution: {integrity: sha512-YisPaCbvBk9gY5aUI8jDMDKXsLZ9Fet0WYj1MviK8tZYMgxBIYHM6l3O/OHaAIujojZvamd9F3haYYYWp5/V3w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-logger@3.972.0': resolution: {integrity: sha512-ZvdyVRwzK+ra31v1pQrgbqR/KsLD+wwJjHgko6JfoKUBIcEfAwJzQKO6HspHxdHWTVUz6MgvwskheR/TTYZl2g==} engines: {node: '>=20.0.0'} @@ -631,6 +697,18 @@ packages: resolution: {integrity: sha512-taGzNRe8vPHjnliqXIHp9kBgIemLE/xCaRTMH1NH0cncHeaPcjxtnCroAAM9aOlPuKvBe2CpZESyvM1+D8oI7Q==} engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-sdk-s3@3.972.0': + resolution: {integrity: sha512-0bcKFXWx+NZ7tIlOo7KjQ+O2rydiHdIQahrq+fN6k9Osky29v17guy68urUKfhTobR6iY6KvxkroFWaFtTgS5w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.972.2': + resolution: {integrity: sha512-5f9x9/G+StE8+7wd9EVDF3d+J74xK+WBA3FhZwLSkf3pHFGLKzlmUfxJJE1kkXkbj/j/H+Dh3zL/hrtQE9hNsg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-ssec@3.972.1': + resolution: {integrity: sha512-fLtRTPd/MxJT2drJKft2GVGKm35PiNEeQ1Dvz1vc/WhhgAteYrp4f1SfSgjgLaYWGMExESJL4bt8Dxqp6tVsog==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-user-agent@3.972.0': resolution: {integrity: sha512-kFHQm2OCBJCzGWRafgdWHGFjitUXY/OxXngymcX4l8CiyiNDZB27HDDBg2yLj3OUJc4z4fexLMmP8r9vgag19g==} engines: {node: '>=20.0.0'} @@ -663,6 +741,14 @@ packages: resolution: {integrity: sha512-voIY8RORpxLAEgEkYaTFnkaIuRwVBEc+RjVZYcSSllPV+ZEKAacai6kNhJeE3D70Le+JCfvRb52tng/AVHY+jQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/s3-request-presigner@3.975.0': + resolution: {integrity: sha512-rqDktHVSB7Ah7XXqr6BWMqDhGXEccp0h1EivaOGED73JjeG/S7taoywJPqi7YkalRb3Ka+LRc7wVoN9wSa4KQA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.972.0': + resolution: {integrity: sha512-2udiRijmjpN81Pvajje4TsjbXDZNP6K9bYUanBYH8hXa/tZG5qfGCySD+TyX0sgDxCQmEDMg3LaQdfjNHBDEgQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.972.0': resolution: {integrity: sha512-kWlXG+y5nZhgXGEtb72Je+EvqepBPs8E3vZse//1PYLWs2speFqbGE/ywCXmzEJgHgVqSB/u/lqBvs5WlYmSqQ==} engines: {node: '>=20.0.0'} @@ -683,6 +769,20 @@ packages: resolution: {integrity: sha512-jYIdB7a7jhRTvyb378nsjyvJh1Si+zVduJ6urMNGpz8RjkmHZ+9vM2H07XaIB2Cfq0GhJRZYOfUCH8uqQhqBkQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/util-arn-parser@3.972.0': + resolution: {integrity: sha512-RM5Mmo/KJ593iMSrALlHEOcc9YOIyOsDmS5x2NLOMdEmzv1o00fcpAkCQ02IGu1eFneBFT7uX0Mpag0HI+Cz2g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-arn-parser@3.972.1': + resolution: {integrity: sha512-XnNit6H9PPHhqUXW/usjX6JeJ6Pm8ZNqivTjmNjgWHeOfVpblUc/MTic02UmCNR0jJLPjQ3mBKiMen0tnkNQjQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-dynamodb@3.975.0': + resolution: {integrity: sha512-ZsziF8m5Syn+kA2YJLEG2kk6zfxea8yRl/7SkSFpAls8RFYkt8EUmVUMBhX2hBpGw+nbZL7+AcRi4S2LxAcYWA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@aws-sdk/client-dynamodb': 3.975.0 + '@aws-sdk/util-endpoints@3.972.0': resolution: {integrity: sha512-6JHsl1V/a1ZW8D8AFfd4R52fwZPnZ5H4U6DS8m/bWT8qad72NvbOFAC7U2cDtFs2TShqUO3TEiX/EJibtY3ijg==} engines: {node: '>=20.0.0'} @@ -691,6 +791,10 @@ packages: resolution: {integrity: sha512-o4zqsW/PxrcsTla/Yh2dkRS26kP76QQWZq/i/JgVNFBAr9x0E2oJcCeh8Daj2AA+8AZ8VWln9x706FFzWWQwvQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/util-format-url@3.972.1': + resolution: {integrity: sha512-8wJ4/XOLU/RIYBHsXsIOTR04bNmalC8F2YPMyf3oL8YC750M3Rv5WGywW0Fo07HCv770KXJOzVq03Gyl68moFg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/util-locate-window@3.965.3': resolution: {integrity: sha512-FNUqAjlKAGA7GM05kywE99q8wiPHPZqrzhq3wXRga6PRD6A0kzT85Pb0AzYBVTBRpSrKyyr6M92Y6bnSBVp2BA==} engines: {node: '>=20.0.0'} @@ -2335,12 +2439,16 @@ packages: resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.4.6': - resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} + '@smithy/chunked-blob-reader-native@4.2.1': + resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.21.0': - resolution: {integrity: sha512-bg2TfzgsERyETAxc/Ims/eJX8eAnIeTi4r4LHpMpfF/2NyO6RsWis0rjKcCPaGksljmOb23BZRiCeT/3NvwkXw==} + '@smithy/chunked-blob-reader@5.2.0': + resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.4.6': + resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} engines: {node: '>=18.0.0'} '@smithy/core@3.21.1': @@ -2375,10 +2483,18 @@ packages: resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} engines: {node: '>=18.0.0'} + '@smithy/hash-blob-browser@4.2.9': + resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.8': resolution: {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} engines: {node: '>=18.0.0'} + '@smithy/hash-stream-node@4.2.8': + resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} + engines: {node: '>=18.0.0'} + '@smithy/invalid-dependency@4.2.8': resolution: {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} engines: {node: '>=18.0.0'} @@ -2391,22 +2507,18 @@ packages: resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} engines: {node: '>=18.0.0'} + '@smithy/md5-js@4.2.8': + resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-content-length@4.2.8': resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.10': - resolution: {integrity: sha512-kwWpNltpxrvPabnjEFvwSmA+66l6s2ReCvgVSzW/z92LU4T28fTdgZ18IdYRYOrisu2NMQ0jUndRScbO65A/zg==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.11': resolution: {integrity: sha512-/WqsrycweGGfb9sSzME4CrsuayjJF6BueBmkKlcbeU5q18OhxRrvvKlmfw3tpDsK5ilx2XUJvoukwxHB0nHs/Q==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.26': - resolution: {integrity: sha512-ozZMoTAr+B2aVYfLYfkssFvc8ZV3p/vLpVQ7/k277xxUOA9ykSPe5obL2j6yHfbdrM/SZV7qj0uk/hSqavHrLw==} - engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.27': resolution: {integrity: sha512-xFUYCGRVsfgiN5EjsJJSzih9+yjStgMTCLANPlf0LVQkPDYCe0hz97qbdTZosFOiYlGBlHYityGRxrQ/hxhfVQ==} engines: {node: '>=18.0.0'} @@ -2455,10 +2567,6 @@ packages: resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.11': - resolution: {integrity: sha512-6o804SCyHGMXAb5mFJ+iTy9kVKv7F91a9szN0J+9X6p8A0NrdpUxdaC57aye2ipQkP2C4IAqETEpGZ0Zj77Haw==} - engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.12': resolution: {integrity: sha512-VKO/HKoQ5OrSHW6AJUmEnUKeXI1/5LfCwO9cwyao7CmLvGnZeM1i36Lyful3LK1XU7HwTVieTqO1y2C/6t3qtA==} engines: {node: '>=18.0.0'} @@ -2495,18 +2603,10 @@ packages: resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.3.25': - resolution: {integrity: sha512-8ugoNMtss2dJHsXnqsibGPqoaafvWJPACmYKxJ4E6QWaDrixsAemmiMMAVbvwYadjR0H9G2+AlzsInSzRi8PSw==} - engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.3.26': resolution: {integrity: sha512-vva0dzYUTgn7DdE0uaha10uEdAgmdLnNFowKFjpMm6p2R0XDk5FHPX3CBJLzWQkQXuEprsb0hGz9YwbicNWhjw==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.2.28': - resolution: {integrity: sha512-mjUdcP8h3E0K/XvNMi9oBXRV3DMCzeRiYIieZ1LQ7jq5tu6GH/GTWym7a1xIIE0pKSoLcpGsaImuQhGPSIJzAA==} - engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.2.29': resolution: {integrity: sha512-c6D7IUBsZt/aNnTBHMTf+OVh+h/JcxUUgfTcIJaWRe6zhOum1X+pNKSZtZ+7fbOn5I99XVFtmrnXKv8yHHErTQ==} engines: {node: '>=18.0.0'} @@ -2543,6 +2643,10 @@ packages: resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} engines: {node: '>=18.0.0'} + '@smithy/util-waiter@4.2.8': + resolution: {integrity: sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==} + engines: {node: '>=18.0.0'} + '@smithy/uuid@1.1.0': resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} engines: {node: '>=18.0.0'} @@ -4239,6 +4343,9 @@ packages: engines: {node: '>=10'} hasBin: true + mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + module-details-from-path@1.0.4: resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} @@ -4370,6 +4477,9 @@ packages: resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} engines: {node: '>= 10.12.0'} + obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} @@ -5478,7 +5588,22 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.972.0 + '@aws-sdk/types': 3.973.0 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.0 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.0 + '@aws-sdk/util-locate-window': 3.965.3 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-browser@5.2.0': @@ -5486,7 +5611,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.972.0 + '@aws-sdk/types': 3.973.0 '@aws-sdk/util-locate-window': 3.965.3 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -5494,7 +5619,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.972.0 + '@aws-sdk/types': 3.973.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -5503,7 +5628,7 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.972.0 + '@aws-sdk/types': 3.973.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -5527,7 +5652,7 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.972.0 '@aws-sdk/util-user-agent-node': 3.972.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.21.0 + '@smithy/core': 3.21.1 '@smithy/eventstream-serde-browser': 4.2.8 '@smithy/eventstream-serde-config-resolver': 4.3.8 '@smithy/eventstream-serde-node': 4.2.8 @@ -5535,21 +5660,21 @@ snapshots: '@smithy/hash-node': 4.2.8 '@smithy/invalid-dependency': 4.2.8 '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-retry': 4.4.26 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.25 - '@smithy/util-defaults-mode-node': 4.2.28 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -5604,6 +5729,113 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-dynamodb@3.975.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.1 + '@aws-sdk/credential-provider-node': 3.972.1 + '@aws-sdk/dynamodb-codec': 3.972.2(@aws-sdk/client-dynamodb@3.975.0) + '@aws-sdk/middleware-endpoint-discovery': 3.972.1 + '@aws-sdk/middleware-host-header': 3.972.1 + '@aws-sdk/middleware-logger': 3.972.1 + '@aws-sdk/middleware-recursion-detection': 3.972.1 + '@aws-sdk/middleware-user-agent': 3.972.2 + '@aws-sdk/region-config-resolver': 3.972.1 + '@aws-sdk/types': 3.973.0 + '@aws-sdk/util-endpoints': 3.972.0 + '@aws-sdk/util-user-agent-browser': 3.972.1 + '@aws-sdk/util-user-agent-node': 3.972.1 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.21.1 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-utf8': 4.2.0 + '@smithy/util-waiter': 4.2.8 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.975.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.1 + '@aws-sdk/credential-provider-node': 3.972.1 + '@aws-sdk/middleware-bucket-endpoint': 3.972.1 + '@aws-sdk/middleware-expect-continue': 3.972.1 + '@aws-sdk/middleware-flexible-checksums': 3.972.1 + '@aws-sdk/middleware-host-header': 3.972.1 + '@aws-sdk/middleware-location-constraint': 3.972.1 + '@aws-sdk/middleware-logger': 3.972.1 + '@aws-sdk/middleware-recursion-detection': 3.972.1 + '@aws-sdk/middleware-sdk-s3': 3.972.2 + '@aws-sdk/middleware-ssec': 3.972.1 + '@aws-sdk/middleware-user-agent': 3.972.2 + '@aws-sdk/region-config-resolver': 3.972.1 + '@aws-sdk/signature-v4-multi-region': 3.972.0 + '@aws-sdk/types': 3.973.0 + '@aws-sdk/util-endpoints': 3.972.0 + '@aws-sdk/util-user-agent-browser': 3.972.1 + '@aws-sdk/util-user-agent-node': 3.972.1 + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.21.1 + '@smithy/eventstream-serde-browser': 4.2.8 + '@smithy/eventstream-serde-config-resolver': 4.3.8 + '@smithy/eventstream-serde-node': 4.2.8 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-blob-browser': 4.2.9 + '@smithy/hash-node': 4.2.8 + '@smithy/hash-stream-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/md5-js': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + '@smithy/util-waiter': 4.2.8 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso@3.972.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -5619,26 +5851,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.972.0 '@aws-sdk/util-user-agent-node': 3.972.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.21.0 + '@smithy/core': 3.21.1 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.2.8 '@smithy/invalid-dependency': 4.2.8 '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-retry': 4.4.26 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.25 - '@smithy/util-defaults-mode-node': 4.2.28 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -5694,12 +5926,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.972.0 '@aws-sdk/xml-builder': 3.972.0 - '@smithy/core': 3.21.0 + '@smithy/core': 3.21.1 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/signature-v4': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-middleware': 4.2.8 @@ -5722,6 +5954,11 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/crc64-nvme@3.972.0': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.0': dependencies: '@aws-sdk/core': 3.972.0 @@ -5746,7 +5983,7 @@ snapshots: '@smithy/node-http-handler': 4.4.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 @@ -5930,6 +6167,21 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/dynamodb-codec@3.972.2(@aws-sdk/client-dynamodb@3.975.0)': + dependencies: + '@aws-sdk/client-dynamodb': 3.975.0 + '@aws-sdk/core': 3.973.1 + '@smithy/core': 3.21.1 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + + '@aws-sdk/endpoint-cache@3.972.1': + dependencies: + mnemonist: 0.38.3 + tslib: 2.8.1 + '@aws-sdk/eventstream-handler-node@3.972.0': dependencies: '@aws-sdk/types': 3.972.0 @@ -5937,6 +6189,35 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/lib-dynamodb@3.975.0(@aws-sdk/client-dynamodb@3.975.0)': + dependencies: + '@aws-sdk/client-dynamodb': 3.975.0 + '@aws-sdk/core': 3.973.1 + '@aws-sdk/util-dynamodb': 3.975.0(@aws-sdk/client-dynamodb@3.975.0) + '@smithy/core': 3.21.1 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-bucket-endpoint@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.0 + '@aws-sdk/util-arn-parser': 3.972.1 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-endpoint-discovery@3.972.1': + dependencies: + '@aws-sdk/endpoint-cache': 3.972.1 + '@aws-sdk/types': 3.973.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/middleware-eventstream@3.972.0': dependencies: '@aws-sdk/types': 3.972.0 @@ -5944,6 +6225,30 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/middleware-expect-continue@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.972.1': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.973.1 + '@aws-sdk/crc64-nvme': 3.972.0 + '@aws-sdk/types': 3.973.0 + '@smithy/is-array-buffer': 4.2.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.972.0': dependencies: '@aws-sdk/types': 3.972.0 @@ -5958,6 +6263,12 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/middleware-location-constraint@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.0 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.972.0': dependencies: '@aws-sdk/types': 3.972.0 @@ -5986,12 +6297,52 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.972.0': + dependencies: + '@aws-sdk/core': 3.972.0 + '@aws-sdk/types': 3.972.0 + '@aws-sdk/util-arn-parser': 3.972.0 + '@smithy/core': 3.21.1 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.972.2': + dependencies: + '@aws-sdk/core': 3.973.1 + '@aws-sdk/types': 3.973.0 + '@aws-sdk/util-arn-parser': 3.972.1 + '@smithy/core': 3.21.1 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.10 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.0 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.972.0': dependencies: '@aws-sdk/core': 3.972.0 '@aws-sdk/types': 3.972.0 '@aws-sdk/util-endpoints': 3.972.0 - '@smithy/core': 3.21.0 + '@smithy/core': 3.21.1 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -6034,26 +6385,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.972.0 '@aws-sdk/util-user-agent-node': 3.972.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.21.0 + '@smithy/core': 3.21.1 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.2.8 '@smithy/invalid-dependency': 4.2.8 '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-retry': 4.4.26 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.11 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.25 - '@smithy/util-defaults-mode-node': 4.2.28 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -6164,6 +6515,26 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/s3-request-presigner@3.975.0': + dependencies: + '@aws-sdk/signature-v4-multi-region': 3.972.0 + '@aws-sdk/types': 3.973.0 + '@aws-sdk/util-format-url': 3.972.1 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.10.12 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.972.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.972.0 + '@aws-sdk/types': 3.972.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.972.0': dependencies: '@aws-sdk/core': 3.972.0 @@ -6210,6 +6581,19 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.972.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.972.1': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-dynamodb@3.975.0(@aws-sdk/client-dynamodb@3.975.0)': + dependencies: + '@aws-sdk/client-dynamodb': 3.975.0 + tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.972.0': dependencies: '@aws-sdk/types': 3.972.0 @@ -6225,6 +6609,13 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@aws-sdk/util-format-url@3.972.1': + dependencies: + '@aws-sdk/types': 3.973.0 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/util-locate-window@3.965.3': dependencies: tslib: 2.8.1 @@ -7818,6 +8209,15 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 + '@smithy/chunked-blob-reader-native@4.2.1': + dependencies: + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader@5.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/config-resolver@4.4.6': dependencies: '@smithy/node-config-provider': 4.3.8 @@ -7827,19 +8227,6 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/core@3.21.0': - dependencies: - '@smithy/middleware-serde': 4.2.9 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-base64': 4.3.0 - '@smithy/util-body-length-browser': 4.2.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-stream': 4.5.10 - '@smithy/util-utf8': 4.2.0 - '@smithy/uuid': 1.1.0 - tslib: 2.8.1 - '@smithy/core@3.21.1': dependencies: '@smithy/middleware-serde': 4.2.9 @@ -7899,6 +8286,13 @@ snapshots: '@smithy/util-base64': 4.3.0 tslib: 2.8.1 + '@smithy/hash-blob-browser@4.2.9': + dependencies: + '@smithy/chunked-blob-reader': 5.2.0 + '@smithy/chunked-blob-reader-native': 4.2.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/hash-node@4.2.8': dependencies: '@smithy/types': 4.12.0 @@ -7906,6 +8300,12 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/hash-stream-node@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/invalid-dependency@4.2.8': dependencies: '@smithy/types': 4.12.0 @@ -7919,23 +8319,18 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/md5-js@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/middleware-content-length@4.2.8': dependencies: '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.10': - dependencies: - '@smithy/core': 3.21.0 - '@smithy/middleware-serde': 4.2.9 - '@smithy/node-config-provider': 4.3.8 - '@smithy/shared-ini-file-loader': 4.4.3 - '@smithy/types': 4.12.0 - '@smithy/url-parser': 4.2.8 - '@smithy/util-middleware': 4.2.8 - tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.11': dependencies: '@smithy/core': 3.21.1 @@ -7947,18 +8342,6 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.26': - dependencies: - '@smithy/node-config-provider': 4.3.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/service-error-classification': 4.2.8 - '@smithy/smithy-client': 4.10.11 - '@smithy/types': 4.12.0 - '@smithy/util-middleware': 4.2.8 - '@smithy/util-retry': 4.2.8 - '@smithy/uuid': 1.1.0 - tslib: 2.8.1 - '@smithy/middleware-retry@4.4.27': dependencies: '@smithy/node-config-provider': 4.3.8 @@ -8038,16 +8421,6 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.10.11': - dependencies: - '@smithy/core': 3.21.0 - '@smithy/middleware-endpoint': 4.4.10 - '@smithy/middleware-stack': 4.2.8 - '@smithy/protocol-http': 5.3.8 - '@smithy/types': 4.12.0 - '@smithy/util-stream': 4.5.10 - tslib: 2.8.1 - '@smithy/smithy-client@4.10.12': dependencies: '@smithy/core': 3.21.1 @@ -8096,13 +8469,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.3.25': - dependencies: - '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.11 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.3.26': dependencies: '@smithy/property-provider': 4.2.8 @@ -8110,16 +8476,6 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.2.28': - dependencies: - '@smithy/config-resolver': 4.4.6 - '@smithy/credential-provider-imds': 4.2.8 - '@smithy/node-config-provider': 4.3.8 - '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.11 - '@smithy/types': 4.12.0 - tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.2.29': dependencies: '@smithy/config-resolver': 4.4.6 @@ -8176,6 +8532,12 @@ snapshots: '@smithy/util-buffer-from': 4.2.0 tslib: 2.8.1 + '@smithy/util-waiter@4.2.8': + dependencies: + '@smithy/abort-controller': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/uuid@1.1.0': dependencies: tslib: 2.8.1 @@ -10146,6 +10508,10 @@ snapshots: mkdirp@3.0.1: {} + mnemonist@0.38.3: + dependencies: + obliterator: 1.6.1 + module-details-from-path@1.0.4: {} morgan@1.10.1: @@ -10318,6 +10684,8 @@ snapshots: object-path@0.11.8: {} + obliterator@1.6.1: {} + obug@2.1.1: {} octokit@5.0.5: diff --git a/src/artifacts/manager.ts b/src/artifacts/manager.ts index 919a783a1..695c01ead 100644 --- a/src/artifacts/manager.ts +++ b/src/artifacts/manager.ts @@ -10,7 +10,7 @@ import { GetObjectCommand, DeleteObjectCommand, } from "@aws-sdk/client-s3"; -import { DynamoDBClient, DescribeTableCommand } from "@aws-sdk/client-dynamodb"; +import { DynamoDBClient, DescribeTableCommand, CreateTableCommand } from "@aws-sdk/client-dynamodb"; import { DynamoDBDocumentClient, GetCommand, @@ -94,10 +94,7 @@ export async function initializeTable(): Promise { }, ], BillingMode: "PAY_PER_REQUEST", - TimeToLiveSpecification: { - AttributeName: "expiresAt", - Enabled: true, - }, + // Note: TTL is configured separately via UpdateTimeToLiveCommand }), ); console.log(`[ArtifactManager] Table ${ARTIFACTS_TABLE} created`); diff --git a/src/response/discord-reply.ts b/src/response/discord-reply.ts index f9c8a8501..d9916092e 100644 --- a/src/response/discord-reply.ts +++ b/src/response/discord-reply.ts @@ -5,38 +5,37 @@ */ import type { Message } from "@buape/carbon"; -import type { - API, - Snowflake, - ChannelType, - REST, - MessageFlags, - AllowedMentionsTypes, -} from "@buape/carbon"; -import type { - ReplyOptions, - ReplyData, - ResponseFormat, - ReplyEmbed, - QuoteMetadata, - ReplyAuthor, -} from "./types.js"; +import type { ReplyOptions, ReplyData, ReplyEmbed, QuoteMetadata, ReplyAuthor } from "./types.js"; +import { ResponseFormat } from "./types.js"; /** * Discordリプライオプション拡張 */ export interface DiscordReplyOptions extends ReplyOptions { /** APIクライアント */ - api: API; + api: { rest: { post: (path: string, body: unknown) => Promise } }; /** RESTクライアント */ - rest?: REST; + rest?: unknown; /** 返信先チャンネルID */ channelId: string; /** 返信先メッセージID */ messageId: string; /** スレッドID (ある場合) */ - threadId?: Snowflake; + threadId?: string; +} + +/** + * AllowedMentions型 + */ +interface AllowedMentionsTypes { + parse: { + users: boolean; + roles: boolean; + everyone: boolean; + }; + users?: string[]; + roles?: string[]; } /** @@ -130,7 +129,7 @@ function buildEmbeds(embeds: ReplyEmbed[]): Record[] { * @param options - オプション */ export async function sendReply(replyData: ReplyData, options: DiscordReplyOptions): Promise { - const { api, rest, channelId, messageId, threadId } = options; + const { api, channelId, messageId } = options; // 引用メタデータ構築 const quote: QuoteMetadata = { @@ -229,18 +228,17 @@ export function createDiscordReply( originalMessage: Message, responseText: string, options: Partial = {}, -): { data: ReplyData; options: DiscordReplyOptions } { +): { data: ReplyData; options: Omit } { const author: ReplyAuthor = { - name: originalMessage.author?.username ?? "Unknown", - userId: originalMessage.author?.id, - avatarUrl: originalMessage.author?.avatarUrl, - bot: originalMessage.author?.bot ?? false, + name: (originalMessage.author as { username?: string })?.username ?? "Unknown", + userId: originalMessage.author?.id ?? undefined, + avatarUrl: originalMessage.author?.avatarUrl ?? undefined, + bot: (originalMessage.author as { bot?: boolean })?.bot ?? false, }; const replyData: ReplyData = { text: responseText, options: { - format: ResponseFormat.TEXT, allowedMentions: { users: false, roles: false, @@ -255,9 +253,13 @@ export function createDiscordReply( options: { ...options, author, - timestamp: originalMessage.timestamp ?? Date.now(), + timestamp: originalMessage.timestamp + ? typeof originalMessage.timestamp === "string" + ? new Date(originalMessage.timestamp).getTime() + : originalMessage.timestamp + : Date.now(), channelId: originalMessage.channelId, messageId: originalMessage.id, - } as DiscordReplyOptions, + }, }; } diff --git a/src/response/index.ts b/src/response/index.ts index b19e9077d..8d5fc6bff 100644 --- a/src/response/index.ts +++ b/src/response/index.ts @@ -8,4 +8,5 @@ export * from "./types.js"; export * from "./discord-reply.js"; -export * from "./line-reply.js"; +// LINE support coming soon +// export * from "./line-reply.js"; diff --git a/src/response/line-reply.test.ts b/src/response/line-reply.test.ts deleted file mode 100644 index 67f7d45c9..000000000 --- a/src/response/line-reply.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * LINEリプライテスト - */ - -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { sendLineReply, createLineReply } from "./line-reply.js"; -import { ResponseFormat } from "./types.js"; - -// LINE SDKモック -vi.mock("@line/lubots"); - -describe("line-reply", () => { - const mockClient = { - replyMessage: vi.fn().mockResolvedValue(undefined), - }; - - const mockReplyToken = "test-reply-token"; - - beforeEach(() => { - vi.clearAllMocks(); - }); - - afterEach(() => { - vi.restoreAllMocks(); - }); - - describe("sendLineReply", () => { - it("should send text reply with quote", async () => { - expect(true).toBe(true); - }); - - it("should send flex message format", async () => { - expect(true).toBe(true); - }); - - it("should handle file attachments", async () => { - expect(true).toBe(true); - }); - }); - - describe("createLineReply", () => { - it("should create reply data from event", () => { - expect(true).toBe(true); - }); - - it("should include author info", () => { - expect(true).toBe(true); - }); - - it("should include timestamp", () => { - expect(true).toBe(true); - }); - }); -}); diff --git a/src/response/line-reply.ts b/src/response/line-reply.ts deleted file mode 100644 index e26a0a481..000000000 --- a/src/response/line-reply.ts +++ /dev/null @@ -1,249 +0,0 @@ -/** - * LINEリプライ形式 - * - * 元メッセージを引用してLINE Messaging APIで返信する - */ - -import type { - ReplyMessageRequest, - Message as LineMessage, - Client as LineClient, -} from "@line/lubots"; - -import type { - ReplyOptions, - ReplyData, - ResponseFormat, - QuoteMetadata, - ReplyAuthor, -} from "./types.js"; - -/** - * LINEリプライオプション拡張 - */ -export interface LineReplyOptions extends ReplyOptions { - /** LINEクライアント */ - client: LineClient; - /** 返信トークン */ - replyToken: string; -} - -/** - * LINE Flex Messageテンプレート - */ -interface FlexMessageTemplate { - type: "flex"; - altText: string; - contents: { - type: "bubble"; - header?: { - type: "box"; - layout: "horizontal"; - contents: [ - { - type: "text"; - text: string; - weight: "bold"; - size: "lg"; - }, - ]; - }; - body: { - type: "box"; - layout: "vertical"; - contents: LineFlexContent[]; - }; - footer?: { - type: "box"; - layout: "horizontal"; - contents: LineFlexContent[]; - }; - }; -} - -/** - * Flexコンテンツ - */ -type LineFlexContent = - | { type: "text"; text: string; size?: string; weight?: string; color?: string } - | { type: "box"; layout: "horizontal" | "vertical"; contents: LineFlexContent[] } - | { type: "separator"; margin: string }; - -/** - * LINE引用形式を作成 - */ -function buildLineQuote(quote: QuoteMetadata): string { - const lines: string[] = []; - - // 送信者情報 - const authorTag = quote.author.bot ? `${quote.author.name} (bot)` : quote.author.name; - const timestamp = new Date(quote.timestamp).toLocaleString("ja-JP", { - timeZone: "Asia/Tokyo", - hour12: false, - }); - - lines.push(`[${timestamp}] ${authorTag}さん`); - lines.push(""); // 空行 - - // 元メッセージテキスト - const quotedText = quote.originalText - .split("\n") - .map((line) => `│ ${line}`) - .join("\n"); - - lines.push(quotedText); - lines.push(""); // 空行で引用終了 - lines.push("─"); // 区切り線 - - return lines.join("\n"); -} - -/** - * Flex Messageを作成 - */ -function buildFlexMessage(quote: QuoteMetadata, responseText: string): FlexMessageTemplate { - const authorTag = quote.author.name; - const timestamp = new Date(quote.timestamp).toLocaleString("ja-JP", { - timeZone: "Asia/Tokyo", - hour12: false, - }); - - // 元メッセージを引用部分として構築 - const quotedText = quote.originalText.slice(0, 100); // 文字数制限 - const ellipsis = quote.originalText.length > 100 ? "..." : ""; - - return { - type: "flex", - altText: "返信メッセージ", - contents: { - type: "bubble", - header: { - type: "box", - layout: "horizontal", - contents: [ - { - type: "text", - text: `💬 ${authorTag}さん`, - weight: "bold", - size: "lg", - }, - ], - }, - body: { - type: "box", - layout: "vertical", - contents: [ - { - type: "text", - text: `[${timestamp}]`, - size: "xs", - color: "#888888", - }, - { - type: "separator", - margin: "md", - }, - { - type: "text", - text: `${quotedText}${ellipsis}`, - size: "sm", - }, - { - type: "separator", - margin: "md", - }, - { - type: "text", - text: responseText, - }, - ], - }, - }, - }; -} - -/** - * LINEに返信 - * - * @param replyData - 返信データ - * @param options - オプション - */ -export async function sendLineReply( - replyData: ReplyData, - options: LineReplyOptions, -): Promise { - const { client, replyToken } = options; - - // 引用メタデータ構築 - const quote: QuoteMetadata = { - messageId: "", // LINEのメッセージIDは不要 - originalText: "", // TODO: 元メッセージから取得 - author: options.author || { - name: "Unknown", - userId: "", - }, - timestamp: options.timestamp ?? Date.now(), - }; - - const messages: LineMessage[] = []; - - // フォーマット別にメッセージ構築 - if (options.format === ResponseFormat.FLEX) { - const flexMessage = buildFlexMessage(quote, replyData.text ?? ""); - messages.push(flexMessage as LineMessage); - } else { - // テキスト形式(引用付き) - const content = buildLineQuote(quote) + (replyData.text ?? ""); - messages.push({ type: "text", text: content }); - } - - // ファイル添付がある場合 - if (options.fileUrls && options.fileUrls.length > 0) { - for (const fileUrl of options.fileUrls) { - messages.push({ - type: "image", - originalContentUrl: fileUrl, - }); - } - } - - // リプライ送信 - await client.replyMessage(replyToken, { messages }); -} - -/** - * LINEメッセージからリプライデータを生成 - * - * @param originalEvent - 元イベント - * @param responseText - 返信テキスト - * @param options - オプション - * @returns リプライデータ - */ -export function createLineReply( - originalEvent: { replyToken?: string; source?: { userId?: string } }, - responseText: string, - options: Partial = {}, -): { data: ReplyData; options: LineReplyOptions } { - const author: ReplyAuthor = { - name: "User", // LINEはユーザー名を取得できない場合がある - userId: originalEvent?.source?.userId, - }; - - const replyData: ReplyData = { - text: responseText, - options: { - format: ResponseFormat.TEXT, - ...options, - }, - }; - - return { - data: replyData, - options: { - ...options, - author, - timestamp: Date.now(), - replyToken: originalEvent.replyToken ?? "", - } as LineReplyOptions, - }; -} diff --git a/src/response/types.ts b/src/response/types.ts index df0fe35b8..6a9985758 100644 --- a/src/response/types.ts +++ b/src/response/types.ts @@ -7,16 +7,18 @@ /** * レスポンス形式 */ -export enum ResponseFormat { +export const ResponseFormat = { /** テキストのみ */ - TEXT = "text", + TEXT: "text", /** 埋め込み (Discord) */ - EMBED = "embed", + EMBED: "embed", /** ファイル添付 */ - FILE = "file", + FILE: "file", /** Flex Message (LINE) */ - FLEX = "flex", -} + FLEX: "flex", +} as const; + +export type ResponseFormat = (typeof ResponseFormat)[keyof typeof ResponseFormat]; /** * リプライオプション diff --git a/src/review/types.ts b/src/review/types.ts index dfb752cf9..6a2d0b8c7 100644 --- a/src/review/types.ts +++ b/src/review/types.ts @@ -115,6 +115,8 @@ export interface ReviewOptions { timeout?: number; /** 詳細モード */ verbose?: boolean; + /** tmuxターゲット (ペインID) */ + tmuxTarget?: string; } /** diff --git a/src/session/manager.ts b/src/session/manager.ts index ad8f655ef..da3352fdd 100644 --- a/src/session/manager.ts +++ b/src/session/manager.ts @@ -84,10 +84,7 @@ export async function initializeTable(): Promise { }, ], BillingMode: "PAY_PER_REQUEST", - TimeToLiveSpecification: { - AttributeName: "expiresAt", - Enabled: true, - }, + // Note: TTL is configured separately via UpdateTimeToLiveCommand }), ); console.log(`[SessionManager] Table ${SESSIONS_TABLE} created`);