diff --git a/package.json b/package.json index 4ce9b2e..e131646 100644 --- a/package.json +++ b/package.json @@ -17,17 +17,19 @@ "@git.zone/tsbuild": "^2.1.25", "@git.zone/tsbundle": "^2.0.5", "@git.zone/tsrun": "^1.2.46", - "@git.zone/tstest": "^1.0.44", - "@push.rocks/tapbundle": "^5.0.15", - "@types/node": "^20.8.7" + "@git.zone/tstest": "^1.0.90", + "@push.rocks/qenv": "^6.0.5", + "@push.rocks/tapbundle": "^5.0.23", + "@types/node": "^20.12.7" }, "dependencies": { - "@anthropic-ai/sdk": "^0.19.1", - "@push.rocks/qenv": "^6.0.5", - "@push.rocks/smartfile": "^11.0.4", - "@push.rocks/smartpath": "^5.0.11", + "@anthropic-ai/sdk": "^0.20.7", + "@push.rocks/smartexpose": "^1.0.5", + "@push.rocks/smartfile": "^11.0.14", + "@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpromise": "^4.0.3", - "openai": "^4.31.0" + "@push.rocks/webstream": "^1.0.8", + "openai": "^4.38.3" }, "repository": { "type": "git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1249bb2..767ec08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,23 +6,26 @@ settings: dependencies: '@anthropic-ai/sdk': - specifier: ^0.19.1 - version: 0.19.1 - '@push.rocks/qenv': - specifier: ^6.0.5 - version: 6.0.5 + specifier: ^0.20.7 + version: 0.20.7 + '@push.rocks/smartexpose': + specifier: ^1.0.5 + version: 1.0.5 '@push.rocks/smartfile': - specifier: ^11.0.4 - version: 11.0.4 + specifier: ^11.0.14 + version: 11.0.14 '@push.rocks/smartpath': - specifier: ^5.0.11 - version: 5.0.11 + specifier: ^5.0.18 + version: 5.0.18 '@push.rocks/smartpromise': specifier: ^4.0.3 version: 4.0.3 + '@push.rocks/webstream': + specifier: ^1.0.8 + version: 1.0.8 openai: - specifier: ^4.31.0 - version: 4.31.0 + specifier: ^4.38.3 + version: 4.38.3 devDependencies: '@git.zone/tsbuild': @@ -33,30 +36,32 @@ devDependencies: version: 2.0.15 '@git.zone/tsrun': specifier: ^1.2.46 - version: 1.2.46(@types/node@20.12.2) + version: 1.2.46(@types/node@20.12.7) '@git.zone/tstest': - specifier: ^1.0.44 - version: 1.0.88(@types/node@20.12.2) + specifier: ^1.0.90 + version: 1.0.90(@types/node@20.12.7) + '@push.rocks/qenv': + specifier: ^6.0.5 + version: 6.0.5 '@push.rocks/tapbundle': - specifier: ^5.0.15 - version: 5.0.22 + specifier: ^5.0.23 + version: 5.0.23 '@types/node': - specifier: ^20.8.7 - version: 20.12.2 + specifier: ^20.12.7 + version: 20.12.7 packages: - /@anthropic-ai/sdk@0.19.1: - resolution: {integrity: sha512-u9i8yN8wAr/ujaXSRjfYXiYzhCk2mdUG6G9y5IAKEAPJHwFTrEyf76Z4V1LqqFbDBlZqm0tkoMMpU8tmp65ocA==} + /@anthropic-ai/sdk@0.20.7: + resolution: {integrity: sha512-uyc+3WGLpe8ur6mSIKSab7P9JdBerTdmqb7popc/yROYLLCW/Ykyw4ZfjmN/cLmxjnAKnv5YUngzbPM0BJuGjg==} dependencies: - '@types/node': 18.19.28 + '@types/node': 18.19.31 '@types/node-fetch': 2.6.11 abort-controller: 3.0.0 agentkeepalive: 4.5.0 - digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.6.7 + node-fetch: 2.7.0 web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding @@ -64,6 +69,7 @@ packages: /@api.global/typedrequest-interfaces@3.0.18: resolution: {integrity: sha512-O/AdHnk9NDcBfb/Qcpi3Bq/7I6uAJHXfIT5peeKODvLUYysmuxG/c3t9NWQvfSOXQUKnVKb0WrCGjraOL7Pyww==} + dev: true /@api.global/typedrequest@3.0.19: resolution: {integrity: sha512-td0+w5qn7eVtUdDkTBp+4z+fXiEb9mLu5CTq+y4BNQrZYlB/joJB0jhEOg25ttekiPsJ/+5LfM1+nfls3D6kkw==} @@ -76,55 +82,69 @@ packages: '@push.rocks/smartpromise': 4.0.3 '@push.rocks/webrequest': 3.0.35 '@push.rocks/webstream': 1.0.8 + dev: true - /@api.global/typedserver@3.0.27: - resolution: {integrity: sha512-iDQcoVy3CL5NkJa6xHb+EXNxxGtOscl7U163ARHasMHcrab4Nx5Px576G1ZlG6faeRpA1UKlxaT/QepfomLIbw==} + /@api.global/typedrequest@3.0.21: + resolution: {integrity: sha512-iZ0+EzdaeRI6ExlN32RLM8YENCWzVOj26qaSVT5w1o0HbKH/xOOLCohsK2VhwI0nKVnOK4A6AfZV4WwqueIrrw==} dependencies: - '@api.global/typedrequest': 3.0.19 '@api.global/typedrequest-interfaces': 3.0.18 - '@api.global/typedsocket': 3.0.0 - '@push.rocks/lik': 6.0.14 + '@push.rocks/isounique': 1.0.5 + '@push.rocks/lik': 6.0.15 + '@push.rocks/smartbuffer': 3.0.2 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/webrequest': 3.0.37 + '@push.rocks/webstream': 1.0.8 + dev: true + + /@api.global/typedserver@3.0.29: + resolution: {integrity: sha512-z6+Ch2NTWstZ9gJr1ArkPu5DgsE83QrrZ3kH0kxdonxU+phR8fGQeK/49jAmQ8TK+8TKkVKtH4jf8T41EX9p6A==} + dependencies: + '@api.global/typedrequest': 3.0.21 + '@api.global/typedrequest-interfaces': 3.0.18 + '@api.global/typedsocket': 3.0.1 + '@push.rocks/lik': 6.0.15 '@push.rocks/smartchok': 1.0.33 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.12 '@push.rocks/smartfeed': 1.0.11 - '@push.rocks/smartfile': 11.0.4 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartfile': 11.0.14 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartlog': 3.0.3 '@push.rocks/smartlog-destination-devtools': 1.0.10 '@push.rocks/smartmanifest': 2.0.2 '@push.rocks/smartmime': 1.0.6 '@push.rocks/smartopen': 2.0.0 - '@push.rocks/smartpath': 5.0.11 + '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartrequest': 2.0.21 + '@push.rocks/smartrequest': 2.0.22 '@push.rocks/smartrx': 3.0.7 '@push.rocks/smartsitemap': 2.0.3 '@push.rocks/smartstream': 3.0.34 '@push.rocks/smarttime': 4.0.6 - '@push.rocks/webstore': 2.0.13 - '@tsclass/tsclass': 4.0.52 + '@push.rocks/webstore': 2.0.14 + '@tsclass/tsclass': 4.0.54 '@types/express': 4.17.21 body-parser: 1.20.2 cors: 2.8.5 express: 4.19.2 express-force-ssl: 0.3.2 - lit: 3.1.2 + lit: 3.1.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /@api.global/typedsocket@3.0.0: - resolution: {integrity: sha512-ui+6MLd99iTN/lC+iC/FKPRjzVyiZ4PrmlU6ptbCtbBj3cSOXHx+RRGF54+be2xHodf4FOgwFv/GZdW8LtO3vg==} + /@api.global/typedsocket@3.0.1: + resolution: {integrity: sha512-xojiAVNXtHoxkpBo8U2HHJG8FrVXXuLvDNndSHXwx4C9VslUwDn5zSCI+PdBl8iAg+ZuBmKjqkpZZ9sL6DC5yQ==} dependencies: - '@api.global/typedrequest': 3.0.19 + '@api.global/typedrequest': 3.0.21 '@api.global/typedrequest-interfaces': 3.0.18 '@push.rocks/isohash': 2.0.1 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartrx': 3.0.7 - '@push.rocks/smartsocket': 2.0.24 + '@push.rocks/smartsocket': 2.0.25 '@push.rocks/smartstring': 4.0.15 '@push.rocks/smarturl': 3.0.7 transitivePeerDependencies: @@ -163,11 +183,17 @@ packages: picocolors: 1.0.0 dev: true + /@buttercup/fetch@0.2.1: + resolution: {integrity: sha512-sCgECOx8wiqY8NN1xN22BqqKzXYIG2AicNLlakOAI4f0WgyLVUbAigMf8CZhBtJxdudTcB1gD5lciqi44jwJvg==} + optionalDependencies: + node-fetch: 3.3.2 + dev: false + /@configvault.io/interfaces@1.0.17: resolution: {integrity: sha512-bEcCUR2VBDJsTin8HQh8Uw/mlYl2v8A3jMIaQ+MTB9Hrqd6CZL2dL7iJdWyFl/3EIX+LDxWFR+Oq7liIq7w+1Q==} dependencies: '@api.global/typedrequest-interfaces': 3.0.18 - dev: false + dev: true /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -396,9 +422,9 @@ packages: '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.8 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.0.4 + '@push.rocks/smartfile': 11.0.14 '@push.rocks/smartlog': 3.0.3 - '@push.rocks/smartpath': 5.0.11 + '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.0.3 typescript: 5.3.3 dev: true @@ -410,10 +436,10 @@ packages: '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.8 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.0.4 + '@push.rocks/smartfile': 11.0.14 '@push.rocks/smartlog': 3.0.3 '@push.rocks/smartlog-destination-local': 9.0.1 - '@push.rocks/smartpath': 5.0.11 + '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartspawn': 3.0.2 '@types/html-minifier': 4.0.5 @@ -424,13 +450,13 @@ packages: - supports-color dev: true - /@git.zone/tsrun@1.2.46(@types/node@20.12.2): + /@git.zone/tsrun@1.2.46(@types/node@20.12.7): resolution: {integrity: sha512-8miFVBle9Mnjx+uPGI/P+EuWcIOXWjBAkdjN5IYbdp5Ytt4xQODCLh4JSnC9h56UeU1nUxCAxZeJs2e9TXrivA==} hasBin: true dependencies: '@push.rocks/smartfile': 10.0.41 '@push.rocks/smartshell': 3.0.4 - ts-node: 10.9.2(@types/node@20.12.2)(typescript@5.1.6) + ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - '@swc/core' @@ -438,21 +464,21 @@ packages: - '@types/node' dev: true - /@git.zone/tstest@1.0.88(@types/node@20.12.2): - resolution: {integrity: sha512-yTBKLI48Nz35qHOJ9ZnXY06VvBAhcC3NEZ4YyGDN4CmrZQ6MVK3fIMQUQCFVmba0GzSmvbgbJcZnd6IRezkyzQ==} + /@git.zone/tstest@1.0.90(@types/node@20.12.7): + resolution: {integrity: sha512-McytXK46GiReEps7wHWW6zOHYCFF4sywjj6auHjhGqzOogA2Wju1YtZRL+o+OAUb61kQxNFRras6Xg/4Zth0Bw==} hasBin: true dependencies: - '@api.global/typedserver': 3.0.27 + '@api.global/typedserver': 3.0.29 '@git.zone/tsbundle': 2.0.15 - '@git.zone/tsrun': 1.2.46(@types/node@20.12.2) + '@git.zone/tsrun': 1.2.46(@types/node@20.12.7) '@push.rocks/consolecolor': 2.0.2 '@push.rocks/smartbrowser': 2.0.6 '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartfile': 11.0.4 + '@push.rocks/smartfile': 11.0.14 '@push.rocks/smartlog': 3.0.3 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartshell': 3.0.4 - '@push.rocks/tapbundle': 5.0.22 + '@push.rocks/smartshell': 3.0.5 + '@push.rocks/tapbundle': 5.0.23 '@types/ws': 8.5.10 figures: 6.1.0 ws: 8.16.0 @@ -536,7 +562,7 @@ packages: resolution: {integrity: sha512-q4U+hFTQQRyorJILOpmBm6PY2hgjCnQe214nXJNjbJMQ9EvT55oyZ7C8BY5aFYJkytUyBoawlMpZt4F2xjdzHw==} dependencies: '@open-wc/dedupe-mixin': 1.4.0 - lit: 3.1.2 + lit: 3.1.3 dev: true /@open-wc/semantic-dom-diff@0.20.1: @@ -550,12 +576,12 @@ packages: - utf-8-validate dev: true - /@open-wc/testing-helpers@3.0.0: - resolution: {integrity: sha512-zkR39b7ljH/TqZgzBB9ekHKg1OLvR/JQYCEaW76V0RuASfV/vkgx2xfUQNe8DlEOLOetRZ3agFqssEREF45ClA==} + /@open-wc/testing-helpers@3.0.1: + resolution: {integrity: sha512-hyNysSatbgT2FNxHJsS3rGKcLEo6+HwDFu1UQL6jcSQUabp/tj3PyX7UnXL3H5YGv0lJArdYLSnvjLnjn3O2fw==} dependencies: '@open-wc/scoped-elements': 3.0.5 - lit: 3.1.2 - lit-html: 3.1.2 + lit: 3.1.3 + lit-html: 3.1.3 dev: true /@open-wc/testing@4.0.0: @@ -563,7 +589,7 @@ packages: dependencies: '@esm-bundle/chai': 4.3.4-fix.0 '@open-wc/semantic-dom-diff': 0.20.1 - '@open-wc/testing-helpers': 3.0.0 + '@open-wc/testing-helpers': 3.0.1 '@types/chai-dom': 1.11.3 '@types/sinon-chai': 3.2.12 chai-a11y-axe: 1.5.0 @@ -613,16 +639,29 @@ packages: '@types/minimatch': 5.1.2 '@types/symbol-tree': 3.2.5 symbol-tree: 3.2.4 + dev: true + + /@push.rocks/lik@6.0.15: + resolution: {integrity: sha512-rZxln6l4NAU931MTxnsjy1pue+S3AXtDCidHH/tbkqBtrWIzWuXduo6Nz3zYkndbD64Knyta7F60JRvcOe4XqA==} + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartmatch': 2.0.0 + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/smartrx': 3.0.7 + '@push.rocks/smarttime': 4.0.6 + '@types/minimatch': 5.1.2 + '@types/symbol-tree': 3.2.5 + symbol-tree: 3.2.4 /@push.rocks/qenv@6.0.5: resolution: {integrity: sha512-Id/eSKKqSDUGe+0Cp5HEJ58J1iVv1jQseLUMs9kFTPYwG+NJSETUCRsJV50w5cPv8bRFcSkSU+xVbUbOc1p29A==} dependencies: '@api.global/typedrequest': 3.0.19 '@configvault.io/interfaces': 1.0.17 - '@push.rocks/smartfile': 11.0.4 + '@push.rocks/smartfile': 11.0.14 '@push.rocks/smartlog': 3.0.3 - '@push.rocks/smartpath': 5.0.11 - dev: false + '@push.rocks/smartpath': 5.0.18 + dev: true /@push.rocks/smartbrowser@2.0.6: resolution: {integrity: sha512-Ne+KCVhV/DROc1rHRRw59K6h0+LpQAK9fdOUtgDZ7laLPmB/tmnbUh3IuRDNcIY1iVA9pydoobwjnTjVgio9eQ==} @@ -640,6 +679,13 @@ packages: /@push.rocks/smartbuffer@1.0.7: resolution: {integrity: sha512-ESs16KRJuHo0wXxAZjwu0uiBgwUC6EodHtERFHAo2XfT+fw40DPnAvIi37RJPA8FZ7kIkpzRcuTCuFW81UH7VA==} + dev: true + + /@push.rocks/smartbuffer@3.0.2: + resolution: {integrity: sha512-xhhiA62hITxkTXkHsygvRhb8Malgmq9fdCl/kQp7bYC51CQGWy6dxwQmdJYRsdSRMJX9kj4Gv7WHtnBtEXW1Gg==} + dependencies: + uint8array-extras: 1.1.0 + dev: true /@push.rocks/smartcache@1.0.16: resolution: {integrity: sha512-UAXf74eDuH4/RebJhydIbHlYVR3ACYJjniEY/9ZePblu7bIPgwFZqLBE9g1lcKVogbH9yY62dk3rSpgBzenyfQ==} @@ -654,7 +700,7 @@ packages: /@push.rocks/smartchok@1.0.33: resolution: {integrity: sha512-6mDqTkNOR5Z0H14Ujmq3ACUZHzeUBNE8EdoLDrmkPzRVE9HP3WcCnDu009Fy0LVKHYHAUirZ0LzCi8zHN84RtA==} dependencies: - '@push.rocks/lik': 6.0.14 + '@push.rocks/lik': 6.0.15 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrx': 3.0.7 '@tempfix/watcher': 2.3.0 @@ -688,13 +734,36 @@ packages: '@push.rocks/smartdelay': 3.0.5 dev: true + /@push.rocks/smartexit@1.0.23: + resolution: {integrity: sha512-WmwKYcwbHBByoABhHHB+PAjr5475AtD/xBh1mDcqPrFsOOUOZq3BBUdpq25wI3ccu/SZB5IwaimiVzadls6HkA==} + dependencies: + '@push.rocks/lik': 6.0.15 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartpromise': 4.0.3 + tree-kill: 1.2.2 + dev: true + /@push.rocks/smartexpect@1.0.21: resolution: {integrity: sha512-SelJxXMYeF5VEZk0oPgcjTCM2D7vqOTUgVX/vnnGxZAl9d068LD12/BWLwKCEp0dsV3NT8rBuXJTFPZYjdsApg==} dependencies: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartpromise': 4.0.3 fast-deep-equal: 3.1.3 - dev: true + + /@push.rocks/smartexpose@1.0.5: + resolution: {integrity: sha512-GWnxbq6KdXEnIvB1csNOJgrfglLIJFAFvemYwX4rLXhG1y0JevAEwcQJSig3pln/RfdCEAu7MmK5W0uBDMwhBg==} + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartexpect': 1.0.21 + '@push.rocks/smartfile': 11.0.14 + '@push.rocks/smartformat': 1.0.3 + '@push.rocks/smartjson': 5.0.19 + '@push.rocks/smartpath': 5.0.18 + '@push.rocks/smartrequest': 2.0.22 + '@push.rocks/smartunique': 3.0.8 + '@push.rocks/smartwebdav': 1.1.2 + '@push.rocks/taskbuffer': 3.1.7 + dev: false /@push.rocks/smartfeed@1.0.11: resolution: {integrity: sha512-02uhXxQamgfBo3T12FsAdfyElnpoWuDUb08B2AE60DbIaukVx/7Mi17xwobApY1flNSr5StZDt8N8vxPhBhIXw==} @@ -714,9 +783,9 @@ packages: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile-interfaces': 1.0.7 '@push.rocks/smarthash': 3.0.4 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartmime': 1.0.6 - '@push.rocks/smartpath': 5.0.11 + '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrequest': 2.0.21 '@push.rocks/smartstream': 2.0.8 @@ -728,18 +797,18 @@ packages: js-yaml: 4.1.0 dev: true - /@push.rocks/smartfile@11.0.4: - resolution: {integrity: sha512-NXAyqYE5zNUJ9Mu/t2oWUKu21CRUI4Dvlm56rKBSczCq5xeC7EwmamTzL3Nyn6Tmu1jBpYktYL4zIx17JJOB7w==} + /@push.rocks/smartfile@11.0.14: + resolution: {integrity: sha512-Y768CKzmSCHoi7di29FAHT5F4TGQqPIh5YdBNdEH0CJLkwQYsbJO98mXow3Ya7SLmL5guPhgOuSNfn7IKs5C/Q==} dependencies: - '@push.rocks/lik': 6.0.14 + '@push.rocks/lik': 6.0.15 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile-interfaces': 1.0.7 '@push.rocks/smarthash': 3.0.4 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartmime': 1.0.6 - '@push.rocks/smartpath': 5.0.11 + '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartrequest': 2.0.21 + '@push.rocks/smartrequest': 2.0.22 '@push.rocks/smartstream': 3.0.34 '@types/fs-extra': 11.0.4 '@types/glob': 8.1.0 @@ -748,18 +817,24 @@ packages: glob: 10.3.12 js-yaml: 4.1.0 + /@push.rocks/smartformat@1.0.3: + resolution: {integrity: sha512-NjJ6akOzUk1UWxezgkIhklY+1EpFfcEbbF+DwTl8FL7sXYLHHS7L2MafuZToG+Y3INq8ahwh0jF4J0ZX/EtkIA==} + dependencies: + pretty-bytes: 6.1.1 + pretty-ms: 9.0.0 + dev: false + /@push.rocks/smarthash@3.0.4: resolution: {integrity: sha512-HJ/fSx41jm0CvSaqMLa6b2nuNK5rHAqAeAq3dAB7Sq9BCPm2M0J5ZVDTzEAH8pS91XYniUiwuE0jwPERNn9hmw==} dependencies: - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartpromise': 4.0.3 '@types/through2': 2.0.41 through2: 4.0.2 - /@push.rocks/smartjson@5.0.16: - resolution: {integrity: sha512-uUlR6VjeaIpveOVuFDPSUnYJ5vN8RzSalotDl488iZAvHipkubHdBp2GKPGuj3jo2syRGKmzlGAwJyLmh9Ptpg==} + /@push.rocks/smartjson@5.0.19: + resolution: {integrity: sha512-nhVvsY43VQjflAdOILoIWuLUq3dT+FQzALy/+QY06L5haBMAwhkB5iF+sjlVdFZbys6AftmwC+5IdarrXVNDsA==} dependencies: - '@push.rocks/smartbuffer': 1.0.7 '@push.rocks/smartenv': 5.0.12 '@push.rocks/smartstring': 4.0.15 fast-json-stable-stringify: 2.1.0 @@ -814,7 +889,7 @@ packages: '@types/default-gateway': 3.0.1 isopen: 1.3.0 public-ip: 6.0.2 - systeminformation: 5.22.6 + systeminformation: 5.22.7 dev: true /@push.rocks/smartopen@2.0.0: @@ -831,8 +906,8 @@ packages: minimatch: 9.0.4 dev: true - /@push.rocks/smartpath@5.0.11: - resolution: {integrity: sha512-dqdd7KTby0AdaWYC9gVoHDTUIixFhEvo+mmdaTdNshZsfHNkm/EDV25dA+9gJ8/yoyuCYmrwmByNYy9a+xFUeQ==} + /@push.rocks/smartpath@5.0.18: + resolution: {integrity: sha512-kIyRTlOoeEth5b4Qp8KPUxNOGNdvhb2aD0hbHfF3oGTQ0xnDdgB1l03/4bIoapHG48OrTgh4uQ5tUorykgdOzw==} /@push.rocks/smartpdf@3.0.17: resolution: {integrity: sha512-oymxajeDnwMzg20Ru7GkpYHM4KtNyTrvxt+AwXD3EjzOaJnFtevszDpCdcCruBik8BcG2XiKJIyY5PprPALvaA==} @@ -840,11 +915,11 @@ packages: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartfile': 10.0.41 '@push.rocks/smartnetwork': 3.0.2 - '@push.rocks/smartpath': 5.0.11 + '@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartpuppeteer': 2.0.2 '@push.rocks/smartunique': 3.0.8 - '@tsclass/tsclass': 4.0.52 + '@tsclass/tsclass': 4.0.54 '@types/express': 4.17.21 express: 4.19.2 pdf-merger-js: 3.4.0 @@ -880,6 +955,15 @@ packages: '@push.rocks/smarturl': 3.0.7 agentkeepalive: 4.5.0 form-data: 4.0.0 + dev: true + + /@push.rocks/smartrequest@2.0.22: + resolution: {integrity: sha512-EfgmdEsLtDJ8aNOLOh59ca1NMsiiFz54aoHRigQFQ0cuoUs6phxejIY2FdMoPFn68ubTpkztdL2P4L1/cRYyHg==} + dependencies: + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/smarturl': 3.0.7 + agentkeepalive: 4.5.0 + form-data: 4.0.0 /@push.rocks/smartrx@3.0.7: resolution: {integrity: sha512-qCWy0s3RLAgGSnaw/Gu0BNaJ59CsI6RK5OJDCCqxc7P2X/S755vuLtnAR5/0dEjdhCHXHX9ytPZx+o9g/CNiyA==} @@ -898,6 +982,17 @@ packages: which: 4.0.0 dev: true + /@push.rocks/smartshell@3.0.5: + resolution: {integrity: sha512-kHh86kpkrXHM/xgftcFQ2psU+DJrINzbeD1gIKR/I6cEXjWyYfs+I6UnFMhY3Bcpx9FdTElpRy5qVsumWURQSw==} + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartexit': 1.0.23 + '@push.rocks/smartpromise': 4.0.3 + '@types/which': 3.0.3 + tree-kill: 1.2.2 + which: 4.0.0 + dev: true + /@push.rocks/smartsitemap@2.0.3: resolution: {integrity: sha512-jIcms8V1b2mt3dS4PKNlLR1DRC8pCDWMRVbnyM/2+snZOJZonQRlQzAyX8No0EfLbfdrfnxv2IjPX13X29Re6g==} dependencies: @@ -905,28 +1000,28 @@ packages: '@push.rocks/smartfeed': 1.0.11 '@push.rocks/smartxml': 1.0.8 '@push.rocks/smartyaml': 2.0.5 - '@push.rocks/webrequest': 3.0.35 - '@tsclass/tsclass': 4.0.52 + '@push.rocks/webrequest': 3.0.37 + '@tsclass/tsclass': 4.0.54 dev: true - /@push.rocks/smartsocket@2.0.24: - resolution: {integrity: sha512-Glqv1Zi5TXgD+04P8OvTpiytyfrQxTPv67qAwZizAVVQ2zWJJgKqnIuoHT1zKP8QiKRNer+D58LCxX0ZE2XfzQ==} + /@push.rocks/smartsocket@2.0.25: + resolution: {integrity: sha512-BctNBapzP5dIbh0Y5de5NJSrtrNZnc6PH5zejiKyDKanf4/w209K8UrM+MObB1uhuFpGaq9B6AvJMTToeHfSyA==} dependencies: '@api.global/typedrequest-interfaces': 3.0.18 - '@api.global/typedserver': 3.0.27 + '@api.global/typedserver': 3.0.29 '@push.rocks/isohash': 2.0.1 '@push.rocks/isounique': 1.0.5 - '@push.rocks/lik': 6.0.14 + '@push.rocks/lik': 6.0.15 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.12 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartlog': 3.0.3 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrx': 3.0.7 '@push.rocks/smarttime': 4.0.6 - engine.io: 6.5.2 - socket.io: 4.7.2 - socket.io-client: 4.7.2 + engine.io: 6.5.4 + socket.io: 4.7.5 + socket.io-client: 4.7.5 transitivePeerDependencies: - bufferutil - supports-color @@ -958,7 +1053,7 @@ packages: /@push.rocks/smartstream@3.0.34: resolution: {integrity: sha512-fiCcIlh3Ydduv7NAjmO5hrslZXzdJ3XQqC59WWnc3T3dqwedj7FoLjl1JfY8pWUJ0bwiikLLpKOTknJ1gSmKhA==} dependencies: - '@push.rocks/lik': 6.0.14 + '@push.rocks/lik': 6.0.15 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrx': 3.0.7 @@ -977,7 +1072,7 @@ packages: /@push.rocks/smarttime@4.0.6: resolution: {integrity: sha512-1whOow0YJw/TbN758TedRRxApoZbsvyxCVpoGjXh7DE/fEEgs7RCr4vVF5jYpyXNQuNMLpKJcTsSfyQ6RvH4Aw==} dependencies: - '@push.rocks/lik': 6.0.14 + '@push.rocks/lik': 6.0.15 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartpromise': 4.0.3 croner: 7.0.7 @@ -991,11 +1086,18 @@ packages: '@types/uuid': 9.0.8 nanoid: 4.0.2 uuid: 9.0.1 - dev: true /@push.rocks/smarturl@3.0.7: resolution: {integrity: sha512-nx4EWjQD9JeO7QVbOsxd1PFeDQYoSQOOOYCZ+r7QWXHLJG52iYzgvJDCQyX6p705HDkYMJWozW2ZzhR22qLKbw==} + /@push.rocks/smartwebdav@1.1.2: + resolution: {integrity: sha512-cfIFUbeo8DOBACS/4MaBpGX+xInnGVyOIg1BkkllhTe+XQcFxvqryo56d/UEEKX+BnpMdJm3LyHYEe/iJCLWPw==} + dependencies: + '@push.rocks/smartfile': 11.0.14 + '@push.rocks/smartpath': 5.0.18 + webdav: 5.5.0 + dev: false + /@push.rocks/smartxml@1.0.8: resolution: {integrity: sha512-idrPsBj9t6oxkLZJZgWtyZK6PnQ5BVDbBErk0UfGanXgSWJc+ZEKNYjVqr850+Na3+y0CT6AQdug7pnaokygwg==} dependencies: @@ -1009,15 +1111,15 @@ packages: js-yaml: 3.14.1 dev: true - /@push.rocks/tapbundle@5.0.22: - resolution: {integrity: sha512-dwX/jtoYKynMJlkPJR7NVq6Ne4hGzBg6rCDiu+Rkp3n++QnygVi3tTNXu3Brtb6JUvx0wNfsxAFx4fuSG+oV0g==} + /@push.rocks/tapbundle@5.0.23: + resolution: {integrity: sha512-csiHxdmh5Hwf4FI94gUnPgWG+DjjEt1xffa7eLyBN3++Jvt3aSNeBsQh74YF2n6/f8q7dcb59TMYTksilU8iJg==} dependencies: '@open-wc/testing': 4.0.0 '@push.rocks/consolecolor': 2.0.2 '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.12 '@push.rocks/smartexpect': 1.0.21 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smarttime': 4.0.6 transitivePeerDependencies: @@ -1026,14 +1128,37 @@ packages: - utf-8-validate dev: true + /@push.rocks/taskbuffer@3.1.7: + resolution: {integrity: sha512-QktGVJPucqQmW/QNGnscf4FAigT1H7JWKFGFdRuDEaOHKFh9qN+PXG3QY7DtZ4jfXdGLxPN4yAufDuPSAJYFnw==} + dependencies: + '@push.rocks/lik': 6.0.15 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartlog': 3.0.3 + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/smartrx': 3.0.7 + '@push.rocks/smarttime': 4.0.6 + '@push.rocks/smartunique': 3.0.8 + dev: false + /@push.rocks/webrequest@3.0.35: resolution: {integrity: sha512-8RZJ1lznDGo/94kQDvNCKAcOPfMLFzYkcU/5gnIwpKeN7uBs2gAiKxRr71HWL2VoR5XUP1XtODIB0rnb7f/pdQ==} dependencies: '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.12 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/webstore': 2.0.13 + dev: true + + /@push.rocks/webrequest@3.0.37: + resolution: {integrity: sha512-fLN7kP6GeHFxE4UH4r9C9pjcQb0QkJxHeAMwXvbOqB9hh0MFNKhtGU7GoaTn8SVRGRMPc9UqZVNwo6u5l8Wn0A==} + dependencies: + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartenv': 5.0.12 + '@push.rocks/smartjson': 5.0.19 + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/webstore': 2.0.14 + dev: true /@push.rocks/webstore@2.0.13: resolution: {integrity: sha512-w5Q3g1TT5SDIXukAAoYVuWud+Y5ysS8qiBqPU00/re895VVZhUOSNJMNU6jyneZigmbWtwSLsxDkZHlsHWpfuA==} @@ -1041,11 +1166,25 @@ packages: '@apiglobal/typedrequest-interfaces': 2.0.1 '@push.rocks/lik': 6.0.14 '@push.rocks/smartenv': 5.0.12 - '@push.rocks/smartjson': 5.0.16 + '@push.rocks/smartjson': 5.0.19 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartrx': 3.0.7 fake-indexeddb: 4.0.2 idb: 7.1.1 + dev: true + + /@push.rocks/webstore@2.0.14: + resolution: {integrity: sha512-fhI85itwqwDrBC+Ws8eYiDMfmg6QkM8cJ2HogEIFr4VDZXUd7zCXBqlYBiQd+24cnlyhaaGPEpEJbT/rEGJS4A==} + dependencies: + '@apiglobal/typedrequest-interfaces': 2.0.1 + '@push.rocks/lik': 6.0.15 + '@push.rocks/smartenv': 5.0.12 + '@push.rocks/smartjson': 5.0.19 + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/smartrx': 3.0.7 + fake-indexeddb: 5.0.2 + idb: 8.0.0 + dev: true /@push.rocks/webstream@1.0.8: resolution: {integrity: sha512-Z1dSQ4JNVpBw3naoVWT/mXpxDYIt+bsjb6J9GKMHsTrPRytfxo2/caoJT//uAoaA0h9pIqb1WrxpYWyW1ehWPA==} @@ -1282,8 +1421,8 @@ packages: engines: {node: '>=14.16'} dev: true - /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + /@socket.io/component-emitter@3.1.1: + resolution: {integrity: sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg==} dev: true /@szmarczak/http-timer@5.0.1: @@ -1305,10 +1444,10 @@ packages: type-fest: 2.19.0 dev: true - /@tsclass/tsclass@4.0.52: - resolution: {integrity: sha512-yjASmfnDvgWA1OKYXbz4diLIrPBSk5BpPStKuVkAhrhN8Xw4lc6/oSiJpsosEd8GDwr/FPsY2lgN8/5674vM0w==} + /@tsclass/tsclass@4.0.54: + resolution: {integrity: sha512-v+Xc7M0BKNT79/kx7S5Jsc17zj+acUuMDxJtKbQgdU4H8ke3aHAHJr2KicXJeXDTcn41ZEbwJPQ1cc+bjy8bZw==} dependencies: - type-fest: 4.14.0 + type-fest: 4.17.0 dev: true /@tsconfig/node10@1.0.11: @@ -1330,7 +1469,7 @@ packages: /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/babel__code-frame@7.0.6: @@ -1341,7 +1480,7 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/buffer-json@2.0.3: @@ -1361,21 +1500,21 @@ packages: /@types/clean-css@4.2.11: resolution: {integrity: sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 source-map: 0.6.1 dev: true /@types/co-body@6.1.3: resolution: {integrity: sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==} dependencies: - '@types/node': 20.12.2 - '@types/qs': 6.9.14 + '@types/node': 20.12.7 + '@types/qs': 6.9.15 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/content-disposition@0.5.8: @@ -1396,13 +1535,13 @@ packages: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/debounce@1.2.4: @@ -1413,11 +1552,11 @@ packages: resolution: {integrity: sha512-tpu0hp+AOIzwdAHyZPzLE5pCf9uT0pb+xZ76T4S7MrY2YTVq918Q7Q2VQ3KCVQqYxM7nxuCK/SL3X97jBEIeKQ==} dev: true - /@types/express-serve-static-core@4.17.43: - resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + /@types/express-serve-static-core@4.19.0: + resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} dependencies: - '@types/node': 20.12.2 - '@types/qs': 6.9.14 + '@types/node': 20.12.7 + '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true @@ -1426,28 +1565,28 @@ packages: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.14 - '@types/serve-static': 1.15.5 + '@types/express-serve-static-core': 4.19.0 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 dev: true /@types/from2@2.3.5: resolution: {integrity: sha512-giavnjf3kNlJnE+HpZA1CQ3UKHxgehzsTuIMGda8pGMbOiLYGVNADEskey44OZcADHm/HOoBany8IV+0x28XFw==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/fs-extra@11.0.4: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 /@types/html-minifier@4.0.5: resolution: {integrity: sha512-LfE7f7MFd+YUfZnlBz8W43P4NgSObWiqyKapANsWCj63Aqeqli8/9gVsGP4CwC8jPpTTYlTopKCk9rJSuht/ew==} @@ -1495,7 +1634,7 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 /@types/keygrip@1.0.6: resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} @@ -1517,7 +1656,7 @@ packages: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/mime-types@2.1.4: @@ -1527,10 +1666,6 @@ packages: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - dev: true - /@types/minimatch@3.0.5: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} dev: true @@ -1541,18 +1676,18 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 form-data: 4.0.0 dev: false - /@types/node@18.19.28: - resolution: {integrity: sha512-J5cOGD9n4x3YGgVuaND6khm5x07MMdAKkRyXnjVR6KFhLMNh2yONGiP7Z+4+tBOt5mK+GvDTiacTOVGGpqiecw==} + /@types/node@18.19.31: + resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} dependencies: undici-types: 5.26.5 dev: false - /@types/node@20.12.2: - resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==} + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: undici-types: 5.26.5 @@ -1564,8 +1699,8 @@ packages: resolution: {integrity: sha512-ifvo6w2f5eJYlXm+HiVx67iJe8WZp87sfa683nlqED5Vnt9Z93onkokNoWqOG21EaE8fMxyKPobE+mkPEyxsdw==} dev: true - /@types/qs@6.9.14: - resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} dev: true /@types/randomatic@3.1.5: @@ -1583,15 +1718,15 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 + '@types/send': 0.17.4 dev: true /@types/sinon-chai@3.2.12: @@ -1617,7 +1752,7 @@ packages: /@types/through2@2.0.41: resolution: {integrity: sha512-ryQ0tidWkb1O1JuYvWKyMLYEtOWDqF5mHerJzKz/gQpoAaJq2l/dsMPBF0B5BNVT34rbARYJ5/tsZwLfUi2kwQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1631,7 +1766,6 @@ packages: /@types/uuid@9.0.8: resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - dev: true /@types/which@2.0.2: resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} @@ -1644,20 +1778,20 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/yauzl@2.10.3: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true optional: true @@ -1681,7 +1815,7 @@ packages: get-stream: 6.0.1 is-stream: 2.0.1 isbinaryfile: 5.0.2 - koa: 2.15.2 + koa: 2.15.3 koa-etag: 4.0.0 koa-send: 5.0.1 koa-static: 5.0.0 @@ -1884,13 +2018,14 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base-64@0.1.0: - resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} + /base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} dev: false /base64-arraybuffer-es6@0.7.0: resolution: {integrity: sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw==} engines: {node: '>=6.0.0'} + dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1975,6 +2110,10 @@ packages: ieee754: 1.2.1 dev: true + /byte-length@1.0.2: + resolution: {integrity: sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==} + dev: false + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2101,7 +2240,7 @@ packages: resolution: {integrity: sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==} dependencies: inflation: 2.1.0 - qs: 6.12.0 + qs: 6.12.1 raw-body: 2.5.2 type-is: 1.6.18 dev: true @@ -2237,6 +2376,13 @@ packages: dependencies: type-fest: 2.19.0 + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + requiresBuild: true + dev: false + optional: true + /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} @@ -2352,13 +2498,6 @@ packages: engines: {node: '>=0.3.1'} dev: true - /digest-fetch@1.3.0: - resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} - dependencies: - base-64: 0.1.0 - md5: 2.3.0 - dev: false - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2384,6 +2523,7 @@ packages: resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} dependencies: webidl-conversions: 4.0.2 + dev: true /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2412,7 +2552,7 @@ packages: /engine.io-client@6.5.3: resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.1 debug: 4.3.4 engine.io-parser: 5.2.2 ws: 8.11.0 @@ -2428,13 +2568,13 @@ packages: engines: {node: '>=10.0.0'} dev: true - /engine.io@6.5.2: - resolution: {integrity: sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==} + /engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} engines: {node: '>=10.2.0'} dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.12.2 + '@types/node': 20.12.7 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -2604,10 +2744,15 @@ packages: resolution: {integrity: sha512-SdTwEhnakbgazc7W3WUXOJfGmhH0YfG4d+dRPOFoYDRTL6U5t8tvrmkf2W/C3W1jk2ylV7Wrnj44RASqpX/lEw==} dependencies: realistic-structured-clone: 3.0.0 + dev: true + + /fake-indexeddb@5.0.2: + resolution: {integrity: sha512-cB507r5T3D55DfclY01GLkninZLfU7HXV/mhVRTnTRm5k2u+fY7Fof2dBkr80p5t7G7dlA/G5dI87QiMdPpMCQ==} + engines: {node: '>=18'} + dev: true /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -2628,7 +2773,6 @@ packages: hasBin: true dependencies: strnum: 1.0.5 - dev: true /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -2649,6 +2793,16 @@ packages: xml-js: 1.6.11 dev: true + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + requiresBuild: true + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + dev: false + optional: true + /figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -2726,6 +2880,15 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + requiresBuild: true + dependencies: + fetch-blob: 3.2.0 + dev: false + optional: true + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -2897,7 +3060,10 @@ packages: /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - dev: true + + /hot-patcher@2.0.1: + resolution: {integrity: sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==} + dev: false /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -2993,6 +3159,11 @@ packages: /idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: true + + /idb@8.0.0: + resolution: {integrity: sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw==} + dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3270,8 +3441,8 @@ packages: - supports-color dev: true - /koa@2.15.2: - resolution: {integrity: sha512-MXTeZH3M6AJ8ukW2QZ8wqO3Dcdfh2WRRmjCBkEP+NhKNCiqlO5RDqHmSnsyNrbRJrdjyvIGSJho4vQiWgQJSVA==} + /koa@2.15.3: + resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: accepts: 1.3.8 @@ -3301,26 +3472,30 @@ packages: - supports-color dev: true - /lit-element@4.0.4: - resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==} + /layerr@2.1.0: + resolution: {integrity: sha512-xDD9suWxfBYeXgqffRVH/Wqh+mqZrQcqPRn0I0ijl7iJQ7vu8gMGPt1Qop59pEW/jaIDNUN7+PX1Qk40+vuflg==} + dev: false + + /lit-element@4.0.5: + resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.2 + lit-html: 3.1.3 dev: true - /lit-html@3.1.2: - resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} + /lit-html@3.1.3: + resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} dependencies: '@types/trusted-types': 2.0.7 dev: true - /lit@3.1.2: - resolution: {integrity: sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==} + /lit@3.1.3: + resolution: {integrity: sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==} dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.4 - lit-html: 3.1.2 + lit-element: 4.0.5 + lit-html: 3.1.3 dev: true /locate-path@5.0.0: @@ -3394,6 +3569,7 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} @@ -3546,6 +3722,13 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -3591,13 +3774,16 @@ packages: resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} engines: {node: ^14 || ^16 || >=18} hasBin: true - dev: true /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true + /nested-property@4.0.0: + resolution: {integrity: sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA==} + dev: false + /no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} dependencies: @@ -3619,6 +3805,30 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + requiresBuild: true + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + optional: true /normalize-newline@4.1.0: resolution: {integrity: sha512-ff4jKqMI8Xl50/4Mms/9jPobzAV/UK+kXG2XJ/7AqOmxIx8mqfqTIHYxuAnEgJ2AQeBbLnlbmZ5+38Y9A0w/YA==} @@ -3686,18 +3896,17 @@ packages: is-wsl: 2.2.0 dev: true - /openai@4.31.0: - resolution: {integrity: sha512-JebkRnRGEGLnJt3+bJ5B7au8nBeZvJjs9baVxDmUZ5+BgafAdy6KDxJGSuyaw/IA+ErqY3jmOH5cDC2mCDJF2w==} + /openai@4.38.3: + resolution: {integrity: sha512-mIL9WtrFNOanpx98mJ+X/wkoepcxdqqu0noWFoNQHl/yODQ47YM7NEYda7qp8JfjqpLFVxY9mQhshoS/Fqac0A==} hasBin: true dependencies: - '@types/node': 18.19.28 + '@types/node': 18.19.31 '@types/node-fetch': 2.6.11 abort-controller: 3.0.0 agentkeepalive: 4.5.0 - digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.6.7 + node-fetch: 2.7.0 web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding @@ -3759,6 +3968,11 @@ packages: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} + /parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + dev: false + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true @@ -3782,6 +3996,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-posix@1.0.0: + resolution: {integrity: sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==} + dev: false + /path-scurry@1.10.2: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} @@ -3849,6 +4067,11 @@ packages: find-up: 4.1.0 dev: true + /pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} + dev: false + /pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -3862,6 +4085,13 @@ packages: dependencies: parse-ms: 3.0.0 + /pretty-ms@9.0.0: + resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} + engines: {node: '>=18'} + dependencies: + parse-ms: 4.0.0 + dev: false + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true @@ -3906,6 +4136,7 @@ packages: /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + dev: true /puppeteer@15.5.0: resolution: {integrity: sha512-+vZPU8iBSdCx1Kn5hHas80fyo0TiVyMeqLGv/1dygX2HKhAZjO9YThadbRTCoTYq0yWw+w/CysldPsEekDtjDQ==} @@ -3938,12 +4169,16 @@ packages: side-channel: 1.0.6 dev: true - /qs@6.12.0: - resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} + /qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: false + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -4009,6 +4244,7 @@ packages: domexception: 1.0.1 typeson: 6.1.0 typeson-registry: 1.0.0-alpha.39 + dev: true /relateurl@0.2.7: resolution: {integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=} @@ -4020,6 +4256,10 @@ packages: engines: {node: '>=4'} dev: true + /requires-port@1.0.0: + resolution: {integrity: sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=} + dev: false + /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: true @@ -4209,11 +4449,11 @@ packages: - utf-8-validate dev: true - /socket.io-client@4.7.2: - resolution: {integrity: sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==} + /socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.1 debug: 4.3.4 engine.io-client: 6.5.3 socket.io-parser: 4.2.4 @@ -4227,21 +4467,21 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true - /socket.io@4.7.2: - resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + /socket.io@4.7.5: + resolution: {integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==} engines: {node: '>=10.2.0'} dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 debug: 4.3.4 - engine.io: 6.5.2 + engine.io: 6.5.4 socket.io-adapter: 2.5.4 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -4337,7 +4577,6 @@ packages: /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: true /stubborn-fs@1.2.5: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} @@ -4360,8 +4599,8 @@ packages: /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - /systeminformation@5.22.6: - resolution: {integrity: sha512-hUTQX+bRgIFbv1T/z251NtwGwNIeSyWURnT2BGnsYu6dQNbkiBl4oAwk50acVfITFq1Zvb8KDNgibQK9uGlUGg==} + /systeminformation@5.22.7: + resolution: {integrity: sha512-AWxlP05KeHbpGdgvZkcudJpsmChc2Y5Eo/GvxG/iUA/Aws5LZKHAMSeAo+V+nD+nxWZaxrwpWcnx4SH3oxNL3A==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -4439,13 +4678,14 @@ packages: engines: {node: '>=8'} dependencies: punycode: 2.3.1 + dev: true /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /ts-node@10.9.2(@types/node@20.12.2)(typescript@5.1.6): + /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.1.6): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -4464,7 +4704,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -4493,8 +4733,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - /type-fest@4.14.0: - resolution: {integrity: sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==} + /type-fest@4.17.0: + resolution: {integrity: sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==} engines: {node: '>=16'} dev: true @@ -4525,10 +4765,12 @@ packages: base64-arraybuffer-es6: 0.7.0 typeson: 6.1.0 whatwg-url: 8.7.0 + dev: true /typeson@6.1.0: resolution: {integrity: sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA==} engines: {node: '>=0.1.14'} + dev: true /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} @@ -4536,6 +4778,11 @@ packages: hasBin: true dev: true + /uint8array-extras@1.1.0: + resolution: {integrity: sha512-CVaBSyOmGoFHu+zOVPbetXEXykOd8KHVBHLlqvmaMWpwcq3rewj18xVNbU5uzf48hclnNQhfNaNany2cMHFK/g==} + engines: {node: '>=18'} + dev: true + /unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} dependencies: @@ -4571,11 +4818,23 @@ packages: resolution: {integrity: sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=} dev: true + /url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: false + /url@0.11.3: resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} dependencies: punycode: 1.4.1 - qs: 6.12.0 + qs: 6.12.1 /util-deprecate@1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} @@ -4593,7 +4852,6 @@ packages: /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - dev: true /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -4614,15 +4872,36 @@ packages: engines: {node: '>= 14'} dev: false + /webdav@5.5.0: + resolution: {integrity: sha512-SHSDe6n8lBuwwyX+uePB1N1Yn35ebd3locl/LbADMWpcEoowyFdIbnH3fv17T4Jf2tOa1Vwjr/Lld3t0dOio1w==} + engines: {node: '>=14'} + dependencies: + '@buttercup/fetch': 0.2.1 + base-64: 1.0.0 + byte-length: 1.0.2 + fast-xml-parser: 4.3.6 + he: 1.2.0 + hot-patcher: 2.0.1 + layerr: 2.1.0 + md5: 2.3.0 + minimatch: 7.4.6 + nested-property: 4.0.0 + path-posix: 1.0.0 + url-join: 5.0.0 + url-parse: 1.5.10 + dev: false + /webidl-conversions@3.0.1: resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true /webidl-conversions@6.1.0: resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} engines: {node: '>=10.4'} + dev: true /whatwg-url@5.0.0: resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} @@ -4637,6 +4916,7 @@ packages: lodash: 4.17.21 tr46: 2.1.0 webidl-conversions: 6.1.0 + dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} diff --git a/qenv.yml b/qenv.yml index 14e0e21..0fd4b81 100644 --- a/qenv.yml +++ b/qenv.yml @@ -1,2 +1,4 @@ required: - - OPENAI_TOKEN \ No newline at end of file + - OPENAI_TOKEN + - ANTHROPIC_TOKEN + - PERPLEXITY_TOKEN \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index 888cd79..73e353f 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,8 +1,17 @@ import { expect, expectAsync, tap } from '@push.rocks/tapbundle'; -import * as smartai from '../ts/index.js' +import * as qenv from '@push.rocks/qenv'; -tap.test('first test', async () => { - console.log(smartai) +const testQenv = new qenv.Qenv('./', './.nogit/'); + +import * as smartai from '../ts/index.js'; + +let testSmartai: smartai.SmartAi; + +tap.test('should create a smartai instance', async () => { + testSmartai = new smartai.SmartAi({ + openaiToken: await testQenv.getEnvVarOnDemand('OPENAI_TOKEN'), + + }); }) tap.start() diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 197c815..486d47a 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartai', - version: '0.0.9', + version: '0.0.10', description: 'Provides a standardized interface for integrating and conversing with multiple AI models, supporting operations like chat and potentially audio responses.' } diff --git a/ts/abstract.classes.multimodal.ts b/ts/abstract.classes.multimodal.ts index 07c329e..0b2a3ec 100644 --- a/ts/abstract.classes.multimodal.ts +++ b/ts/abstract.classes.multimodal.ts @@ -8,8 +8,22 @@ export abstract class MultiModalModel { * stops the model */ abstract stop(): Promise; + + public abstract chat(optionsArg: { + systemMessage: string, + userMessage: string, + messageHistory: { + role: 'assistant' | 'user'; + content: string; + }[] + }): Promise<{}> - // Defines a streaming interface for chat interactions. - // The implementation will vary based on the specific AI model. - abstract chatStream(input: ReadableStream): ReadableStream; + /** + * Defines a streaming interface for chat interactions. + * The implementation will vary based on the specific AI model. + * @param input + */ + public abstract chatStream(input: ReadableStream): Promise>; + + } diff --git a/ts/classes.smartai.ts b/ts/classes.smartai.ts index 3b9409e..19ecbe3 100644 --- a/ts/classes.smartai.ts +++ b/ts/classes.smartai.ts @@ -1,18 +1,35 @@ import { Conversation } from './classes.conversation.js'; import * as plugins from './plugins.js'; +import type { AnthropicProvider } from './provider.anthropic.js'; +import type { OllamaProvider } from './provider.ollama.js'; +import type { OpenAiProvider } from './provider.openai.js'; +import type { PerplexityProvider } from './provider.perplexity.js'; export interface ISmartAiOptions { - openaiToken: string; - anthropicToken: string; + openaiToken?: string; + anthropicToken?: string; + perplexityToken?: string; + exposeCredentials?: plugins.smartexpose.ISmartExposeOptions; } export class SmartAi { public options: ISmartAiOptions; + public openaiProvider: OpenAiProvider; + public anthropicProvider: AnthropicProvider; + public perplexityProvider: PerplexityProvider; + public ollamaProvider: OllamaProvider; + constructor(optionsArg: ISmartAiOptions) { this.options = optionsArg; } + + public async start() { + + } + + public async stop() {} /** * creates an OpenAI conversation diff --git a/ts/interfaces.ts b/ts/interfaces.ts new file mode 100644 index 0000000..e69de29 diff --git a/ts/plugins.ts b/ts/plugins.ts index 5e078bc..6b93255 100644 --- a/ts/plugins.ts +++ b/ts/plugins.ts @@ -7,15 +7,19 @@ export { // @push.rocks scope import * as qenv from '@push.rocks/qenv'; +import * as smartexpose from '@push.rocks/smartexpose'; import * as smartpath from '@push.rocks/smartpath'; import * as smartpromise from '@push.rocks/smartpromise'; import * as smartfile from '@push.rocks/smartfile'; +import * as webstream from '@push.rocks/webstream'; export { qenv, + smartexpose, smartpath, smartpromise, smartfile, + webstream, } // third party diff --git a/ts/provider.ollama.ts b/ts/provider.ollama.ts new file mode 100644 index 0000000..297977d --- /dev/null +++ b/ts/provider.ollama.ts @@ -0,0 +1,3 @@ +import * as plugins from './plugins.js'; + +export class OllamaProvider {} \ No newline at end of file diff --git a/ts/provider.openai.ts b/ts/provider.openai.ts index 24c919b..068fbfb 100644 --- a/ts/provider.openai.ts +++ b/ts/provider.openai.ts @@ -4,10 +4,11 @@ import * as paths from './paths.js'; import { MultiModalModel } from './abstract.classes.multimodal.js'; export class OpenAiProvider extends MultiModalModel { + public smartexposeInstance: plugins.smartexpose.SmartExpose; private openAiToken: string; public openAiApiClient: plugins.openai.default; - constructor(openaiToken: string) { + constructor(openaiToken: string, expose) { super(); this.openAiToken = openaiToken; // Ensure the token is stored } @@ -21,49 +22,31 @@ export class OpenAiProvider extends MultiModalModel { async stop() {} - chatStream(input: ReadableStream): ReadableStream { - const decoder = new TextDecoder(); - let messageHistory: { role: 'assistant' | 'user'; content: string }[] = []; + public async chatStream(input: ReadableStream): Promise> { + // TODO: implement for OpenAI - return new ReadableStream({ - async start(controller) { - const reader = input.getReader(); - try { - let done, value; - while ((({ done, value } = await reader.read()), !done)) { - const userMessage = decoder.decode(value, { stream: true }); - messageHistory.push({ role: 'user', content: userMessage }); - - const aiResponse = await this.chat('', userMessage, messageHistory); - messageHistory.push({ role: 'assistant', content: aiResponse.message }); - - // Directly enqueue the string response instead of encoding it first - controller.enqueue(aiResponse.message); - } - controller.close(); - } catch (err) { - controller.error(err); - } - }, - }); + const returnStream = new ReadableStream(); + return returnStream; } // Implementing the synchronous chat interaction public async chat( - systemMessage: string, - userMessage: string, - messageHistory: { - role: 'assistant' | 'user'; - content: string; - }[] + optionsArg: { + systemMessage: string, + userMessage: string, + messageHistory: { + role: 'assistant' | 'user'; + content: string; + }[] + } ) { const result = await this.openAiApiClient.chat.completions.create({ model: 'gpt-4-turbo-preview', - + messages: [ - { role: 'system', content: systemMessage }, - ...messageHistory, - { role: 'user', content: userMessage }, + { role: 'system', content: optionsArg.systemMessage }, + ...optionsArg.messageHistory, + { role: 'user', content: optionsArg.userMessage }, ], }); return { @@ -71,19 +54,49 @@ export class OpenAiProvider extends MultiModalModel { }; } - public async audio(messageArg: string) { - const done = plugins.smartpromise.defer(); + public async audio(optionsArg: { message: string }): Promise { + const done = plugins.smartpromise.defer(); const result = await this.openAiApiClient.audio.speech.create({ model: 'tts-1-hd', - input: messageArg, + input: optionsArg.message, voice: 'nova', response_format: 'mp3', speed: 1, }); - const stream = result.body.pipe(plugins.smartfile.fsStream.createWriteStream(plugins.path.join(paths.nogitDir, 'output.mp3'))); - stream.on('finish', () => { - done.resolve(); - }); + const stream = result.body; + done.resolve(stream); return done.promise; } + + public async document(optionsArg: { + systemMessage: string, + userMessage: string, + documents: Uint8Array[], + messageHistory: { + role: 'assistant' | 'user'; + content: any; + }[]; + }) { + const result = await this.openAiApiClient.chat.completions.create({ + model: 'gpt-4-vision-preview', + + messages: [ + { role: 'system', content: optionsArg.systemMessage }, + ...optionsArg.messageHistory, + { role: 'user', content: [ + {type: 'text', text: optionsArg.userMessage}, + ...(() => { + const returnArray = []; + for (const document of optionsArg.documents) { + returnArray.push({type: 'image_url', image_url: }) + } + return returnArray; + })() + ] }, + ], + }); + return { + message: result.choices[0].message, + }; + } } diff --git a/ts/provider.perplexity.ts b/ts/provider.perplexity.ts new file mode 100644 index 0000000..72f8c8b --- /dev/null +++ b/ts/provider.perplexity.ts @@ -0,0 +1,3 @@ +import * as plugins from './plugins.js'; + +export class PerplexityProvider {} \ No newline at end of file