diff --git a/extensions/tlon/npm-shrinkwrap.json b/extensions/tlon/npm-shrinkwrap.json index 413325bdd81..2ee5cafd17c 100644 --- a/extensions/tlon/npm-shrinkwrap.json +++ b/extensions/tlon/npm-shrinkwrap.json @@ -472,9 +472,9 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1053.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1053.0.tgz", - "integrity": "sha512-laSwHLYMMrXQRl2mFDXszF43m/F4pKWyGr7hCLfJmV8rn8c6CnI/hp/bf/Gn7gLcjz0SY4evd7SBpqtnIhzA/A==", + "version": "3.1052.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1052.0.tgz", + "integrity": "sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "^3.974.13", @@ -604,12 +604,12 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.4.tgz", - "integrity": "sha512-HIeF+1vrDGzPkkv39Hj2vlHSXHY3p958jd/8ZnePIY6+ZOsQX8coyEUKO5yQu4r0bQIVsbpotVIrXXwyycMStQ==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", + "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.4", + "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7805536cf6f..ad742095eed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,17 +8,6 @@ overrides: '@anthropic-ai/sdk': 0.98.0 hono: 4.12.18 '@hono/node-server': 1.19.14 - '@aws-sdk/core': 3.974.13 - '@aws-sdk/client-bedrock-runtime': 3.1053.0 - '@aws-sdk/credential-provider-env': 3.972.39 - '@aws-sdk/credential-provider-http': 3.972.41 - '@aws-sdk/credential-provider-ini': 3.972.43 - '@aws-sdk/credential-provider-login': 3.972.43 - '@aws-sdk/credential-provider-process': 3.972.39 - '@aws-sdk/credential-provider-sso': 3.972.43 - '@aws-sdk/credential-provider-web-identity': 3.972.43 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/token-providers': 3.1053.0 axios: 1.16.0 fast-uri: 3.1.2 follow-redirects: 1.16.0 @@ -1970,6 +1959,10 @@ packages: resolution: {integrity: sha512-/oGxoB6p1Nqs935Blt+v1o+anSCEf2n3RjIrcLz84i4cn2Gr+Z7JpDdUkG5+74r5ctqEPG7k/phTGbJ9fNKnHg==} engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.974.12': + resolution: {integrity: sha512-qrqgioqYFjwR6LatVNS1L2Vk++EwRIxqSQXPKNv5Ofux2D8UNgqMQ1znnMyEImXquVPTtbf71fc128pvmU6y9A==} + engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.974.13': resolution: {integrity: sha512-+Y5/4tHki0uYgyx8eun146DegRVQBpdKGK5RbV0FTKJPpaKTchvqVxrrRFK6Wk0JksO4iAZKw3eqxGEIwtO98w==} engines: {node: '>=20.0.0'} @@ -1982,18 +1975,34 @@ packages: resolution: {integrity: sha512-mMQsBJv40oi5QdqRj4Xbc9jTlWMxqWfs5zWu+RhbOuF5F0AxxWXT70hm0abOmLbF2M/Tkuygs01H4eWIQMfoMw==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.38': + resolution: {integrity: sha512-m3WjZEgPtioMhPmwqUt+DhlTJ2i9ufR6DhfkyXojb9puEvfR+ur2U5shavu5/Cc9WHHsDCvALi6UFHgcqjhQ5w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.39': resolution: {integrity: sha512-29wX9zpAvEt1vcj0psha+y6ygBHy2V/S72mp6e7q0KARLWXq+pwE/lR6qGkwknQvruh52lXvlqZIga8Hdxkucw==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.40': + resolution: {integrity: sha512-D78L/m2Dr6cJnnSvWoAudPhQmCwmJ7j6APXsPYmFpPaKfQTfCSu0rdm8j14Np+VmXF9z8Aj8HE3xFpsrwtfgeg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.41': resolution: {integrity: sha512-IA3CQTjtJkb6u1H4mE4936c8OPBMa9Jggtwe8U2Mqw/vvb/tZ5Ebd0mcZcX0uKWQhOyYo/+qNIwkV5Xh+FeJJA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.972.42': + resolution: {integrity: sha512-Mu5ESvFXeinafVM8jTIvRqcvK2Ehj4kz3auT39yUcHwu1Vfxo6xRlmUafdKLW4tusjAJukQwK09sCSMgOm7OKg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.972.43': resolution: {integrity: sha512-4mzII+3mZEVXXE1xzrLQrCJL7/r62A63bA6SVzZoNL5rqCJghpf+xgGltVrIBBs0n+mOZBKrQl2tRREtvZ5l6A==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.42': + resolution: {integrity: sha512-O6WkZga3kf0yqyJYd1dbeJqVhEgJx/x1UaLgtbR+XuL/YP+K5y6QTxQKL7ka9z3jnQASESKGAPnRyt4D5hQrxA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.43': resolution: {integrity: sha512-HG7kQCwXtbv3oBV61Ins0oNX8KKyvrMqqRkb6ZiAfQHbMuHaiNaEb2KnpKLPkNpqImSBK82UkVE/kaY6IfWikA==} engines: {node: '>=20.0.0'} @@ -2002,14 +2011,26 @@ packages: resolution: {integrity: sha512-sDaBIT0yrNNIPfvlsiTCmANm07zKju+ipWODjEXgZlsjMeIJR3LVp7RDyAOzUoAsTbDfYKDWp+i5WrFiQP6rmQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.38': + resolution: {integrity: sha512-EnbYVajGgbkb24s0K1eo4VNAPV5mHIET7LSvirTaFCwkfrfaOJxtSE+wY/tJdKDS21cEYkZs2ruCaAm+W4iblg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.39': resolution: {integrity: sha512-2k/amBifLd75eXNwgvPw/2lKYSQ3NhvHQgkVKVjfUq13/eJ3JRtHmznuFenn74OK3sSfp4SMy1YB2w+UVXoKqA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.972.42': + resolution: {integrity: sha512-RVV/9NbFwI8ZHEH5dn39lGyFmSbSVj1+orZdr6QsOe1mW9DCglmlen0cFaNZmCcqkqc7erNRHNBduxbeZuHAnw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.972.43': resolution: {integrity: sha512-LPc3+Y4vhH1T4x6CMqwCM6hk5+SRf/Lwmgm8INm95wxTtIRHcMwQUVkDzWu4Iw/RSncxYM2BC01OrYbxOPZvyg==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.42': + resolution: {integrity: sha512-/67fXX0ddllD4u2Nujc5PvT4byHgpMUfz6+RxIKi/0nFIckeorm7JvXgzBuDyVKw0s58EbofmETDWUf9vTEuHQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.43': resolution: {integrity: sha512-wQtL34lUD/09VXjwAUo2T+I3aEXRDxMB3DKmTJL/Zj0Gi6sLDTrVhae1XVt01yzkquOWajI/sZW72JGDZ1ciTw==} engines: {node: '>=20.0.0'} @@ -2054,6 +2075,10 @@ packages: resolution: {integrity: sha512-yr+5+C7v9R55sAJ89A55Wrm7wIKPVn5cm6J3Hztnd5s/iwEUKxyJqCnIxJu4fVXgG9XBQD1Jc4rsWC1ozahJjA==} engines: {node: '>= 14.0.0'} + '@aws-sdk/nested-clients@3.997.10': + resolution: {integrity: sha512-FtQ/Bt327peZJuyo4WZSOLVUTw9ujRxntepiC7L65FxA2P82Xlq0g14T22BuqBUeMjDoxa9nvwiMHjLIfP3eUg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/nested-clients@3.997.11': resolution: {integrity: sha512-nWXXJ1r/r8N2Gw1pWolRgED38/A9A8DHR2ETWIv220zh4PZHcybbR4hUVWWktmNXTRHzDJwRluapHn0rZxuoqA==} engines: {node: '>=20.0.0'} @@ -2066,6 +2091,14 @@ packages: resolution: {integrity: sha512-qs9z5LqXO/CZC2Lg9SGKpoLU8Rhi+m2pFKZqfO9pytX1clc0katqtsDNupJxFy0xT9wsZSPzM2v1y+/H/zfp5Q==} engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1049.0': + resolution: {integrity: sha512-r7+d0lQMTHKypkmaF5jRTBYLYHCUHzt3gaVoN9SidLhQeWhCmHk3AKrboDTpPF5b7Pt7vKu3+oeMjznM2Eu1ow==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1052.0': + resolution: {integrity: sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1053.0': resolution: {integrity: sha512-laSwHLYMMrXQRl2mFDXszF43m/F4pKWyGr7hCLfJmV8rn8c6CnI/hp/bf/Gn7gLcjz0SY4evd7SBpqtnIhzA/A==} engines: {node: '>=20.0.0'} @@ -2086,6 +2119,10 @@ packages: resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.24': + resolution: {integrity: sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.25': resolution: {integrity: sha512-GH+Kjz4nPKWKHnsiQpnhP1MJdTGIcK4rAka6tzakgjjUkVgNsmPeEbbRAf09SzS1hjGu6duGHCBsxYke0BhHjQ==} engines: {node: '>=20.0.0'} @@ -7424,7 +7461,7 @@ snapshots: dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.13 + '@aws-sdk/core': 3.974.12 '@aws-sdk/credential-provider-node': 3.972.44 '@aws-sdk/types': 3.973.8 '@smithy/core': 3.24.4 @@ -7454,6 +7491,17 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/core@3.974.12': + dependencies: + '@aws-sdk/types': 3.973.9 + '@aws-sdk/xml-builder': 3.972.24 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.24.4 + '@smithy/signature-v4': 5.4.3 + '@smithy/types': 4.14.2 + bowser: 2.14.1 + tslib: 2.8.1 + '@aws-sdk/core@3.974.13': dependencies: '@aws-sdk/types': 3.973.9 @@ -7472,7 +7520,15 @@ snapshots: '@aws-sdk/credential-provider-cognito-identity@3.972.35': dependencies: - '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/nested-clients': 3.997.10 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.12 '@aws-sdk/types': 3.973.8 '@smithy/core': 3.24.4 '@smithy/types': 4.14.2 @@ -7486,6 +7542,16 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.40': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.3 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.41': dependencies: '@aws-sdk/core': 3.974.13 @@ -7496,6 +7562,22 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.972.42': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/credential-provider-env': 3.972.38 + '@aws-sdk/credential-provider-http': 3.972.40 + '@aws-sdk/credential-provider-login': 3.972.42 + '@aws-sdk/credential-provider-process': 3.972.38 + '@aws-sdk/credential-provider-sso': 3.972.42 + '@aws-sdk/credential-provider-web-identity': 3.972.42 + '@aws-sdk/nested-clients': 3.997.10 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/credential-provider-imds': 4.3.3 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.972.43': dependencies: '@aws-sdk/core': 3.974.13 @@ -7512,6 +7594,15 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-login@3.972.42': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/nested-clients': 3.997.10 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-login@3.972.43': dependencies: '@aws-sdk/core': 3.974.13 @@ -7535,6 +7626,14 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.39': dependencies: '@aws-sdk/core': 3.974.13 @@ -7543,16 +7642,35 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.972.42': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/nested-clients': 3.997.10 + '@aws-sdk/token-providers': 3.1049.0 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.972.43': dependencies: '@aws-sdk/core': 3.974.13 '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/token-providers': 3.1053.0 + '@aws-sdk/token-providers': 3.1052.0 '@aws-sdk/types': 3.973.9 '@smithy/core': 3.24.4 '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/credential-provider-web-identity@3.972.42': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/nested-clients': 3.997.10 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-web-identity@3.972.43': dependencies: '@aws-sdk/core': 3.974.13 @@ -7565,17 +7683,17 @@ snapshots: '@aws-sdk/credential-providers@3.1051.0': dependencies: '@aws-sdk/client-cognito-identity': 3.1051.0 - '@aws-sdk/core': 3.974.13 + '@aws-sdk/core': 3.974.12 '@aws-sdk/credential-provider-cognito-identity': 3.972.35 - '@aws-sdk/credential-provider-env': 3.972.39 - '@aws-sdk/credential-provider-http': 3.972.41 - '@aws-sdk/credential-provider-ini': 3.972.43 - '@aws-sdk/credential-provider-login': 3.972.43 + '@aws-sdk/credential-provider-env': 3.972.38 + '@aws-sdk/credential-provider-http': 3.972.40 + '@aws-sdk/credential-provider-ini': 3.972.42 + '@aws-sdk/credential-provider-login': 3.972.42 '@aws-sdk/credential-provider-node': 3.972.44 - '@aws-sdk/credential-provider-process': 3.972.39 - '@aws-sdk/credential-provider-sso': 3.972.43 - '@aws-sdk/credential-provider-web-identity': 3.972.43 - '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/credential-provider-process': 3.972.38 + '@aws-sdk/credential-provider-sso': 3.972.42 + '@aws-sdk/credential-provider-web-identity': 3.972.42 + '@aws-sdk/nested-clients': 3.997.10 '@aws-sdk/types': 3.973.8 '@smithy/core': 3.24.4 '@smithy/credential-provider-imds': 4.3.3 @@ -7655,6 +7773,19 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/nested-clients@3.997.10': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.12 + '@aws-sdk/signature-v4-multi-region': 3.996.28 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.3 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/nested-clients@3.997.11': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -7685,6 +7816,24 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 + '@aws-sdk/token-providers@3.1049.0': + dependencies: + '@aws-sdk/core': 3.974.12 + '@aws-sdk/nested-clients': 3.997.10 + '@aws-sdk/types': 3.973.8 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1052.0': + dependencies: + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.1053.0': dependencies: '@aws-sdk/core': 3.974.13 @@ -7706,13 +7855,20 @@ snapshots: '@aws-sdk/util-format-url@3.972.14': dependencies: - '@aws-sdk/core': 3.974.13 + '@aws-sdk/core': 3.974.12 tslib: 2.8.1 '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.24': + dependencies: + '@nodable/entities': 2.1.0 + '@smithy/types': 4.14.2 + fast-xml-parser: 5.7.0 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.25': dependencies: '@nodable/entities': 2.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f999b40838c..d777a8b07e8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -62,17 +62,6 @@ overrides: "@anthropic-ai/sdk": 0.98.0 hono: 4.12.18 "@hono/node-server": 1.19.14 - "@aws-sdk/core": 3.974.13 - "@aws-sdk/client-bedrock-runtime": 3.1053.0 - "@aws-sdk/credential-provider-env": 3.972.39 - "@aws-sdk/credential-provider-http": 3.972.41 - "@aws-sdk/credential-provider-ini": 3.972.43 - "@aws-sdk/credential-provider-login": 3.972.43 - "@aws-sdk/credential-provider-process": 3.972.39 - "@aws-sdk/credential-provider-sso": 3.972.43 - "@aws-sdk/credential-provider-web-identity": 3.972.43 - "@aws-sdk/nested-clients": 3.997.11 - "@aws-sdk/token-providers": 3.1053.0 axios: 1.16.0 fast-uri: 3.1.2 follow-redirects: 1.16.0 diff --git a/src/agents/embedded-agent-runner/run.cross-provider-fallback-error-context.test.ts b/src/agents/embedded-agent-runner/run.cross-provider-fallback-error-context.test.ts index 0b10e131b15..9a7e5701aed 100644 --- a/src/agents/embedded-agent-runner/run.cross-provider-fallback-error-context.test.ts +++ b/src/agents/embedded-agent-runner/run.cross-provider-fallback-error-context.test.ts @@ -172,53 +172,6 @@ describe("runEmbeddedAgent cross-provider fallback error handling", () => { }); }); - it("keeps PI-stamped session assistant errors for the current candidate after compaction", async () => { - const getLastFormattedAssistant = captureFormattedAssistant(); - const sameCandidateErrorMessage = "429 current PI-stamped candidate rate limit"; - mockedIsFailoverAssistantError.mockImplementation((...args: unknown[]) => { - const assistant = args[0]; - return isCurrentAttemptAssistant(assistant) && assistant.provider === "pi"; - }); - mockedIsRateLimitAssistantError.mockImplementation((...args: unknown[]) => { - const assistant = args[0]; - return isCurrentAttemptAssistant(assistant) && assistant.provider === "pi"; - }); - mockedRunEmbeddedAttempt.mockResolvedValueOnce( - makeAttemptResult({ - assistantTexts: [], - lastAssistant: makeAssistantMessageFixture({ - stopReason: "error", - errorMessage: sameCandidateErrorMessage, - provider: "pi", - model: "pi", - content: [], - }), - currentAttemptAssistant: undefined, - }), - ); - - const promise = runEmbeddedAgent({ - ...overflowBaseRunParams, - runId: "run-compaction-pi-stamped-fallback-error-context", - config: makeCrossProviderFallbackConfig(), - }); - - await expect(promise).rejects.toBeInstanceOf(MockedFailoverError); - await expect(promise).rejects.toThrow(sameCandidateErrorMessage); - expect(mockedIsRateLimitAssistantError).toHaveBeenCalledTimes(1); - const rateLimitCalls = mockedIsRateLimitAssistantError.mock.calls as unknown[][]; - expect(rateLimitCalls.at(-1)?.[0]).toMatchObject({ - provider: "pi", - model: "pi", - errorMessage: sameCandidateErrorMessage, - }); - expect(getLastFormattedAssistant()).toMatchObject({ - provider: "pi", - model: "pi", - errorMessage: sameCandidateErrorMessage, - }); - }); - it("does not reuse a prior provider session assistant when the current candidate times out", async () => { const getLastFormattedAssistant = captureFormattedAssistant(); mockedRunEmbeddedAttempt.mockResolvedValueOnce( diff --git a/src/agents/embedded-agent-runner/run/attempt.prompt-helpers.ts b/src/agents/embedded-agent-runner/run/attempt.prompt-helpers.ts index f740074476d..88737ba0231 100644 --- a/src/agents/embedded-agent-runner/run/attempt.prompt-helpers.ts +++ b/src/agents/embedded-agent-runner/run/attempt.prompt-helpers.ts @@ -251,7 +251,34 @@ export function resolvePromptSubmissionSkipReason(params: { if (params.prompt.trim().length > 0 || params.imageCount > 0) { return null; } - return params.messages.length > 0 ? "blank_user_prompt" : "empty_prompt_history_images"; + return params.messages.some(hasVisiblePromptHistory) + ? "blank_user_prompt" + : "empty_prompt_history_images"; +} + +function hasVisiblePromptHistory(message: unknown): boolean { + if (!message || typeof message !== "object") { + return false; + } + const record = message as { role?: unknown; content?: unknown }; + if (record.role !== "user" && record.role !== "assistant") { + return false; + } + return hasNonEmptyContent(record.content); +} + +function hasNonEmptyContent(content: unknown): boolean { + if (typeof content === "string") { + return content.trim().length > 0; + } + if (Array.isArray(content)) { + return content.some(hasNonEmptyContent); + } + if (!content || typeof content !== "object") { + return false; + } + const record = content as { text?: unknown; content?: unknown }; + return hasNonEmptyContent(record.text) || hasNonEmptyContent(record.content); } const QUEUED_USER_MESSAGE_MARKER = diff --git a/src/config/zod-schema.agent-defaults.test.ts b/src/config/zod-schema.agent-defaults.test.ts index 0e6ebfa1dad..13e09db621d 100644 --- a/src/config/zod-schema.agent-defaults.test.ts +++ b/src/config/zod-schema.agent-defaults.test.ts @@ -146,16 +146,6 @@ describe("agent defaults schema", () => { ); }); - it("accepts agents.defaults.agentRuntime", () => { - expect(() => - AgentDefaultsSchema.parse({ - agentRuntime: { - id: "claude-cli", - }, - }), - ).not.toThrow(); - }); - it("accepts experimental.localModelLean", () => { const result = AgentDefaultsSchema.parse({ experimental: { diff --git a/ui/src/ui/views/activity.test.ts b/ui/src/ui/views/activity.test.ts index 4dcd1c348c7..93c3bc246eb 100644 --- a/ui/src/ui/views/activity.test.ts +++ b/ui/src/ui/views/activity.test.ts @@ -64,7 +64,7 @@ describe("renderActivity", () => { render(renderActivity(createProps()), container); expect(container.querySelector(".activity-entry__text")?.textContent?.trim()).toBe( - "0 arguments hidden", + "0 Argumente ausgeblendet", ); });