diff --git a/changelog.md b/changelog.md index 83ac9fb..eab4441 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,14 @@ # Changelog +## 2026-05-07 - 3.1.0 - feat(agent) +add provider options passthrough, tool call records, and completion validation retries + +- forward provider-specific options to the underlying streamText call +- return structured tool call records with inputs, outputs, and errors in agent results +- support validateCompletion with reprompting and configurable validation retry limits +- export ProviderOptions and tool call record types for consumers +- update tests and documentation for the new agent run options and result fields + ## 2026-04-30 - 3.0.3 - fix(build) tighten TypeScript configuration and update dependencies for zod v4 compatibility diff --git a/package.json b/package.json index fb169f4..d33bc70 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@types/node": "^25.6.0" }, "dependencies": { - "@push.rocks/smartai": "^2.0.0", + "@push.rocks/smartai": "^2.2.0", "@push.rocks/smartfs": "^1.5.1", "@push.rocks/smartrequest": "^5.0.1", "@push.rocks/smartshell": "^3.3.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9041e4e..6a97eef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@push.rocks/smartai': - specifier: ^2.0.0 - version: 2.0.0(typescript@6.0.3)(ws@8.20.0)(zod@4.4.1) + specifier: ^2.2.0 + version: 2.2.0(typescript@6.0.3)(ws@8.20.0)(zod@4.4.1) '@push.rocks/smartfs': specifier: ^1.5.1 version: 1.5.1 @@ -22,7 +22,7 @@ importers: version: 3.3.8 ai: specifier: ^6.0.170 - version: 6.0.170(zod@4.4.1) + version: 6.0.175(zod@4.4.1) zod: specifier: ^4.4.1 version: 4.4.1 @@ -51,82 +51,72 @@ importers: packages: - '@ai-sdk/anthropic@3.0.58': - resolution: {integrity: sha512-/53SACgmVukO4bkms4dpxpRlYhW8Ct6QZRe6sj1Pi5H00hYhxIrqfiLbZBGxkdRvjsBQeP/4TVGsXgH5rQeb8Q==} + '@ai-sdk/anthropic@3.0.75': + resolution: {integrity: sha512-5AV3CKwaOJFdGXhihVgvRLNrjwRn2Xmy71YygT8DYOA+5zTx93Seg2QSIS8b3tJxzZ7X4H84pEtrE8VZKBCZGA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@3.0.105': - resolution: {integrity: sha512-XpERadvLMHkYGJO4hz1Sw7Y9J705Iex48TmdZLdZdaPiFFtVgiA9qhXugLUWGAxdlXU/2N6ipoPSOwfnULZbXw==} + '@ai-sdk/gateway@3.0.110': + resolution: {integrity: sha512-sbv8+1L9/BRKydn8dMNwoMQKupA4iLJ9N+yvxgW6wMQ/94UepDf3FeYWMj/dLdzolAHZ6izRUP4s5WqQkmJ2Zg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/google@3.0.43': - resolution: {integrity: sha512-NGCgP5g8HBxrNdxvF8Dhww+UKfqAkZAmyYBvbu9YLoBkzAmGKDBGhVptN/oXPB5Vm0jggMdoLycZ8JReQM8Zqg==} + '@ai-sdk/google@3.0.68': + resolution: {integrity: sha512-bjQSuUmwStn7R0RDGl9I8kriY+xjmschzy5JN4eHPPEOdca2gS6zLc+oi8jhRiCqqROkk3U12Q9M8rmQw7gmbQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/groq@3.0.29': - resolution: {integrity: sha512-I/tUoHuOvGXbIr1dJ0CLRLA7W0UPDMtrYT5mgeb3O+P+6I5BAm/7riPwr22Xw5YTzpwQxcoDQlIczOU9XDXBpA==} + '@ai-sdk/groq@3.0.38': + resolution: {integrity: sha512-mzn+KYeROVHFZnAr3qNX+eZ4Un4BFykOcs8XDH8LLzdfgrW6fxQkdiZyww0asYGjIYaa16dkyVtglp4GV6BeUQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/mistral@3.0.24': - resolution: {integrity: sha512-krBTH2KHxtX8lCkSYSL4ZKSpn2EoJ5cNmBa9BmFL62KO1h5lYY6ivEwQb93TgY/hs2pkAIe4HJFIMX5kG1XtXg==} + '@ai-sdk/mistral@3.0.35': + resolution: {integrity: sha512-8BCt8pOWjvfIFZOVFz+koFcbydVv7Q8WM24J0gVJWDw1eOEn3Muugw4py+TuaQc8KdjP7d1HR9E4gIMN55zBgQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai-compatible@2.0.35': - resolution: {integrity: sha512-g3wA57IAQFb+3j4YuFndgkUdXyRETZVvbfAWM+UX7bZSxA3xjes0v3XKgIdKdekPtDGsh4ZX2byHD0gJIMPfiA==} + '@ai-sdk/openai-compatible@2.0.46': + resolution: {integrity: sha512-23ExGdy3p0Grfz3BAjCbIOc74TjQc5nHu72e0+kx3hshvScp32a4nnQlzzG4VT1bDZxa9yPNNUNyb5nN6vJHcQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@3.0.41': - resolution: {integrity: sha512-IZ42A+FO+vuEQCVNqlnAPYQnnUpUfdJIwn1BEDOBywiEHa23fw7PahxVtlX9zm3/zMvTW4JKPzWyvAgDu+SQ2A==} + '@ai-sdk/openai@3.0.62': + resolution: {integrity: sha512-Oy74Bztik2X25wZD9HRd83BAXOKcRvrfgz9gvVGqKj68yegf447NiElPbB6TSVb8zyiY9wv1GSGywMCxnnoF9g==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/perplexity@3.0.23': - resolution: {integrity: sha512-LyizJlT3rVJ9WgU7C8RqCf4/QuV/aZT/D3s77sa2M0FtzA9tX5VsWDBR3GN0eAKnXxbC3Lhp5PaNuvqQgoMDiw==} + '@ai-sdk/perplexity@3.0.32': + resolution: {integrity: sha512-5kPyfDOHL72Mnz0unBiW3S/jHjNMo/frPW6dBTADX1SMbFB9Yvks4k1pjixIJc1m8YBulI5hV5yTvr7uUxpzxA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@4.0.19': - resolution: {integrity: sha512-3eG55CrSWCu2SXlqq2QCsFjo3+E7+Gmg7i/oRVoSZzIodTuDSfLb3MRje67xE9RFea73Zao7Lm4mADIfUETKGg==} + '@ai-sdk/provider-utils@4.0.26': + resolution: {integrity: sha512-CsKNLKsOpvPujRlIYvoz+Ybw+kGn7J4/fIZa/58+R7iWLLfwn6ifE2G6Yq8K9XvH/I/3bzaDAJ3NhRwEMsLBKQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@4.0.24': - resolution: {integrity: sha512-oXIw1oLmuBILuvHgSj6w5LOV8oSnFRouPSv0MGkG9sRMeukZ9JnMF17kldaRQaRq8lSJIxo6aS3NzWlVmSb+4Q==} + '@ai-sdk/provider@3.0.10': + resolution: {integrity: sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw==} + engines: {node: '>=18'} + + '@ai-sdk/xai@3.0.88': + resolution: {integrity: sha512-9jc7CT+6YxdPnkMF66jX/LmFoEcRI2Cjr5CTxZcrCA8f764NPF0mGtaNRv3M0OzYwBIppgZ3F0TNhADguHWLrg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider@3.0.8': - resolution: {integrity: sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==} - engines: {node: '>=18'} - - '@ai-sdk/provider@3.0.9': - resolution: {integrity: sha512-/ngMKqKdL9dSlY/eQ3NFDzzFyw0Hix+cbFFlyuKEKcOgpHdBt/spKUvX/i0wGrDLFPYJeVvv3N0j92LxWRL7yQ==} - engines: {node: '>=18'} - - '@ai-sdk/xai@3.0.67': - resolution: {integrity: sha512-KQQIDc91dUA5IGFMnXBuvPBeraYNTdpDC1qUS+JG8vE+/299//5sZFafI1kKYUu3f3p7LaZrKXYgZ1Ni7QIRbw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - - '@anthropic-ai/sdk@0.78.0': - resolution: {integrity: sha512-PzQhR715td/m1UaaN5hHXjYB8Gl2lF9UVhrrGrZeysiF6Rb74Wc9GCB8hzLdzmQtBd1qe89F9OptgB9Za1Ib5w==} + '@anthropic-ai/sdk@0.95.0': + resolution: {integrity: sha512-7It2B76OFJH9jC/a0TicXFMq0ZZM25ei+i/mK7JnsE1Ibmo0Yfkqm+DXOHeU/ZxxKwLLGPP6qaAvKmQmgV6XhA==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -314,6 +304,10 @@ packages: resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + '@borewit/text-codec@0.2.1': resolution: {integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==} @@ -730,116 +724,116 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jimp/core@1.6.0': - resolution: {integrity: sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==} + '@jimp/core@1.6.1': + resolution: {integrity: sha512-+BoKC5G6hkrSy501zcJ2EpfnllP+avPevcBfRcZe/CW+EwEfY6X1EZ8QWyT7NpDIvEEJb1fdJnMMfUnFkxmw9A==} engines: {node: '>=18'} - '@jimp/diff@1.6.0': - resolution: {integrity: sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==} + '@jimp/diff@1.6.1': + resolution: {integrity: sha512-YkKDPdHjLgo1Api3+Bhc0GLAygldlpt97NfOKoNg1U6IUNXA6X2MgosCjPfSBiSvJvrrz1fsIR+/4cfYXBI/HQ==} engines: {node: '>=18'} - '@jimp/file-ops@1.6.0': - resolution: {integrity: sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==} + '@jimp/file-ops@1.6.1': + resolution: {integrity: sha512-T+gX6osHjprbDRad0/B71Evyre7ZdVY1z/gFGEG9Z8KOtZPKboWvPeP2UjbZYWQLy9UKCPQX1FNAnDiOPkJL7w==} engines: {node: '>=18'} - '@jimp/js-bmp@1.6.0': - resolution: {integrity: sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==} + '@jimp/js-bmp@1.6.1': + resolution: {integrity: sha512-xzWzNT4/u5zGrTT3Tme9sGU7YzIKxi13+BCQwLqACbt5DXf9SAfdzRkopZQnmDko+6In5nqaT89Gjs43/WdnYQ==} engines: {node: '>=18'} - '@jimp/js-gif@1.6.0': - resolution: {integrity: sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==} + '@jimp/js-gif@1.6.1': + resolution: {integrity: sha512-YjY2W26rQa05XhanYhRZ7dingCiNN+T2Ymb1JiigIbABY0B28wHE3v3Cf1/HZPWGu0hOg36ylaKgV5KxF2M58w==} engines: {node: '>=18'} - '@jimp/js-jpeg@1.6.0': - resolution: {integrity: sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==} + '@jimp/js-jpeg@1.6.1': + resolution: {integrity: sha512-HT9H3yOmlOFzYmdI15IYdfy6ggQhSRIaHeA+OTJSEORXBqEo97sUZu/DsgHIcX5NJ7TkJBTgZ9BZXsV6UbsyMg==} engines: {node: '>=18'} - '@jimp/js-png@1.6.0': - resolution: {integrity: sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==} + '@jimp/js-png@1.6.1': + resolution: {integrity: sha512-SZ/KVhI5UjcSzzlXsXdIi/LhJ7UShf2NkMOtVrbZQcGzsqNtynAelrOXeoTxcanfVqmNhAoVHg8yR2cYoqrYjA==} engines: {node: '>=18'} - '@jimp/js-tiff@1.6.0': - resolution: {integrity: sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==} + '@jimp/js-tiff@1.6.1': + resolution: {integrity: sha512-jDG/eJquID1M4MBlKMmDRBmz2TpXMv7TUyu2nIRUxhlUc2ogC82T+VQUkca9GJH1BBJ9dx5sSE5dGkWNjIbZxw==} engines: {node: '>=18'} - '@jimp/plugin-blit@1.6.0': - resolution: {integrity: sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==} + '@jimp/plugin-blit@1.6.1': + resolution: {integrity: sha512-MwnI7C7K81uWddY9FLw1fCOIy6SsPIUftUz36Spt7jisCn8/40DhQMlSxpxTNelnZb/2SnloFimQfRZAmHLOqQ==} engines: {node: '>=18'} - '@jimp/plugin-blur@1.6.0': - resolution: {integrity: sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==} + '@jimp/plugin-blur@1.6.1': + resolution: {integrity: sha512-lIo7Tzp5jQu30EFFSK/phXANK3citKVEjepDjQ6ljHoIFtuMRrnybnmI2Md24ulvWlDaz+hh3n6qrMb8ydwhZQ==} engines: {node: '>=18'} - '@jimp/plugin-circle@1.6.0': - resolution: {integrity: sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==} + '@jimp/plugin-circle@1.6.1': + resolution: {integrity: sha512-kK1PavY6cKHNNKce37vdV4Tmpc1/zDKngGoeOV3j+EMatoHFZUinV3s6F9aWryPs3A0xhCLZgdJ6Zeea1d5LCQ==} engines: {node: '>=18'} - '@jimp/plugin-color@1.6.0': - resolution: {integrity: sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==} + '@jimp/plugin-color@1.6.1': + resolution: {integrity: sha512-LtUN1vAP+LRlZAtTNVhDRSiXx+26Kbz3zJaG6a5k59gQ95jgT5mknnF8lxkHcqJthM4MEk3/tPxkdJpEybyF/A==} engines: {node: '>=18'} - '@jimp/plugin-contain@1.6.0': - resolution: {integrity: sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==} + '@jimp/plugin-contain@1.6.1': + resolution: {integrity: sha512-m0qhrfA8jkTqretGv4w+T/ADFR4GwBpE0sCOC2uJ0dzr44/ddOMsIdrpi89kabqYiPYIrxkgdCVCLm3zn1Vkkg==} engines: {node: '>=18'} - '@jimp/plugin-cover@1.6.0': - resolution: {integrity: sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==} + '@jimp/plugin-cover@1.6.1': + resolution: {integrity: sha512-hZytnsth0zoll6cPf434BrT+p/v569Wr5tyO6Dp0dH1IDPhzhB5F38sZGMLDo7bzQiN9JFVB3fxkcJ/WYCJ3Mg==} engines: {node: '>=18'} - '@jimp/plugin-crop@1.6.0': - resolution: {integrity: sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==} + '@jimp/plugin-crop@1.6.1': + resolution: {integrity: sha512-EerRSLlclXyKDnYc/H9w/1amZW7b7v3OGi/VlerPd2M/pAu5X8TkyYWtfqYCXnNp1Ixtd8oCo9zGfY9zoXT4rg==} engines: {node: '>=18'} - '@jimp/plugin-displace@1.6.0': - resolution: {integrity: sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==} + '@jimp/plugin-displace@1.6.1': + resolution: {integrity: sha512-K07QVl7xQwIfD6KfxRV/c3E9e7ZBXxUXdWuvoTWcKHL2qV48MOF5Nqbz/aJW4ThnQARIsxvYlZjPFiqkCjlU+g==} engines: {node: '>=18'} - '@jimp/plugin-dither@1.6.0': - resolution: {integrity: sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==} + '@jimp/plugin-dither@1.6.1': + resolution: {integrity: sha512-+2V+GCV2WycMoX1/z977TkZ8Zq/4MVSKElHYatgUqtwXMi2fDK2gKYU2g9V39IqFvTJsTIsK0+58VFz/ROBVew==} engines: {node: '>=18'} - '@jimp/plugin-fisheye@1.6.0': - resolution: {integrity: sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==} + '@jimp/plugin-fisheye@1.6.1': + resolution: {integrity: sha512-XtS5ZyoZ0vxZxJ6gkqI63SivhtI58vX95foMPM+cyzYkRsJXMOYCr8DScxF5bp4Xr003NjYm/P+7+08tibwzHA==} engines: {node: '>=18'} - '@jimp/plugin-flip@1.6.0': - resolution: {integrity: sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==} + '@jimp/plugin-flip@1.6.1': + resolution: {integrity: sha512-ws38W/sGj7LobNRayQ83garxiktOyWxM5vO/y4a/2cy9v65SLEUzVkrj+oeAaUSSObdz4HcCEla7XtGlnAGAaA==} engines: {node: '>=18'} - '@jimp/plugin-hash@1.6.0': - resolution: {integrity: sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==} + '@jimp/plugin-hash@1.6.1': + resolution: {integrity: sha512-sZt6ZcMX6i8vFWb4GYnw0pR/o9++ef0dTVcboTB5B/g7nrxCODIB4wfEkJ/YqZM5wUvol77K1qeS0/rVO6z21A==} engines: {node: '>=18'} - '@jimp/plugin-mask@1.6.0': - resolution: {integrity: sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==} + '@jimp/plugin-mask@1.6.1': + resolution: {integrity: sha512-SIG0/FcmEj3tkwFxc7fAGLO8o4uNzMpSOdQOhbCgxefQKq5wOVMk9BQx/sdMPBwtMLr9WLq0GzLA/rk6t2v20A==} engines: {node: '>=18'} - '@jimp/plugin-print@1.6.0': - resolution: {integrity: sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==} + '@jimp/plugin-print@1.6.1': + resolution: {integrity: sha512-BYVz/X3Xzv8XYilVeDy11NOp0h7BTDjlOtu0BekIFHP1yHVd24AXNzbOy52XlzYZWQ0Dl36HOHEpl/nSNrzc6w==} engines: {node: '>=18'} - '@jimp/plugin-quantize@1.6.0': - resolution: {integrity: sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==} + '@jimp/plugin-quantize@1.6.1': + resolution: {integrity: sha512-J2En9PLURfP+vwYDtuZ9T8yBW6BWYZBScydAjRiPBmJfEhTcNQqiiQODrZf7EqbbX/Sy5H6dAeRiqkgoV9N6Ww==} engines: {node: '>=18'} - '@jimp/plugin-resize@1.6.0': - resolution: {integrity: sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==} + '@jimp/plugin-resize@1.6.1': + resolution: {integrity: sha512-CLkrtJoIz2HdWnpYiN6p8KYcPc00rCH/SUu6o+lfZL05Q4uhecJlnvXuj9x+U6mDn3ldPmJj6aZqMHuUJzdVqg==} engines: {node: '>=18'} - '@jimp/plugin-rotate@1.6.0': - resolution: {integrity: sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==} + '@jimp/plugin-rotate@1.6.1': + resolution: {integrity: sha512-nOjVjbbj705B02ksysKnh0POAwEBXZtJ9zQ5qC+X7Tavl3JNn+P3BzQovbBxLPSbUSld6XID9z5ijin4PtOAUg==} engines: {node: '>=18'} - '@jimp/plugin-threshold@1.6.0': - resolution: {integrity: sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==} + '@jimp/plugin-threshold@1.6.1': + resolution: {integrity: sha512-JOKv9F8s6tnVLf4sB/2fF0F339EFnHvgEdFYugO6VhowKLsap0pEZmLyE/DlRnYtIj2RddHZVxVMp/eKJ04l2Q==} engines: {node: '>=18'} - '@jimp/types@1.6.0': - resolution: {integrity: sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==} + '@jimp/types@1.6.1': + resolution: {integrity: sha512-leI7YbveTNi565m910XgIOwXyuu074H5qazAD1357HImJSv2hqxnWXpwxQbadGWZ7goZRYBDZy5lpqud0p7q5w==} engines: {node: '>=18'} - '@jimp/utils@1.6.0': - resolution: {integrity: sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==} + '@jimp/utils@1.6.1': + resolution: {integrity: sha512-veFPRd93FCnS7AgmCkPgARVGoDRrJ9cm1ujuNyA+UfQ5VKbED2002sm5XfFLFwTsKC8j04heTrwe+tU1dluXOw==} engines: {node: '>=18'} '@lit-labs/ssr-dom-shim@1.5.1': @@ -940,8 +934,8 @@ packages: resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} engines: {node: '>=12'} - '@puppeteer/browsers@2.10.13': - resolution: {integrity: sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==} + '@puppeteer/browsers@2.13.1': + resolution: {integrity: sha512-zmS4RTK9fbrc++WlAJhxYbfz3IjDeOmkK/CwwbLmk7ydfS9e2CiEeRJHEPvjDVElO/bwXbidwGA37Bsm6LzCnQ==} engines: {node: '>=18'} hasBin: true @@ -966,8 +960,8 @@ packages: '@push.rocks/qenv@6.1.3': resolution: {integrity: sha512-+z2hsAU/7CIgpYLFqvda8cn9rUBMHqLdQLjsFfRn5jPoD7dJ5rFlpkbhfM4Ws8mHMniwWaxGKo+q/YBhtzRBLg==} - '@push.rocks/smartai@2.0.0': - resolution: {integrity: sha512-7ljFKOVwqha+hMYuOkbwoSY8eA8sK2EpckrqIthOgVU3Gr6ZgL/yjQZSUUY6cHNz9G17+sb2LQ7oBk/YQqguGA==} + '@push.rocks/smartai@2.2.0': + resolution: {integrity: sha512-dB9DDguVbvKNfVjVPME2vZqAcZEZBehlv7VpFL+ECTf6jBf4tNUtCfw/a2YlF1uE7EL7rgHFttLbGXvUuaxk4A==} '@push.rocks/smartarchive@4.2.4': resolution: {integrity: sha512-uiqVAXPxmr8G5rv3uZvZFMOCt8l7cZC3nzvsy4YQqKf/VkPhKIEX+b7LkAeNlxPSYUiBQUkNRoawg9+5BaMcHg==} @@ -978,8 +972,8 @@ packages: '@push.rocks/smartbucket@4.6.1': resolution: {integrity: sha512-dh2xfAKOf9MKcJkkWImGCpoUmh10gDYQbeyEMO478H0ozxsf9mxgImRMX4a57BYzXGJ1LtoImdTqX2sFoltB3g==} - '@push.rocks/smartbuffer@3.0.5': - resolution: {integrity: sha512-pWYF08Mn8s/KF/9nHRk7pZPzuMjmYVQay2c5gGexdayxn1W4eCSYYhWH73vR2JBfGeGq/izbRNuUuEaIEeTIKA==} + '@push.rocks/smartbuffer@3.0.6': + resolution: {integrity: sha512-1jXfAOsisgDZS+L1E5OCLcM1dseO2rpuqGtSbeB89IDMiBeBTYbzcQ7ZkQQpFIzEzpzjvtl6COT6ZVxCtGnhGA==} '@push.rocks/smartcli@4.0.20': resolution: {integrity: sha512-gCo4ItvsPj8WoVAJw/6vkuoGA5FtIoACux2ktcCeH0nrFe7/xGR6waJ1aZcYAi7QN4gi52TlsgwuKz7BzXqhmQ==} @@ -996,8 +990,8 @@ packages: '@push.rocks/smartdata@5.16.7': resolution: {integrity: sha512-bu/YSIjQcwxWXkAsuhqE6zs7eT+bTIKV8+/H7TbbjpzeioLCyB3dZ/41cLZk37c/EYt4d4GHgZ0ww80OiKOUMg==} - '@push.rocks/smartdelay@3.0.5': - resolution: {integrity: sha512-mUuI7kj2f7ztjpic96FvRIlf2RsKBa5arw81AHNsndbxO6asRcxuWL8dTVxouEIK8YsBUlj0AsrCkHhMbLQdHw==} + '@push.rocks/smartdelay@3.1.0': + resolution: {integrity: sha512-59xveBMbWmbFhh/rqhQnYG/klg/VONG9hV8+RQ7ftqsNRkcmUT+VM5etAbODgAUvsF4lxK+xVR0tbZOo0kGhRQ==} '@push.rocks/smartdns@7.9.0': resolution: {integrity: sha512-1nDUfyXQo6j9HTUfcjE+BLeAv9QZ7WtAsM1V28zIoFdUpjNg/5g382L024H73PHsxh6lSYNhYYmFvWqzFQhXKg==} @@ -1035,8 +1029,8 @@ packages: '@push.rocks/smartinteract@2.0.16': resolution: {integrity: sha512-eltvVRRUKBKd77DSFA4DPY2g4V4teZLNe8A93CDy/WglglYcUjxMoLY/b0DFTWCWKYT+yjk6Fe6p0FRrvX9Yvg==} - '@push.rocks/smartjimp@1.2.0': - resolution: {integrity: sha512-SPz8p2ZuphNqIXK/UDsNFrnpJn/jr6FbuBSMQc0V2v2ffQIF32ZqktKQpXpitiqD1K5JEYS56JAhlYHgrAu7yw==} + '@push.rocks/smartjimp@1.2.1': + resolution: {integrity: sha512-tIVS2sEqBjZTPX5U7a+dDBSZ+kfz7CdQwkEIhW6DEl6cuJ9uz2eH+pnPY0oZhw4g3q8hyW9Lf6lb8+nMmTyudw==} '@push.rocks/smartjson@5.2.0': resolution: {integrity: sha512-710e8UwovRfPgUtaBHcd6unaODUjV5fjxtGcGCqtaTcmvOV6VpasdVfT66xMDzQmWH2E9ZfHDJeso9HdDQzNQA==} @@ -1083,14 +1077,14 @@ packages: '@push.rocks/smartpath@6.0.0': resolution: {integrity: sha512-r94u1MbBaIOSy+517PZp2P7SuZPSe9LkwJ8l3dXQKHeIOri/zDxk/RQPiFM+j4N9301ztkRyhvRj7xgUDroOsg==} - '@push.rocks/smartpdf@4.2.1': - resolution: {integrity: sha512-Jp27u6takT7SPcyMNXVXtTZaw0qyJAp1ovohQD5xGu8JJ4D3GSTCtIGWcjupUTlxHDxl0Fz2eEgRtUd3Y5ANmA==} + '@push.rocks/smartpdf@4.2.2': + resolution: {integrity: sha512-xQWRChCLcM/sUrRuanvIcND/dKrnCYfL8Rr3kzSIPgSoDSmdDbd4kz7lLAHEPTsCezIwg2VqxFidW+zMNZ5Z1Q==} - '@push.rocks/smartpromise@4.2.3': - resolution: {integrity: sha512-Ycg/TJR+tMt+S3wSFurOpEoW6nXv12QBtKXgBcjMZ4RsdO28geN46U09osPn9N9WuwQy1PkmTV5J/V4F9U8qEw==} + '@push.rocks/smartpromise@4.2.4': + resolution: {integrity: sha512-8FUyYt94hOIY9mqHjitn4h69u0jbEtTF2RKKw2DpiTVFjpDTk9gXbVHZ/V+xEcBrN4mrzdQES0OiDmkNPoddEQ==} - '@push.rocks/smartpuppeteer@2.0.5': - resolution: {integrity: sha512-yK/qSeWVHIGWRp3c8S5tfdGP6WCKllZC4DR8d8CQlEjszOSBmHtlTdyyqOMBZ/BA4kd+eU5f3A1r4K2tGYty1g==} + '@push.rocks/smartpuppeteer@2.0.6': + resolution: {integrity: sha512-G+8cyDERvbXQcb9Sd8lnYdWYz8b3Mv2LfFf1ULmucDqQhcRHvxrWX/dKsvBZrwKPR4Wg+795Dyd+E1iOOh3tHw==} '@push.rocks/smartrequest@2.1.0': resolution: {integrity: sha512-3eHLTRInHA+u+W98TqJwgTES7rRimBAsJC4JxVNQC3UUezmblAhM5/TIQsEBQTsbjAY8SeQKy6NHzW6iTiaD8w==} @@ -1561,6 +1555,9 @@ packages: resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} engines: {node: '>=18.0.0'} + '@stablelib/base64@1.0.1': + resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -1716,10 +1713,6 @@ packages: resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==} engines: {node: '>= 20'} - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - acme-client@5.4.0: resolution: {integrity: sha512-mORqg60S8iML6XSmVjqjGHJkINrCGLMj2QvDmFzI9vIlv1RGlyjmw3nrzaINJjkNsYXC41XhhD5pfy7CtuGcbA==} engines: {node: '>= 16'} @@ -1732,8 +1725,8 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - ai@6.0.170: - resolution: {integrity: sha512-FWTKeGGDRcYJtPWIrdZDSuvOW5LCjI2NZUJmaml8OTOaPEsXnFdFvmawCXbT+wTGxyWKJTgZ9sZtCjbJsmjM2Q==} + ai@6.0.175: + resolution: {integrity: sha512-6fFFHzbh6FIZnYc31V6osOxq25ABJYCShfG0O6ajHiA4FB/DgnPi1mP8cO5aAU3HNSbQHiMazdlh9bIsp97mVA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -1792,8 +1785,8 @@ packages: axios@1.13.2: resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} - b4a@1.8.0: - resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} + b4a@1.8.1: + resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} peerDependencies: react-native-b4a: '*' peerDependenciesMeta: @@ -1818,8 +1811,8 @@ packages: bare-abort-controller: optional: true - bare-fs@4.5.5: - resolution: {integrity: sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==} + bare-fs@4.7.1: + resolution: {integrity: sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -1834,22 +1827,22 @@ packages: bare-path@3.0.0: resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.8.0: - resolution: {integrity: sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==} + bare-stream@2.13.1: + resolution: {integrity: sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==} peerDependencies: + bare-abort-controller: '*' bare-buffer: '*' bare-events: '*' peerDependenciesMeta: + bare-abort-controller: + optional: true bare-buffer: optional: true bare-events: optional: true - bare-url@2.3.2: - resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bare-url@2.4.3: + resolution: {integrity: sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==} basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} @@ -1881,9 +1874,6 @@ packages: buffer-crc32@0.2.13: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -1930,8 +1920,8 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - chromium-bidi@11.0.0: - resolution: {integrity: sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==} + chromium-bidi@14.0.0: + resolution: {integrity: sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==} peerDependencies: devtools-protocol: '*' @@ -1973,8 +1963,8 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -2051,8 +2041,8 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - devtools-protocol@0.0.1521046: - resolution: {integrity: sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==} + devtools-protocol@0.0.1608973: + resolution: {integrity: sha512-Tpm17fxYzt+J7VrGdc1k8YdRqS3YV7se/M6KeemEqvUbq/n7At1rWVuXMxQgpWkdwSdIEKYbU//Bve+Shm4YNQ==} dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} @@ -2128,20 +2118,12 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} events-universal@1.0.1: resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - eventsource-parser@3.0.8: resolution: {integrity: sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==} engines: {node: '>=18.0.0'} @@ -2174,6 +2156,9 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + fast-xml-builder@1.1.5: resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} @@ -2194,16 +2179,12 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - file-type@16.5.4: - resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} - engines: {node: '>=10'} - file-type@19.6.0: resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==} engines: {node: '>=18'} - file-type@21.3.0: - resolution: {integrity: sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==} + file-type@21.3.4: + resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==} engines: {node: '>=20'} find-cache-dir@3.3.2: @@ -2448,8 +2429,8 @@ packages: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} - jimp@1.6.0: - resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} + jimp@1.6.1: + resolution: {integrity: sha512-hNQh6rZtWfSVWSNVmvq87N5BPJsNH7k7I7qyrXf9DOma9xATQk3fsyHazCQe51nCjdkoWdTmh0vD7bjVSLoxxw==} engines: {node: '>=18'} jpeg-js@0.4.4: @@ -2810,8 +2791,8 @@ packages: once@1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} - openai@6.27.0: - resolution: {integrity: sha512-osTKySlrdYrLYTt0zjhY8yp0JUBmWDCN+Q+QxsV4xMQnnoVFpylgKGgxwN8sSdTNw0G4y+WUXs4eCMWpyDNWZQ==} + openai@6.36.0: + resolution: {integrity: sha512-Has2YbIusMq9wQEierFsgf9c783dy1y9arX459LmphNacEkkM5yxi2RIyXP0LmkOroQyW19iTwALHL8Yf26UKA==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -2928,10 +2909,6 @@ packages: hasBin: true bundledDependencies: [] - peek-readable@4.1.0: - resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} - engines: {node: '>=8'} - peek-readable@5.4.2: resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} engines: {node: '>=14.16'} @@ -2966,10 +2943,6 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} - process@0.11.10: - resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} - engines: {node: '>= 0.6.0'} - progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -2987,19 +2960,19 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@24.31.0: - resolution: {integrity: sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==} + puppeteer-core@24.43.0: + resolution: {integrity: sha512-cCRNXsUlhyPoKDz6+TiSpfZpRS3mD6Y1YFKhkdr6ik6TMfuJb7fAtXq9ThUFc4sphxObDk3BuAvdxc1Y6YOnqQ==} engines: {node: '>=18'} - puppeteer@24.31.0: - resolution: {integrity: sha512-q8y5yLxLD8xdZdzNWqdOL43NbfvUOp60SYhaLZQwHC9CdKldxQKXOyJAciOr7oUJfyAH/KgB2wKvqT2sFKoVXA==} + puppeteer@24.43.0: + resolution: {integrity: sha512-DRnMFz+J3s4lFUQcjqKl0/7h0jzlCZuUFU9lNjtKrnMl5WI1RwCaIItpHVu9empuPyUreYueN0sUW3/pnfdqsg==} engines: {node: '>=18'} hasBin: true @@ -3022,14 +2995,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.7.0: - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readable-web-to-node-stream@3.0.4: - resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} - engines: {node: '>=8'} - readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} @@ -3140,8 +3105,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-xml-to-json@1.2.3: - resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} + simple-xml-to-json@1.2.7: + resolution: {integrity: sha512-mz9VXphOxQWX3eQ/uXCtm6upltoN0DLx8Zb5T4TFC4FHB7S9FDPGre8CfLWqPWQQH/GrQYd2AXhhVM5LDpYx6Q==} engines: {node: '>=20.12.2'} smart-buffer@4.2.0: @@ -3173,8 +3138,11 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} - streamx@2.23.0: - resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} + standardwebhooks@1.0.0: + resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} + + streamx@2.25.0: + resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -3205,14 +3173,10 @@ packages: strnum@2.2.3: resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} - strtok3@10.3.4: - resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} + strtok3@10.3.5: + resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} engines: {node: '>=18'} - strtok3@6.3.0: - resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} - engines: {node: '>=10'} - strtok3@9.1.1: resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} engines: {node: '>=16'} @@ -3227,17 +3191,17 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tar-fs@3.1.1: - resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + tar-fs@3.1.2: + resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==} - tar-stream@3.1.8: - resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} + tar-stream@3.2.0: + resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} - text-decoder@1.2.3: - resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} threads@1.7.0: resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} @@ -3259,10 +3223,6 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - token-types@4.2.1: - resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} - engines: {node: '>=10'} - token-types@6.1.2: resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} engines: {node: '>=14.16'} @@ -3317,8 +3277,8 @@ packages: resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} engines: {node: '>=20'} - typed-query-selector@2.12.0: - resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + typed-query-selector@2.12.2: + resolution: {integrity: sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==} typescript@6.0.2: resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} @@ -3389,8 +3349,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - webdriver-bidi-protocol@0.3.9: - resolution: {integrity: sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==} + webdriver-bidi-protocol@0.4.1: + resolution: {integrity: sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==} webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -3486,87 +3446,77 @@ packages: snapshots: - '@ai-sdk/anthropic@3.0.58(zod@4.4.1)': + '@ai-sdk/anthropic@3.0.75(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/gateway@3.0.105(zod@4.4.1)': + '@ai-sdk/gateway@3.0.110(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.9 - '@ai-sdk/provider-utils': 4.0.24(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) '@vercel/oidc': 3.2.0 zod: 4.4.1 - '@ai-sdk/google@3.0.43(zod@4.4.1)': + '@ai-sdk/google@3.0.68(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/groq@3.0.29(zod@4.4.1)': + '@ai-sdk/groq@3.0.38(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/mistral@3.0.24(zod@4.4.1)': + '@ai-sdk/mistral@3.0.35(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/openai-compatible@2.0.35(zod@4.4.1)': + '@ai-sdk/openai-compatible@2.0.46(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/openai@3.0.41(zod@4.4.1)': + '@ai-sdk/openai@3.0.62(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/perplexity@3.0.23(zod@4.4.1)': + '@ai-sdk/perplexity@3.0.32(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@ai-sdk/provider-utils@4.0.19(zod@4.4.1)': + '@ai-sdk/provider-utils@4.0.26(zod@4.4.1)': dependencies: - '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider': 3.0.10 '@standard-schema/spec': 1.1.0 eventsource-parser: 3.0.8 zod: 4.4.1 - '@ai-sdk/provider-utils@4.0.24(zod@4.4.1)': - dependencies: - '@ai-sdk/provider': 3.0.9 - '@standard-schema/spec': 1.1.0 - eventsource-parser: 3.0.8 - zod: 4.4.1 - - '@ai-sdk/provider@3.0.8': + '@ai-sdk/provider@3.0.10': dependencies: json-schema: 0.4.0 - '@ai-sdk/provider@3.0.9': + '@ai-sdk/xai@3.0.88(zod@4.4.1)': dependencies: - json-schema: 0.4.0 - - '@ai-sdk/xai@3.0.67(zod@4.4.1)': - dependencies: - '@ai-sdk/openai-compatible': 2.0.35(zod@4.4.1) - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.19(zod@4.4.1) + '@ai-sdk/openai-compatible': 2.0.46(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) zod: 4.4.1 - '@anthropic-ai/sdk@0.78.0(zod@4.4.1)': + '@anthropic-ai/sdk@0.95.0(zod@4.4.1)': dependencies: json-schema-to-ts: 3.1.1 + standardwebhooks: 1.0.0 optionalDependencies: zod: 4.4.1 @@ -3579,10 +3529,10 @@ snapshots: '@api.global/typedrequest-interfaces': 3.0.19 '@push.rocks/isounique': 1.0.5 '@push.rocks/lik': 6.4.1 - '@push.rocks/smartbuffer': 3.0.5 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartbuffer': 3.0.6 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartguard': 3.1.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/webrequest': 4.0.5 '@push.rocks/webstream': 1.0.10 @@ -4043,6 +3993,8 @@ snapshots: '@babel/runtime@7.28.6': {} + '@babel/runtime@7.29.2': {} + '@borewit/text-codec@0.2.1': {} '@cfworker/json-schema@4.1.1': {} @@ -4055,7 +4007,7 @@ snapshots: dependencies: '@api.global/typedrequest': 3.3.0 '@api.global/typedrequest-interfaces': 3.0.19 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 broadcast-channel: 7.3.0 '@design.estate/dees-domtools@2.5.6': @@ -4063,10 +4015,10 @@ snapshots: '@api.global/typedrequest': 3.3.0 '@design.estate/dees-comms': 1.0.30 '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartjson': 6.0.1 '@push.rocks/smartmarkdown': 3.0.3 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrouter': 1.3.3 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstate': 2.3.1 @@ -4195,12 +4147,12 @@ snapshots: '@git.zone/tspublish': 1.11.5 '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.20 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfile': 13.1.3 '@push.rocks/smartfs': 1.5.1 '@push.rocks/smartlog': 3.2.2 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 typescript: 6.0.3 transitivePeerDependencies: - '@nuxt/kit' @@ -4217,13 +4169,13 @@ snapshots: '@push.rocks/early': 4.0.4 '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartconfig': 6.1.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfs': 1.5.1 '@push.rocks/smartinteract': 2.0.16 '@push.rocks/smartlog': 3.2.2 '@push.rocks/smartlog-destination-local': 9.0.2 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartspawn': 3.0.3 '@rspack/core': 1.7.11 '@types/html-minifier': 4.0.6 @@ -4243,7 +4195,7 @@ snapshots: '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartcli': 4.0.20 '@push.rocks/smartconfig': 6.1.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfile': 13.1.3 '@push.rocks/smartfs': 1.5.1 '@push.rocks/smartlog': 3.2.2 @@ -4275,7 +4227,7 @@ snapshots: '@push.rocks/qenv': 6.1.3 '@push.rocks/smartbrowser': 2.0.11(typescript@6.0.3) '@push.rocks/smartcrypto': 2.0.4 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartexpect': 2.5.0 '@push.rocks/smartfile': 13.1.3 @@ -4285,7 +4237,7 @@ snapshots: '@push.rocks/smartmongo': 5.1.0(socks@2.8.7) '@push.rocks/smartnetwork': 4.7.1 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrequest': 5.0.1 '@push.rocks/smartserve': 2.0.4 '@push.rocks/smartshell': 3.3.8 @@ -4517,193 +4469,227 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jimp/core@1.6.0': + '@jimp/core@1.6.1': dependencies: - '@jimp/file-ops': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/file-ops': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 await-to-js: 3.0.0 exif-parser: 0.1.12 - file-type: 16.5.4 + file-type: 21.3.4 mime: 3.0.0 + transitivePeerDependencies: + - supports-color - '@jimp/diff@1.6.0': + '@jimp/diff@1.6.1': dependencies: - '@jimp/plugin-resize': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/plugin-resize': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 pixelmatch: 5.3.0 + transitivePeerDependencies: + - supports-color - '@jimp/file-ops@1.6.0': {} + '@jimp/file-ops@1.6.1': {} - '@jimp/js-bmp@1.6.0': + '@jimp/js-bmp@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 bmp-ts: 1.0.9 + transitivePeerDependencies: + - supports-color - '@jimp/js-gif@1.6.0': + '@jimp/js-gif@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 gifwrap: 0.10.1 omggif: 1.0.10 + transitivePeerDependencies: + - supports-color - '@jimp/js-jpeg@1.6.0': + '@jimp/js-jpeg@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 jpeg-js: 0.4.4 + transitivePeerDependencies: + - supports-color - '@jimp/js-png@1.6.0': + '@jimp/js-png@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 pngjs: 7.0.0 + transitivePeerDependencies: + - supports-color - '@jimp/js-tiff@1.6.0': + '@jimp/js-tiff@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 utif2: 4.1.0 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-blit@1.6.0': + '@jimp/plugin-blit@1.6.1': dependencies: - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 zod: 3.25.76 - '@jimp/plugin-blur@1.6.0': + '@jimp/plugin-blur@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/utils': 1.6.1 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-circle@1.6.0': + '@jimp/plugin-circle@1.6.1': dependencies: - '@jimp/types': 1.6.0 + '@jimp/types': 1.6.1 zod: 3.25.76 - '@jimp/plugin-color@1.6.0': + '@jimp/plugin-color@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 tinycolor2: 1.6.0 zod: 3.25.76 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-contain@1.6.0': + '@jimp/plugin-contain@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/plugin-blit': 1.6.0 - '@jimp/plugin-resize': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/plugin-blit': 1.6.1 + '@jimp/plugin-resize': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 + zod: 3.25.76 + transitivePeerDependencies: + - supports-color + + '@jimp/plugin-cover@1.6.1': + dependencies: + '@jimp/core': 1.6.1 + '@jimp/plugin-crop': 1.6.1 + '@jimp/plugin-resize': 1.6.1 + '@jimp/types': 1.6.1 + zod: 3.25.76 + transitivePeerDependencies: + - supports-color + + '@jimp/plugin-crop@1.6.1': + dependencies: + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 + zod: 3.25.76 + transitivePeerDependencies: + - supports-color + + '@jimp/plugin-displace@1.6.1': + dependencies: + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 zod: 3.25.76 - '@jimp/plugin-cover@1.6.0': + '@jimp/plugin-dither@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/plugin-crop': 1.6.0 - '@jimp/plugin-resize': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/types': 1.6.1 + + '@jimp/plugin-fisheye@1.6.1': + dependencies: + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 zod: 3.25.76 - '@jimp/plugin-crop@1.6.0': + '@jimp/plugin-flip@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/types': 1.6.1 zod: 3.25.76 - '@jimp/plugin-displace@1.6.0': + '@jimp/plugin-hash@1.6.1': dependencies: - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 - zod: 3.25.76 - - '@jimp/plugin-dither@1.6.0': - dependencies: - '@jimp/types': 1.6.0 - - '@jimp/plugin-fisheye@1.6.0': - dependencies: - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 - zod: 3.25.76 - - '@jimp/plugin-flip@1.6.0': - dependencies: - '@jimp/types': 1.6.0 - zod: 3.25.76 - - '@jimp/plugin-hash@1.6.0': - dependencies: - '@jimp/core': 1.6.0 - '@jimp/js-bmp': 1.6.0 - '@jimp/js-jpeg': 1.6.0 - '@jimp/js-png': 1.6.0 - '@jimp/js-tiff': 1.6.0 - '@jimp/plugin-color': 1.6.0 - '@jimp/plugin-resize': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/js-bmp': 1.6.1 + '@jimp/js-jpeg': 1.6.1 + '@jimp/js-png': 1.6.1 + '@jimp/js-tiff': 1.6.1 + '@jimp/plugin-color': 1.6.1 + '@jimp/plugin-resize': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 any-base: 1.1.0 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-mask@1.6.0': + '@jimp/plugin-mask@1.6.1': dependencies: - '@jimp/types': 1.6.0 + '@jimp/types': 1.6.1 zod: 3.25.76 - '@jimp/plugin-print@1.6.0': + '@jimp/plugin-print@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/js-jpeg': 1.6.0 - '@jimp/js-png': 1.6.0 - '@jimp/plugin-blit': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/js-jpeg': 1.6.1 + '@jimp/js-png': 1.6.1 + '@jimp/plugin-blit': 1.6.1 + '@jimp/types': 1.6.1 parse-bmfont-ascii: 1.0.6 parse-bmfont-binary: 1.0.6 parse-bmfont-xml: 1.1.6 - simple-xml-to-json: 1.2.3 + simple-xml-to-json: 1.2.7 zod: 3.25.76 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-quantize@1.6.0': + '@jimp/plugin-quantize@1.6.1': dependencies: image-q: 4.0.0 zod: 3.25.76 - '@jimp/plugin-resize@1.6.0': + '@jimp/plugin-resize@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/types': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/types': 1.6.1 zod: 3.25.76 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-rotate@1.6.0': + '@jimp/plugin-rotate@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/plugin-crop': 1.6.0 - '@jimp/plugin-resize': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/plugin-crop': 1.6.1 + '@jimp/plugin-resize': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 zod: 3.25.76 + transitivePeerDependencies: + - supports-color - '@jimp/plugin-threshold@1.6.0': + '@jimp/plugin-threshold@1.6.1': dependencies: - '@jimp/core': 1.6.0 - '@jimp/plugin-color': 1.6.0 - '@jimp/plugin-hash': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/plugin-color': 1.6.1 + '@jimp/plugin-hash': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 zod: 3.25.76 + transitivePeerDependencies: + - supports-color - '@jimp/types@1.6.0': + '@jimp/types@1.6.1': dependencies: zod: 3.25.76 - '@jimp/utils@1.6.0': + '@jimp/utils@1.6.1': dependencies: - '@jimp/types': 1.6.0 + '@jimp/types': 1.6.1 tinycolor2: 1.6.0 '@lit-labs/ssr-dom-shim@1.5.1': {} @@ -4873,14 +4859,14 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@puppeteer/browsers@2.10.13': + '@puppeteer/browsers@2.13.1': dependencies: debug: 4.4.3 extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 semver: 7.7.4 - tar-fs: 3.1.1 + tar-fs: 3.1.2 yargs: 17.7.2 transitivePeerDependencies: - bare-abort-controller @@ -4895,7 +4881,7 @@ snapshots: '@push.rocks/early@4.0.4': dependencies: '@push.rocks/consolecolor': 2.0.3 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/isounique@1.0.5': {} @@ -4906,16 +4892,16 @@ snapshots: '@push.rocks/smartfs': 1.5.1 '@push.rocks/smartjson': 6.0.1 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@tsclass/tsclass': 9.5.1 transitivePeerDependencies: - aws-crt '@push.rocks/lik@6.4.1': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartmatch': 2.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smarttime': 4.2.3 '@types/symbol-tree': 3.2.5 @@ -4927,7 +4913,7 @@ snapshots: '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartjson': 5.2.0 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@tsclass/tsclass': 9.5.1 mongodb: 6.21.0(socks@2.8.7) transitivePeerDependencies: @@ -4947,20 +4933,20 @@ snapshots: '@push.rocks/smartlog': 3.2.2 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartai@2.0.0(typescript@6.0.3)(ws@8.20.0)(zod@4.4.1)': + '@push.rocks/smartai@2.2.0(typescript@6.0.3)(ws@8.20.0)(zod@4.4.1)': dependencies: - '@ai-sdk/anthropic': 3.0.58(zod@4.4.1) - '@ai-sdk/google': 3.0.43(zod@4.4.1) - '@ai-sdk/groq': 3.0.29(zod@4.4.1) - '@ai-sdk/mistral': 3.0.24(zod@4.4.1) - '@ai-sdk/openai': 3.0.41(zod@4.4.1) - '@ai-sdk/perplexity': 3.0.23(zod@4.4.1) - '@ai-sdk/provider': 3.0.9 - '@ai-sdk/xai': 3.0.67(zod@4.4.1) - '@anthropic-ai/sdk': 0.78.0(zod@4.4.1) - '@push.rocks/smartpdf': 4.2.1(typescript@6.0.3) - ai: 6.0.170(zod@4.4.1) - openai: 6.27.0(ws@8.20.0)(zod@4.4.1) + '@ai-sdk/anthropic': 3.0.75(zod@4.4.1) + '@ai-sdk/google': 3.0.68(zod@4.4.1) + '@ai-sdk/groq': 3.0.38(zod@4.4.1) + '@ai-sdk/mistral': 3.0.35(zod@4.4.1) + '@ai-sdk/openai': 3.0.62(zod@4.4.1) + '@ai-sdk/perplexity': 3.0.32(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/xai': 3.0.88(zod@4.4.1) + '@anthropic-ai/sdk': 0.95.0(zod@4.4.1) + '@push.rocks/smartpdf': 4.2.2(typescript@6.0.3) + ai: 6.0.175(zod@4.4.1) + openai: 6.36.0(ws@8.20.0)(zod@4.4.1) transitivePeerDependencies: - aws-crt - bare-abort-controller @@ -4975,10 +4961,10 @@ snapshots: '@push.rocks/smartarchive@4.2.4': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfile': 13.1.3 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrequest': 4.4.2 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstream': 3.4.0 @@ -4986,8 +4972,8 @@ snapshots: '@push.rocks/smarturl': 3.1.0 '@types/tar-stream': 3.1.4 fflate: 0.8.2 - file-type: 21.3.0 - tar-stream: 3.1.8 + file-type: 21.3.4 + tar-stream: 3.2.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -4996,9 +4982,9 @@ snapshots: '@push.rocks/smartbrowser@2.0.11(typescript@6.0.3)': dependencies: - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartpdf': 4.2.1(typescript@6.0.3) - '@push.rocks/smartpuppeteer': 2.0.5(typescript@6.0.3) + '@push.rocks/smartdelay': 3.1.0 + '@push.rocks/smartpdf': 4.2.2(typescript@6.0.3) + '@push.rocks/smartpuppeteer': 2.0.6(typescript@6.0.3) '@push.rocks/smartunique': 3.0.9 transitivePeerDependencies: - aws-crt @@ -5015,7 +5001,7 @@ snapshots: '@aws-sdk/client-s3': 3.1039.0 '@push.rocks/smartmime': 2.0.4 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstream': 3.4.0 '@push.rocks/smartstring': 4.1.0 @@ -5025,7 +5011,7 @@ snapshots: transitivePeerDependencies: - aws-crt - '@push.rocks/smartbuffer@3.0.5': + '@push.rocks/smartbuffer@3.0.6': dependencies: uint8array-extras: 1.5.0 @@ -5034,15 +5020,15 @@ snapshots: '@push.rocks/lik': 6.4.1 '@push.rocks/smartlog': 3.2.2 '@push.rocks/smartobject': 1.0.12 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 yargs-parser: 22.0.0 '@push.rocks/smartclickhouse@2.2.0': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartobject': 1.0.12 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smarturl': 3.1.0 '@push.rocks/webrequest': 4.0.5 @@ -5054,7 +5040,7 @@ snapshots: '@push.rocks/smartjson': 6.0.1 '@push.rocks/smartlog': 3.2.2 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/taskbuffer': 8.0.2 '@tsclass/tsclass': 9.5.1 @@ -5066,17 +5052,17 @@ snapshots: '@push.rocks/smartcrypto@2.0.4': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@types/node-forge': 1.3.14 node-forge: 1.3.3 '@push.rocks/smartdata@5.16.7(socks@2.8.7)': dependencies: '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartlog': 3.2.2 '@push.rocks/smartmongo': 2.2.0(socks@2.8.7) - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstring': 4.1.0 '@push.rocks/smarttime': 4.2.3 @@ -5100,15 +5086,15 @@ snapshots: - supports-color - vue - '@push.rocks/smartdelay@3.0.5': + '@push.rocks/smartdelay@3.1.0': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartdns@7.9.0': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartenv': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrust': 1.4.0 '@tsclass/tsclass': 9.5.1 acme-client: 5.4.0 @@ -5118,21 +5104,21 @@ snapshots: '@push.rocks/smartenv@5.0.13': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartenv@6.0.0': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartexit@2.0.3': dependencies: '@push.rocks/lik': 6.4.1 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartexpect@2.5.0': dependencies: - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartdelay': 3.1.0 + '@push.rocks/smartpromise': 4.2.4 fast-deep-equal: 3.1.3 '@push.rocks/smartfile-interfaces@1.0.7': {} @@ -5140,13 +5126,13 @@ snapshots: '@push.rocks/smartfile@11.2.7': dependencies: '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfile-interfaces': 1.0.7 '@push.rocks/smarthash': 3.2.7 '@push.rocks/smartjson': 5.2.0 '@push.rocks/smartmime': 2.0.4 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrequest': 4.4.2 '@push.rocks/smartstream': 3.4.0 '@types/fs-extra': 11.0.4 @@ -5158,14 +5144,14 @@ snapshots: '@push.rocks/smartfile@13.1.3': dependencies: '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfile-interfaces': 1.0.7 '@push.rocks/smartfs': 1.5.1 '@push.rocks/smarthash': 3.2.7 '@push.rocks/smartjson': 6.0.1 '@push.rocks/smartmime': 2.0.4 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrequest': 5.0.1 '@push.rocks/smartstream': 3.4.0 '@types/js-yaml': 4.0.9 @@ -5179,14 +5165,14 @@ snapshots: '@push.rocks/smartguard@3.1.0': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrequest': 2.1.0 '@push.rocks/smarthash@3.2.7': dependencies: '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartjson': 6.0.1 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@types/through2': 2.0.41 through2: 4.0.2 @@ -5194,20 +5180,21 @@ snapshots: dependencies: '@push.rocks/lik': 6.4.1 '@push.rocks/smartobject': 1.0.12 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 inquirer: 11.1.0 - '@push.rocks/smartjimp@1.2.0': + '@push.rocks/smartjimp@1.2.1': dependencies: '@push.rocks/levelcache': 3.2.2 - '@push.rocks/smartfile': 11.2.7 + '@push.rocks/smartfile': 13.1.3 '@push.rocks/smarthash': 3.2.7 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartrequest': 4.4.2 - jimp: 1.6.0 + '@push.rocks/smartrequest': 5.0.1 + jimp: 1.6.1 sharp: 0.34.5 transitivePeerDependencies: - aws-crt + - supports-color '@push.rocks/smartjson@5.2.0': dependencies: @@ -5226,7 +5213,7 @@ snapshots: dependencies: '@push.rocks/consolecolor': 2.0.3 '@push.rocks/smartlog-interfaces': 3.0.2 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartlog-interfaces@3.0.2': dependencies: @@ -5240,7 +5227,7 @@ snapshots: '@push.rocks/isounique': 1.0.5 '@push.rocks/smartclickhouse': 2.2.0 '@push.rocks/smarthash': 3.2.7 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smarttime': 4.2.3 '@push.rocks/webrequest': 4.0.5 '@tsclass/tsclass': 9.5.1 @@ -5276,7 +5263,7 @@ snapshots: '@push.rocks/smartdata': 5.16.7(socks@2.8.7) '@push.rocks/smartfs': 1.5.1 '@push.rocks/smartpath': 5.1.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 bson: 6.10.4 mingo: 7.2.0 @@ -5303,7 +5290,7 @@ snapshots: '@push.rocks/smartdata': 5.16.7(socks@2.8.7) '@push.rocks/smartfs': 1.5.1 '@push.rocks/smartpath': 5.1.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 bson: 6.10.4 mingo: 7.2.0 @@ -5339,7 +5326,7 @@ snapshots: '@push.rocks/smartarchive': 4.2.4 '@push.rocks/smartfile': 11.2.7 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrequest': 4.4.2 '@push.rocks/smarttime': 4.2.3 '@push.rocks/smartversion': 3.0.5 @@ -5360,16 +5347,16 @@ snapshots: '@push.rocks/smartpath@6.0.0': {} - '@push.rocks/smartpdf@4.2.1(typescript@6.0.3)': + '@push.rocks/smartpdf@4.2.2(typescript@6.0.3)': dependencies: - '@push.rocks/smartbuffer': 3.0.5 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartbuffer': 3.0.6 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartfs': 1.5.1 - '@push.rocks/smartjimp': 1.2.0 + '@push.rocks/smartjimp': 1.2.1 '@push.rocks/smartnetwork': 4.7.1 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 - '@push.rocks/smartpuppeteer': 2.0.5(typescript@6.0.3) + '@push.rocks/smartpromise': 4.2.4 + '@push.rocks/smartpuppeteer': 2.0.6(typescript@6.0.3) '@push.rocks/smartserve': 2.0.4 '@push.rocks/smartunique': 3.0.9 '@tsclass/tsclass': 9.5.1 @@ -5385,13 +5372,13 @@ snapshots: - typescript - utf-8-validate - '@push.rocks/smartpromise@4.2.3': {} + '@push.rocks/smartpromise@4.2.4': {} - '@push.rocks/smartpuppeteer@2.0.5(typescript@6.0.3)': + '@push.rocks/smartpuppeteer@2.0.6(typescript@6.0.3)': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartshell': 3.3.8 - puppeteer: 24.31.0(typescript@6.0.3) + puppeteer: 24.43.0(typescript@6.0.3) tree-kill: 1.2.2 transitivePeerDependencies: - bare-abort-controller @@ -5404,7 +5391,7 @@ snapshots: '@push.rocks/smartrequest@2.1.0': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smarturl': 3.1.0 agentkeepalive: 4.6.0 form-data: 4.0.5 @@ -5413,7 +5400,7 @@ snapshots: dependencies: '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smarturl': 3.1.0 agentkeepalive: 4.6.0 form-data: 4.0.5 @@ -5422,7 +5409,7 @@ snapshots: dependencies: '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartpath': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smarturl': 3.1.0 agentkeepalive: 4.6.0 form-data: 4.0.5 @@ -5439,7 +5426,7 @@ snapshots: '@push.rocks/smartrx@3.0.10': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 rxjs: 7.8.2 '@push.rocks/smartserve@2.0.4': @@ -5457,15 +5444,15 @@ snapshots: '@push.rocks/smartshell@3.3.8': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartexit': 2.0.3 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@types/which': 3.0.4 which: 6.0.1 '@push.rocks/smartspawn@3.0.3': dependencies: - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 spawn-wrap: 2.0.0 threads: 1.7.0 tiny-worker: 2.3.0 @@ -5476,7 +5463,7 @@ snapshots: dependencies: '@push.rocks/smarthash': 3.2.7 '@push.rocks/smartjson': 6.0.1 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/webstore': 2.0.22 @@ -5490,7 +5477,7 @@ snapshots: dependencies: '@push.rocks/lik': 6.4.1 '@push.rocks/smartenv': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smartstring@4.1.0': @@ -5500,8 +5487,8 @@ snapshots: '@push.rocks/smarttime@4.2.3': dependencies: '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartdelay': 3.1.0 + '@push.rocks/smartpromise': 4.2.4 croner: 10.0.1 date-fns: 4.1.0 dayjs: 1.11.19 @@ -5525,7 +5512,7 @@ snapshots: dependencies: '@push.rocks/lik': 6.4.1 '@push.rocks/smartenv': 6.0.0 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrust': 1.4.0 '@push.rocks/smartrx': 3.0.10 chokidar: 5.0.0 @@ -5540,9 +5527,9 @@ snapshots: dependencies: '@design.estate/dees-element': 2.2.4 '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartlog': 3.2.2 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smarttime': 4.2.3 '@push.rocks/smartunique': 3.0.9 @@ -5556,9 +5543,9 @@ snapshots: dependencies: '@design.estate/dees-element': 2.2.4 '@push.rocks/lik': 6.4.1 - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartlog': 3.2.2 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 '@push.rocks/smarttime': 4.2.3 '@push.rocks/smartunique': 3.0.9 @@ -5570,10 +5557,10 @@ snapshots: '@push.rocks/webrequest@4.0.5': dependencies: - '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartdelay': 3.1.0 '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartjson': 6.0.1 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/webstore': 2.0.22 '@push.rocks/websetup@3.0.19': @@ -5588,7 +5575,7 @@ snapshots: '@push.rocks/lik': 6.4.1 '@push.rocks/smartenv': 6.0.0 '@push.rocks/smartjson': 6.0.1 - '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartpromise': 4.2.4 '@push.rocks/smartrx': 3.0.10 fake-indexeddb: 6.2.5 idb: 8.0.3 @@ -6042,6 +6029,8 @@ snapshots: dependencies: tslib: 2.8.1 + '@stablelib/base64@1.0.1': {} + '@standard-schema/spec@1.1.0': {} '@szmarczak/http-timer@5.0.1': @@ -6191,10 +6180,6 @@ snapshots: '@vercel/oidc@3.2.0': {} - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - acme-client@5.4.0: dependencies: '@peculiar/x509': 1.14.2 @@ -6211,11 +6196,11 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ai@6.0.170(zod@4.4.1): + ai@6.0.175(zod@4.4.1): dependencies: - '@ai-sdk/gateway': 3.0.105(zod@4.4.1) - '@ai-sdk/provider': 3.0.9 - '@ai-sdk/provider-utils': 4.0.24(zod@4.4.1) + '@ai-sdk/gateway': 3.0.110(zod@4.4.1) + '@ai-sdk/provider': 3.0.10 + '@ai-sdk/provider-utils': 4.0.26(zod@4.4.1) '@opentelemetry/api': 1.9.0 zod: 4.4.1 @@ -6269,7 +6254,7 @@ snapshots: transitivePeerDependencies: - debug - b4a@1.8.0: {} + b4a@1.8.1: {} bail@2.0.2: {} @@ -6279,12 +6264,12 @@ snapshots: bare-events@2.8.2: {} - bare-fs@4.5.5: + bare-fs@4.7.1: dependencies: bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.8.0(bare-events@2.8.2) - bare-url: 2.3.2 + bare-stream: 2.13.1(bare-events@2.8.2) + bare-url: 2.4.3 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller @@ -6296,22 +6281,19 @@ snapshots: dependencies: bare-os: 3.6.2 - bare-stream@2.8.0(bare-events@2.8.2): + bare-stream@2.13.1(bare-events@2.8.2): dependencies: - streamx: 2.23.0 + streamx: 2.25.0 teex: 1.0.1 optionalDependencies: bare-events: 2.8.2 transitivePeerDependencies: - - bare-abort-controller - react-native-b4a - bare-url@2.3.2: + bare-url@2.4.3: dependencies: bare-path: 3.0.0 - base64-js@1.5.1: {} - basic-ftp@5.0.5: {} bmp-ts@1.0.9: {} @@ -6342,11 +6324,6 @@ snapshots: buffer-crc32@0.2.13: {} - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - cacheable-lookup@7.0.0: {} cacheable-request@10.2.14: @@ -6394,9 +6371,9 @@ snapshots: dependencies: readdirp: 5.0.0 - chromium-bidi@11.0.0(devtools-protocol@0.0.1521046): + chromium-bidi@14.0.0(devtools-protocol@0.0.1608973): dependencies: - devtools-protocol: 0.0.1521046 + devtools-protocol: 0.0.1608973 mitt: 3.0.1 zod: 3.25.76 @@ -6435,7 +6412,7 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - cosmiconfig@9.0.0(typescript@6.0.3): + cosmiconfig@9.0.1(typescript@6.0.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 @@ -6502,7 +6479,7 @@ snapshots: dependencies: dequal: 2.0.3 - devtools-protocol@0.0.1521046: {} + devtools-protocol@0.0.1608973: {} dunder-proto@1.0.1: dependencies: @@ -6590,8 +6567,6 @@ snapshots: esutils@2.0.3: {} - event-target-shim@5.0.1: {} - eventemitter3@4.0.7: {} events-universal@1.0.1: @@ -6600,8 +6575,6 @@ snapshots: transitivePeerDependencies: - bare-abort-controller - events@3.3.0: {} - eventsource-parser@3.0.8: {} exif-parser@0.1.12: {} @@ -6632,6 +6605,8 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-sha256@1.3.0: {} + fast-xml-builder@1.1.5: dependencies: path-expression-matcher: 1.5.0 @@ -6657,12 +6632,6 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-type@16.5.4: - dependencies: - readable-web-to-node-stream: 3.0.4 - strtok3: 6.3.0 - token-types: 4.2.1 - file-type@19.6.0: dependencies: get-stream: 9.0.1 @@ -6670,10 +6639,10 @@ snapshots: token-types: 6.1.2 uint8array-extras: 1.5.0 - file-type@21.3.0: + file-type@21.3.4: dependencies: '@tokenizer/inflate': 0.4.1 - strtok3: 10.3.4 + strtok3: 10.3.5 token-types: 6.1.2 uint8array-extras: 1.5.0 transitivePeerDependencies: @@ -6751,7 +6720,7 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.3 + pump: 3.0.4 get-stream@6.0.1: {} @@ -6964,35 +6933,37 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 - jimp@1.6.0: + jimp@1.6.1: dependencies: - '@jimp/core': 1.6.0 - '@jimp/diff': 1.6.0 - '@jimp/js-bmp': 1.6.0 - '@jimp/js-gif': 1.6.0 - '@jimp/js-jpeg': 1.6.0 - '@jimp/js-png': 1.6.0 - '@jimp/js-tiff': 1.6.0 - '@jimp/plugin-blit': 1.6.0 - '@jimp/plugin-blur': 1.6.0 - '@jimp/plugin-circle': 1.6.0 - '@jimp/plugin-color': 1.6.0 - '@jimp/plugin-contain': 1.6.0 - '@jimp/plugin-cover': 1.6.0 - '@jimp/plugin-crop': 1.6.0 - '@jimp/plugin-displace': 1.6.0 - '@jimp/plugin-dither': 1.6.0 - '@jimp/plugin-fisheye': 1.6.0 - '@jimp/plugin-flip': 1.6.0 - '@jimp/plugin-hash': 1.6.0 - '@jimp/plugin-mask': 1.6.0 - '@jimp/plugin-print': 1.6.0 - '@jimp/plugin-quantize': 1.6.0 - '@jimp/plugin-resize': 1.6.0 - '@jimp/plugin-rotate': 1.6.0 - '@jimp/plugin-threshold': 1.6.0 - '@jimp/types': 1.6.0 - '@jimp/utils': 1.6.0 + '@jimp/core': 1.6.1 + '@jimp/diff': 1.6.1 + '@jimp/js-bmp': 1.6.1 + '@jimp/js-gif': 1.6.1 + '@jimp/js-jpeg': 1.6.1 + '@jimp/js-png': 1.6.1 + '@jimp/js-tiff': 1.6.1 + '@jimp/plugin-blit': 1.6.1 + '@jimp/plugin-blur': 1.6.1 + '@jimp/plugin-circle': 1.6.1 + '@jimp/plugin-color': 1.6.1 + '@jimp/plugin-contain': 1.6.1 + '@jimp/plugin-cover': 1.6.1 + '@jimp/plugin-crop': 1.6.1 + '@jimp/plugin-displace': 1.6.1 + '@jimp/plugin-dither': 1.6.1 + '@jimp/plugin-fisheye': 1.6.1 + '@jimp/plugin-flip': 1.6.1 + '@jimp/plugin-hash': 1.6.1 + '@jimp/plugin-mask': 1.6.1 + '@jimp/plugin-print': 1.6.1 + '@jimp/plugin-quantize': 1.6.1 + '@jimp/plugin-resize': 1.6.1 + '@jimp/plugin-rotate': 1.6.1 + '@jimp/plugin-threshold': 1.6.1 + '@jimp/types': 1.6.1 + '@jimp/utils': 1.6.1 + transitivePeerDependencies: + - supports-color jpeg-js@0.4.4: {} @@ -7013,7 +6984,7 @@ snapshots: json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 ts-algebra: 2.0.0 json-schema@0.4.0: {} @@ -7456,7 +7427,7 @@ snapshots: mongodb: 6.21.0(socks@2.8.7) new-find-package-json: 2.0.0 semver: 7.7.4 - tar-stream: 3.1.8 + tar-stream: 3.2.0 tslib: 2.8.1 yauzl: 3.2.0 transitivePeerDependencies: @@ -7531,7 +7502,7 @@ snapshots: dependencies: wrappy: 1.0.2 - openai@6.27.0(ws@8.20.0)(zod@4.4.1): + openai@6.36.0(ws@8.20.0)(zod@4.4.1): optionalDependencies: ws: 8.20.0 zod: 4.4.1 @@ -7640,8 +7611,6 @@ snapshots: pdf2json@4.0.3: {} - peek-readable@4.1.0: {} - peek-readable@5.4.2: {} pend@1.2.0: {} @@ -7666,8 +7635,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - process@0.11.10: {} - progress@2.0.3: {} property-information@7.1.0: {} @@ -7689,21 +7656,21 @@ snapshots: proxy-from-env@1.1.0: {} - pump@3.0.3: + pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} - puppeteer-core@24.31.0: + puppeteer-core@24.43.0: dependencies: - '@puppeteer/browsers': 2.10.13 - chromium-bidi: 11.0.0(devtools-protocol@0.0.1521046) + '@puppeteer/browsers': 2.13.1 + chromium-bidi: 14.0.0(devtools-protocol@0.0.1608973) debug: 4.4.3 - devtools-protocol: 0.0.1521046 - typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.3.9 + devtools-protocol: 0.0.1608973 + typed-query-selector: 2.12.2 + webdriver-bidi-protocol: 0.4.1 ws: 8.20.0 transitivePeerDependencies: - bare-abort-controller @@ -7713,14 +7680,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer@24.31.0(typescript@6.0.3): + puppeteer@24.43.0(typescript@6.0.3): dependencies: - '@puppeteer/browsers': 2.10.13 - chromium-bidi: 11.0.0(devtools-protocol@0.0.1521046) - cosmiconfig: 9.0.0(typescript@6.0.3) - devtools-protocol: 0.0.1521046 - puppeteer-core: 24.31.0 - typed-query-selector: 2.12.0 + '@puppeteer/browsers': 2.13.1 + chromium-bidi: 14.0.0(devtools-protocol@0.0.1608973) + cosmiconfig: 9.0.1(typescript@6.0.3) + devtools-protocol: 0.0.1608973 + puppeteer-core: 24.43.0 + typed-query-selector: 2.12.2 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -7751,18 +7718,6 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.7.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readable-web-to-node-stream@3.0.4: - dependencies: - readable-stream: 4.7.0 - readdirp@5.0.0: {} reflect-metadata@0.2.2: {} @@ -7923,7 +7878,7 @@ snapshots: signal-exit@4.1.0: {} - simple-xml-to-json@1.2.3: {} + simple-xml-to-json@1.2.7: {} smart-buffer@4.2.0: {} @@ -7959,11 +7914,16 @@ snapshots: sprintf-js@1.0.3: {} - streamx@2.23.0: + standardwebhooks@1.0.0: + dependencies: + '@stablelib/base64': 1.0.1 + fast-sha256: 1.3.0 + + streamx@2.25.0: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 - text-decoder: 1.2.3 + text-decoder: 1.2.7 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -8001,15 +7961,10 @@ snapshots: strnum@2.2.3: {} - strtok3@10.3.4: + strtok3@10.3.5: dependencies: '@tokenizer/token': 0.3.0 - strtok3@6.3.0: - dependencies: - '@tokenizer/token': 0.3.0 - peek-readable: 4.1.0 - strtok3@9.1.1: dependencies: '@tokenizer/token': 0.3.0 @@ -8021,24 +7976,24 @@ snapshots: tagged-tag@1.0.0: {} - tar-fs@3.1.1: + tar-fs@3.1.2: dependencies: - pump: 3.0.3 - tar-stream: 3.1.8 + pump: 3.0.4 + tar-stream: 3.2.0 optionalDependencies: - bare-fs: 4.5.5 + bare-fs: 4.7.1 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer - react-native-b4a - tar-stream@3.1.8: + tar-stream@3.2.0: dependencies: - b4a: 1.8.0 - bare-fs: 4.5.5 + b4a: 1.8.1 + bare-fs: 4.7.1 fast-fifo: 1.3.2 - streamx: 2.23.0 + streamx: 2.25.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -8046,14 +8001,14 @@ snapshots: teex@1.0.1: dependencies: - streamx: 2.23.0 + streamx: 2.25.0 transitivePeerDependencies: - bare-abort-controller - react-native-b4a - text-decoder@1.2.3: + text-decoder@1.2.7: dependencies: - b4a: 1.8.0 + b4a: 1.8.1 transitivePeerDependencies: - react-native-b4a @@ -8084,11 +8039,6 @@ snapshots: dependencies: os-tmpdir: 1.0.2 - token-types@4.2.1: - dependencies: - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 - token-types@6.1.2: dependencies: '@borewit/text-codec': 0.2.1 @@ -8136,7 +8086,7 @@ snapshots: dependencies: tagged-tag: 1.0.0 - typed-query-selector@2.12.0: {} + typed-query-selector@2.12.2: {} typescript@6.0.2: {} @@ -8207,7 +8157,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - webdriver-bidi-protocol@0.3.9: {} + webdriver-bidi-protocol@0.4.1: {} webidl-conversions@7.0.0: {} diff --git a/readme.md b/readme.md index 870d0d6..e18dd65 100644 --- a/readme.md +++ b/readme.md @@ -91,11 +91,15 @@ The single entry point. Options: | `prompt` | `string` | *required* | The user's task/question | | `system` | `string` | `undefined` | System prompt | | `tools` | `ToolSet` | `{}` | Tools the agent can call | +| `providerOptions` | `ProviderOptions` | `undefined` | Provider-specific AI SDK request options passed through to `streamText()` | | `maxSteps` | `number` | `20` | Max agentic steps before stopping | | `messages` | `ModelMessage[]` | `[]` | Conversation history (for multi-turn) | | `maxRetries` | `number` | `5` | Max retries on rate-limit/server errors | | `onToken` | `(delta: string) => void` | — | Streaming token callback | | `onToolCall` | `(name: string) => void` | — | Called when a tool is invoked | +| `onToolResult` | `(name: string, result: unknown) => void` | — | Called when a tool finishes | +| `validateCompletion` | `(result) => string \| void` | — | Return a string to reject and reprompt an incomplete run | +| `maxValidationRetries` | `number` | `0` | Number of validation-triggered reprompts allowed | | `onContextOverflow` | `(messages) => messages` | — | Handle context overflow (e.g., compact messages) | ### `IAgentRunResult` @@ -107,13 +111,75 @@ interface IAgentRunResult { steps: number; // Number of agentic steps taken messages: ModelMessage[]; // Full conversation for multi-turn usage: { - promptTokens: number; - completionTokens: number; + inputTokens: number; + outputTokens: number; totalTokens: number; }; + toolCalls: Array<{ + toolName: string; + input: unknown; + output?: unknown; + error?: string; + }>; } ``` +### OpenAI Provider Options + +Use `providerOptions` for provider-specific request settings such as GPT reasoning effort. SmartAgent forwards the object unchanged to AI SDK `streamText()`. + +```typescript +import { getModelSetup } from '@push.rocks/smartai'; +import { runAgent } from '@push.rocks/smartagent'; + +const setup = getModelSetup({ + provider: 'openai', + model: 'gpt-5.5', + apiKey: process.env.OPENAI_API_KEY, + providerOptions: { + openai: { + reasoningEffort: 'xhigh', + }, + }, +}); + +const result = await runAgent({ + model: setup.model, + system: 'You handle financial documents carefully.', + prompt: 'Process this inbox document.', + tools, + maxSteps: 20, + providerOptions: setup.providerOptions, +}); + +const saved = result.toolCalls.some((call) => + call.toolName === 'saveVoucher' || call.toolName === 'saveBankStatement', +); +``` + +### Completion Validation + +Use `validateCompletion` when a workflow must not finish unless a required side-effect happened. Return `void` to accept the run, or return a string to append that string as a new user message and continue. If retries are exhausted, `runAgent()` throws. + +```typescript +const result = await runAgent({ + model, + prompt: 'Process this inbox document.', + tools, + maxSteps: 20, + maxValidationRetries: 1, + validateCompletion: (result) => { + const saved = result.toolCalls.some((call) => + call.toolName === 'saveVoucher' || call.toolName === 'saveBankStatement', + ); + + if (!saved) { + return 'You must call saveVoucher or saveBankStatement before finalizing.'; + } + }, +}); +``` + ## Defining Tools 🛠️ Tools use Vercel AI SDK's `tool()` helper with Zod schemas: diff --git a/test/test.ts b/test/test.ts index 9ab5f1d..bd84d93 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,8 +1,56 @@ import { expect, tap } from '@git.zone/tstest/tapbundle'; +import { MockLanguageModelV3, convertArrayToReadableStream } from 'ai/test'; import * as smartagent from '../ts/index.js'; import { filesystemTool, shellTool, httpTool, jsonTool, truncateOutput } from '../ts_tools/index.js'; import { compactMessages } from '../ts_compaction/index.js'; +const createUsage = (inputTokens: number, outputTokens: number) => ({ + inputTokens: { + total: inputTokens, + noCache: inputTokens, + cacheRead: 0, + cacheWrite: 0, + }, + outputTokens: { + total: outputTokens, + text: outputTokens, + reasoning: 0, + }, +}); + +const createTextStreamResult = (text: string) => ({ + stream: convertArrayToReadableStream([ + { type: 'stream-start', warnings: [] }, + { type: 'response-metadata', id: 'response-1', timestamp: new Date(0), modelId: 'mock-model' }, + { type: 'text-start', id: 'text-1' }, + { type: 'text-delta', id: 'text-1', delta: text }, + { type: 'text-end', id: 'text-1' }, + { + type: 'finish', + finishReason: { unified: 'stop', raw: 'stop' }, + usage: createUsage(1, 1), + }, + ] as any[]), +}); + +const createToolCallStreamResult = (toolName: string, input: unknown) => ({ + stream: convertArrayToReadableStream([ + { type: 'stream-start', warnings: [] }, + { type: 'response-metadata', id: 'response-1', timestamp: new Date(0), modelId: 'mock-model' }, + { + type: 'tool-call', + toolCallId: 'tool-call-1', + toolName, + input: JSON.stringify(input), + }, + { + type: 'finish', + finishReason: { unified: 'tool-calls', raw: 'tool-calls' }, + usage: createUsage(2, 1), + }, + ] as any[]), +}); + // ============================================================ // Core exports // ============================================================ @@ -35,6 +83,111 @@ tap.test('should re-export stepCountIs', async () => { expect(smartagent.stepCountIs).toBeTypeOf('function'); }); +tap.test('runAgent should forward providerOptions to streamText', async () => { + const model = new MockLanguageModelV3({ + doStream: async () => createTextStreamResult('ok') as any, + }); + + const providerOptions = { + openai: { + reasoningEffort: 'xhigh', + }, + } as const; + + const result = await smartagent.runAgent({ + model, + prompt: 'hello', + providerOptions, + }); + + expect(result.text).toEqual('ok'); + expect((model.doStreamCalls[0].providerOptions as any).openai.reasoningEffort).toEqual('xhigh'); +}); + +tap.test('runAgent should return final tool call records', async () => { + let streamCallCount = 0; + const callbackToolCalls: Array<{ name: string; input: unknown }> = []; + const callbackToolResults: Array<{ name: string; result: unknown }> = []; + const model = new MockLanguageModelV3({ + doStream: async () => { + streamCallCount++; + return streamCallCount === 1 + ? createToolCallStreamResult('echo', { text: 'hello' }) as any + : createTextStreamResult('saved') as any; + }, + }); + + const result = await smartagent.runAgent({ + model, + prompt: 'echo hello', + tools: { + echo: smartagent.tool({ + description: 'Echo text', + inputSchema: smartagent.z.object({ text: smartagent.z.string() }), + execute: async ({ text }: { text: string }) => `saved:${text}`, + }), + }, + maxSteps: 5, + onToolCall: (name, input) => callbackToolCalls.push({ name, input }), + onToolResult: (name, result) => callbackToolResults.push({ name, result }), + }); + + const echoCall = result.toolCalls.find((toolCall) => toolCall.toolName === 'echo'); + + expect(result.text).toEqual('saved'); + expect(echoCall).toBeTruthy(); + expect(echoCall!.input).toEqual({ text: 'hello' }); + expect(echoCall!.output).toEqual('saved:hello'); + expect(callbackToolCalls[0]).toEqual({ name: 'echo', input: { text: 'hello' } }); + expect(callbackToolResults[0]).toEqual({ name: 'echo', result: 'saved:hello' }); +}); + +tap.test('runAgent should reprompt when validateCompletion returns a string', async () => { + let streamCallCount = 0; + let validationCallCount = 0; + const model = new MockLanguageModelV3({ + doStream: async () => { + streamCallCount++; + return createTextStreamResult(streamCallCount === 1 ? 'incomplete' : 'complete') as any; + }, + }); + + const result = await smartagent.runAgent({ + model, + prompt: 'process document', + maxValidationRetries: 1, + validateCompletion: (runResult) => { + validationCallCount++; + return runResult.text === 'complete' ? undefined : 'Call a save tool before finalizing.'; + }, + }); + + expect(result.text).toEqual('complete'); + expect(validationCallCount).toEqual(2); + expect(model.doStreamCalls.length).toEqual(2); + expect(JSON.stringify(model.doStreamCalls[1].prompt)).toInclude('Call a save tool before finalizing.'); +}); + +tap.test('runAgent should reject when validation retries are exhausted', async () => { + let threw = false; + const model = new MockLanguageModelV3({ + doStream: async () => createTextStreamResult('incomplete') as any, + }); + + try { + await smartagent.runAgent({ + model, + prompt: 'process document', + validateCompletion: () => 'Missing required save tool call.', + }); + } catch (error) { + threw = true; + expect((error as Error).message).toInclude('Missing required save tool call.'); + } + + expect(threw).toBeTrue(); +}); + // ============================================================ // ToolRegistry // ============================================================ diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 894c4cb..8c653e8 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartagent', - version: '3.0.3', + version: '3.1.0', description: 'Agentic loop for ai-sdk (Vercel AI SDK). Wraps streamText with stopWhen for parallel multi-step tool execution. Built on @push.rocks/smartai.' } diff --git a/ts/index.ts b/ts/index.ts index e18822e..5795b11 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -3,7 +3,7 @@ export { ToolRegistry } from './smartagent.classes.toolregistry.js'; export { truncateOutput } from './smartagent.utils.truncation.js'; export type { ITruncateResult } from './smartagent.utils.truncation.js'; export { ContextOverflowError } from './smartagent.interfaces.js'; -export type { IAgentRunOptions, IAgentRunResult } from './smartagent.interfaces.js'; +export type { IAgentRunOptions, IAgentRunResult, IAgentToolCallRecord, ProviderOptions } from './smartagent.interfaces.js'; // Re-export tool() and z so consumers can define tools without extra imports export { tool, jsonSchema } from '@push.rocks/smartai'; diff --git a/ts/plugins.ts b/ts/plugins.ts index a778fc2..c5d270a 100644 --- a/ts/plugins.ts +++ b/ts/plugins.ts @@ -19,7 +19,7 @@ import { tool, jsonSchema } from '@push.rocks/smartai'; export { tool, jsonSchema }; -export type { LanguageModelV3 } from '@push.rocks/smartai'; +export type { LanguageModelV3, TSmartAiProviderOptions as ProviderOptions } from '@push.rocks/smartai'; // zod import { z } from 'zod'; diff --git a/ts/smartagent.classes.agent.ts b/ts/smartagent.classes.agent.ts index 665017c..b010669 100644 --- a/ts/smartagent.classes.agent.ts +++ b/ts/smartagent.classes.agent.ts @@ -1,7 +1,7 @@ // Retry backoff and context overflow logic derived from opencode (MIT) — https://github.com/sst/opencode import * as plugins from './plugins.js'; -import type { IAgentRunOptions, IAgentRunResult } from './smartagent.interfaces.js'; +import type { IAgentRunOptions, IAgentRunResult, IAgentToolCallRecord } from './smartagent.interfaces.js'; import { ContextOverflowError } from './smartagent.interfaces.js'; // Retry constants @@ -76,11 +76,62 @@ function isContextOverflow(err: unknown): boolean { return false; } +function parseToolInput(input: unknown): unknown { + if (typeof input !== 'string') return input; + try { + return JSON.parse(input); + } catch { + return input; + } +} + +function errorToString(error: unknown): string { + if (error instanceof Error) return error.message; + return String(error); +} + +function recordToolCall( + toolCalls: IAgentToolCallRecord[], + toolCallIndexes: Map, + toolCall: unknown, + update: { output?: unknown; error?: unknown } = {}, +): void { + const call = toolCall as any; + const toolCallId = call?.toolCallId; + const nextRecord: IAgentToolCallRecord = { + toolName: String(call?.toolName ?? ''), + input: parseToolInput(call?.input ?? call?.args), + }; + const hasOutput = Object.prototype.hasOwnProperty.call(update, 'output'); + const hasError = Object.prototype.hasOwnProperty.call(update, 'error'); + + if (hasOutput) nextRecord.output = update.output; + if (hasError && update.error !== undefined) nextRecord.error = errorToString(update.error); + + const existingIndex = typeof toolCallId === 'string' ? toolCallIndexes.get(toolCallId) : undefined; + if (existingIndex !== undefined) { + const existingRecord = toolCalls[existingIndex]; + existingRecord.toolName = nextRecord.toolName || existingRecord.toolName; + if (nextRecord.input !== undefined) existingRecord.input = nextRecord.input; + if (hasOutput) existingRecord.output = nextRecord.output; + if (nextRecord.error !== undefined) existingRecord.error = nextRecord.error; + return; + } + + toolCalls.push(nextRecord); + if (typeof toolCallId === 'string') { + toolCallIndexes.set(toolCallId, toolCalls.length - 1); + } +} + export async function runAgent(options: IAgentRunOptions): Promise { let stepCount = 0; let attempt = 0; let totalInput = 0; let totalOutput = 0; + let validationRetries = 0; + const toolCalls: IAgentToolCallRecord[] = []; + const toolCallIndexes = new Map(); const tools = options.tools ?? {}; @@ -110,6 +161,7 @@ export async function runAgent(options: IAgentRunOptions): Promise { - options.onToolCall!(toolCall.toolName, (toolCall as any).input ?? (toolCall as any).args); + const input = parseToolInput((toolCall as any).input ?? (toolCall as any).args); + recordToolCall(toolCalls, toolCallIndexes, toolCall); + options.onToolCall!(toolCall.toolName, input); } - : undefined, + : ({ toolCall }) => { + recordToolCall(toolCalls, toolCallIndexes, toolCall); + }, experimental_onToolCallFinish: options.onToolResult - ? ({ toolCall, output }) => { - options.onToolResult!(toolCall.toolName, output); + ? (event) => { + recordToolCall( + toolCalls, + toolCallIndexes, + event.toolCall, + event.success ? { output: event.output } : { error: event.error }, + ); + options.onToolResult!(event.toolCall.toolName, event.success ? event.output : undefined); } - : undefined, + : (event) => { + recordToolCall( + toolCalls, + toolCallIndexes, + event.toolCall, + event.success ? { output: event.output } : { error: event.error }, + ); + }, - onStepFinish: ({ usage }) => { + onStepFinish: ({ usage, toolCalls: stepToolCalls, toolResults, content }) => { stepCount++; totalInput += usage?.inputTokens ?? 0; totalOutput += usage?.outputTokens ?? 0; + for (const toolCall of stepToolCalls) { + recordToolCall(toolCalls, toolCallIndexes, toolCall); + } + for (const toolResult of toolResults) { + recordToolCall(toolCalls, toolCallIndexes, toolResult, { output: (toolResult as any).output }); + } + for (const part of content) { + if ((part as any).type === 'tool-error') { + recordToolCall(toolCalls, toolCallIndexes, part, { error: (part as any).error }); + } + } }, }); @@ -158,12 +238,13 @@ export async function runAgent(options: IAgentRunOptions): Promise= (options.maxValidationRetries ?? 0)) { + throw new Error(`Agent completion validation failed: ${validationPrompt}`); + } + validationRetries++; + messages = [ + ...messages, + ...responseMessages, + { role: 'user' as const, content: validationPrompt }, + ]; + continue; + } + } + + return runResult; } catch (err: unknown) { // Abort — don't retry if (err instanceof DOMException && err.name === 'AbortError') throw err; diff --git a/ts/smartagent.interfaces.ts b/ts/smartagent.interfaces.ts index 02239f7..bdd5b0a 100644 --- a/ts/smartagent.interfaces.ts +++ b/ts/smartagent.interfaces.ts @@ -1,4 +1,13 @@ -import type { ToolSet, ModelMessage, LanguageModelV3 } from './plugins.js'; +import type { ToolSet, ModelMessage, LanguageModelV3, ProviderOptions } from './plugins.js'; + +export type { ProviderOptions }; + +export interface IAgentToolCallRecord { + toolName: string; + input: unknown; + output?: unknown; + error?: string; +} export interface IAgentRunOptions { /** The LanguageModelV3 to use — from smartai.getModel() */ @@ -9,6 +18,8 @@ export interface IAgentRunOptions { system?: string; /** Tools available to the agent */ tools?: ToolSet; + /** Provider-specific AI SDK request options passed through to streamText() */ + providerOptions?: ProviderOptions; /** * Maximum number of LLM↔tool round trips. * Each step may execute multiple tools in parallel. @@ -23,6 +34,13 @@ export interface IAgentRunOptions { onToolCall?: (toolName: string, input: unknown) => void; /** Called when a tool call completes */ onToolResult?: (toolName: string, result: unknown) => void; + /** + * Validate the completed run. Return a string to reject the run and reprompt, + * or return void to accept the result. + */ + validateCompletion?: (result: IAgentRunResult) => Promise | string | void; + /** Number of validation-triggered reprompts allowed. Default: 0 */ + maxValidationRetries?: number; /** * Called when total token usage approaches the model's context limit. * Receives the full message history and must return a compacted replacement. @@ -44,6 +62,8 @@ export interface IAgentRunResult { finishReason: string; /** Accumulated token usage across all steps */ usage: { inputTokens: number; outputTokens: number; totalTokens: number }; + /** Tool calls observed during the run, including inputs and outputs/errors when available */ + toolCalls: IAgentToolCallRecord[]; } export class ContextOverflowError extends Error {