console.log loading vertex ai credentials   at log (tests/pass_through_tests/test_vertex.test.js:22:13) console.log loading vertex ai credentials   at log (tests/pass_through_tests/test_vertex_with_spend.test.js:30:13) console.log Patched fetch sending request to: http://localhost:4000/vertex-ai/v1/projects/******************************/locations/us-central1/publishers/google/models/gemini-1.5-pro:streamGenerateContent?alt=sse   at log (tests/pass_through_tests/test_vertex.test.js:17:13) console.log Patched fetch sending request to: http://127.0.0.1:4000/vertex_ai/v1/projects/******************************/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent   at log (tests/pass_through_tests/test_vertex_with_spend.test.js:19:13) console.log Captured Call ID: fa884857-d1f3-4ab8-82cf-c31d62a635bc   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:42:17) console.log Captured Call ID: 6050c6cf-9148-46e8-b0c0-dd1e629e5af9   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:100:17) console.log stream chunk: {"candidates":[{"content":{"role":"model","parts":[{"text":"I"}]},"index":0}],"usageMetadata":{"trafficType":"ON_DEMAND"},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:58:52.879073Z","responseId":"jD4uaOHTNb79ld8Pk46GyA4"}   at Object.log (tests/pass_through_tests/test_vertex.test.js:92:21) console.log stream chunk: {"candidates":[{"content":{"role":"model","parts":[{"text":"'m doing"}]},"index":0}],"usageMetadata":{"trafficType":"ON_DEMAND"},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:58:52.879073Z","responseId":"jD4uaOHTNb79ld8Pk46GyA4"}   at Object.log (tests/pass_through_tests/test_vertex.test.js:92:21) console.log stream chunk: {"candidates":[{"content":{"role":"model","parts":[{"text":" well, thank you for asking! I don't have a name."}]},"index":0}],"usageMetadata":{"trafficType":"ON_DEMAND"},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:58:52.879073Z","responseId":"jD4uaOHTNb79ld8Pk46GyA4"}   at Object.log (tests/pass_through_tests/test_vertex.test.js:92:21) console.log stream chunk: {"candidates":[{"content":{"role":"model","parts":[{"text":" I'm a large language model, an AI.\n"}]},"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":10,"candidatesTokenCount":32,"totalTokenCount":42,"trafficType":"ON_DEMAND","promptTokensDetails":[{"modality":"TEXT","tokenCount":10}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":32}]},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:58:52.879073Z","responseId":"jD4uaOHTNb79ld8Pk46GyA4"}   at Object.log (tests/pass_through_tests/test_vertex.test.js:92:21) console.log aggregated response: {"usageMetadata":{"promptTokenCount":10,"candidatesTokenCount":32,"totalTokenCount":42,"trafficType":"ON_DEMAND","promptTokensDetails":[{"modality":"TEXT","tokenCount":10}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":32}]},"candidates":[{"index":0,"content":{"role":"model","parts":[{"text":"I'm doing well, thank you for asking! I don't have a name. I'm a large language model, an AI.\n"}]},"finishReason":"STOP"}]}   at Object.log (tests/pass_through_tests/test_vertex.test.js:97:17) console.log Patched fetch sending request to: http://localhost:4000/vertex-ai/v1/projects/******************************/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent   at log (tests/pass_through_tests/test_vertex.test.js:17:13) console.log non-streaming response: {"candidates":[{"content":{"role":"model","parts":[{"text":"2 + 2 = 4\n"}]},"finishReason":"STOP","avgLogprobs":-0.0000026672400963434484,"index":0}],"usageMetadata":{"promptTokenCount":7,"candidatesTokenCount":8,"totalTokenCount":15,"trafficType":"ON_DEMAND","promptTokensDetails":[{"modality":"TEXT","tokenCount":7}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":8}]},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:58:54.108746Z","responseId":"jj4uaMrRBqWAm9IPt-mj2AI"}   at Object.log (tests/pass_through_tests/test_vertex.test.js:112:17)  PASS  tests/pass_through_tests/test_vertex.test.js Vertex AI Tests ✓ should successfully generate content from Vertex AI (1303 ms) ✓ should successfully generate non-streaming content from Vertex AI (638 ms) console.log spendData [ null ]   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:58:17) console.log Patched fetch sending request to: http://127.0.0.1:4000/spend/logs?request_id=6050c6cf-9148-46e8-b0c0-dd1e629e5af9   at log (tests/pass_through_tests/test_vertex_with_spend.test.js:19:13) console.log spendData [ null ]   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:116:17) console.log Patched fetch sending request to: http://127.0.0.1:4000/vertex_ai/v1/projects/******************************/locations/us-central1/publishers/google/models/gemini-1.5-pro:streamGenerateContent?alt=sse   at log (tests/pass_through_tests/test_vertex_with_spend.test.js:19:13) console.log stream chunk: {"candidates":[{"content":{"parts":[{"text":"hello"}],"role":"model"}}],"usageMetadata":{"promptTokenCount":9,"totalTokenCount":9,"promptTokensDetails":[{"modality":"TEXT","tokenCount":9}]},"modelVersion":"gemini-1.5-pro-002"}   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:89:21) console.log stream chunk: {"candidates":[{"content":{"parts":[{"text":" test\n"}],"role":"model"},"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":3,"totalTokenCount":11,"promptTokensDetails":[{"modality":"TEXT","tokenCount":8}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":3}]},"modelVersion":"gemini-1.5-pro-002"}   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:89:21) console.log aggregated response: {"candidates":[{"index":0,"finishReason":"STOP","content":{"role":"model","parts":[{"text":"hello"},{"text":" test\n"}]}}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":3,"totalTokenCount":11,"promptTokensDetails":[{"modality":"TEXT","tokenCount":8}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":3}]}}   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:94:17) console.log Captured Call ID: a0ba330f-35fb-4124-9686-bee814b9846d   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:99:17) console.log stream chunk: {"candidates":[{"content":{"role":"model","parts":[{"text":"hello"}]},"index":0}],"usageMetadata":{"trafficType":"ON_DEMAND"},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:59:08.635932Z","responseId":"nD4uaJzoJpaJ1dkPmpP1qQI"}   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:160:21) console.log stream chunk: {"candidates":[{"content":{"role":"model","parts":[{"text":" test\n"}]},"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":3,"totalTokenCount":11,"trafficType":"ON_DEMAND","promptTokensDetails":[{"modality":"TEXT","tokenCount":8}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":3}]},"modelVersion":"gemini-1.5-pro-002","createTime":"2025-05-21T20:59:08.635932Z","responseId":"nD4uaJzoJpaJ1dkPmpP1qQI"}   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:160:21) console.log aggregated response: {"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":3,"totalTokenCount":11,"trafficType":"ON_DEMAND","promptTokensDetails":[{"modality":"TEXT","tokenCount":8}],"candidatesTokensDetails":[{"modality":"TEXT","tokenCount":3}]},"candidates":[{"index":0,"content":{"role":"model","parts":[{"text":"hello test\n"}]},"finishReason":"STOP"}]}   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:165:17) console.log Captured Call ID: b28b5c9a-f997-4b66-8768-cb2ce45c2696   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:170:17) console.log spendData [ { request_id: 'a0ba330f-35fb-4124-9686-bee814b9846d', call_type: 'pass_through_endpoint', api_key: 'best-api-key-ever', spend: 0.0000595, total_tokens: 11, prompt_tokens: 8, completion_tokens: 3, startTime: '2025-05-21T20:59:08.241000Z', endTime: '2025-05-21T20:59:08.841000Z', completionStartTime: '2025-05-21T20:59:08.841000Z', model: 'gemini-1.5-pro', model_id: '', model_group: '', custom_llm_provider: 'gemini', api_base: 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro:streamGenerateContent?alt=sse&key=*****OdrM', user: 'best-user-id-ever', metadata: { batch_models: null, usage_object: [Object], user_api_key: 'best-api-key-ever', applied_guardrails: null, user_api_key_alias: null, user_api_key_org_id: null, user_api_key_team_id: 'best-team-id-ever', user_api_key_user_id: 'best-user-id-ever', guardrail_information: null, model_map_information: [Object], mcp_tool_call_metadata: null, additional_usage_values: [Object], user_api_key_team_alias: null, vector_store_request_metadata: null }, cache_hit: 'False', cache_key: 'Cache OFF', request_tags: [ 'gemini-js-sdk', 'pass-through-endpoint' ], team_id: 'best-team-id-ever', end_user: '', requester_ip_address: null, messages: {}, response: {}, session_id: 'a846f350-b404-4e58-8441-fe5b540d5639', status: 'success', proxy_server_request: {} } ]   at Object.log (tests/pass_through_tests/test_gemini_with_spend.test.js:115:17)  FAIL  tests/pass_through_tests/test_gemini_with_spend.test.js (31.839 s) Gemini AI Tests ✕ should successfully generate non-streaming content with tags (15694 ms) ✓ should successfully generate streaming content with tags (15662 ms)  ● Gemini AI Tests › should successfully generate non-streaming content with tags TypeError: Cannot read properties of null (reading 'request_id')     58 | console.log("spendData", spendData)   59 | expect(spendData).toBeDefined();  > 60 | expect(spendData[0].request_id).toBe(callId);   | ^   61 | expect(spendData[0].call_type).toBe('pass_through_endpoint');   62 | expect(spendData[0].request_tags).toEqual(['gemini-js-sdk', 'pass-through-endpoint']);   63 | expect(spendData[0].metadata).toHaveProperty('user_api_key');   at Object.request_id (tests/pass_through_tests/test_gemini_with_spend.test.js:60:29) console.log Patched fetch sending request to: http://127.0.0.1:4000/spend/logs?request_id=b28b5c9a-f997-4b66-8768-cb2ce45c2696   at log (tests/pass_through_tests/test_vertex_with_spend.test.js:19:13) console.log spendData [ { request_id: 'b28b5c9a-f997-4b66-8768-cb2ce45c2696', call_type: 'pass_through_endpoint', api_key: 'best-api-key-ever', spend: 0.00002125, total_tokens: 11, prompt_tokens: 8, completion_tokens: 3, startTime: '2025-05-21T20:59:08.573000Z', endTime: '2025-05-21T20:59:09.256000Z', completionStartTime: '2025-05-21T20:59:09.256000Z', model: 'gemini-1.5-pro', model_id: '', model_group: '', custom_llm_provider: 'vertex_ai', api_base: 'https://us-central1-aiplatform.googleapis.com/v1/projects/******************************/locations/us-central1/publishers/google/models/gemini-1.5-pro:streamGenerateContent?alt=sse', user: 'best-user-id-ever', metadata: { batch_models: null, usage_object: [Object], user_api_key: 'best-api-key-ever', applied_guardrails: null, user_api_key_alias: null, user_api_key_org_id: null, user_api_key_team_id: 'best-team-id-ever', user_api_key_user_id: 'best-user-id-ever', guardrail_information: null, model_map_information: [Object], mcp_tool_call_metadata: null, additional_usage_values: [Object], user_api_key_team_alias: null, vector_store_request_metadata: null }, cache_hit: 'False', cache_key: 'Cache OFF', request_tags: [ 'vertex-js-sdk', 'pass-through-endpoint' ], team_id: 'best-team-id-ever', end_user: '', requester_ip_address: null, messages: {}, response: {}, session_id: '8d03712e-0d47-4165-84a1-490c59e1ea28', status: 'success', proxy_server_request: {} } ]   at Object.log (tests/pass_through_tests/test_vertex_with_spend.test.js:186:17)  FAIL  tests/pass_through_tests/test_vertex_with_spend.test.js (32.25 s) Vertex AI Tests ✕ should successfully generate non-streaming content with tags (15835 ms) ✓ should successfully generate streaming content with tags (15772 ms)  ● Vertex AI Tests › should successfully generate non-streaming content with tags TypeError: Cannot read properties of null (reading 'request_id')     116 | console.log("spendData", spendData)   117 | expect(spendData).toBeDefined();  > 118 | expect(spendData[0].request_id).toBe(callId);   | ^   119 | expect(spendData[0].call_type).toBe('pass_through_endpoint');   120 | expect(spendData[0].request_tags).toEqual(['vertex-js-sdk', 'pass-through-endpoint']);   121 | expect(spendData[0].metadata).toHaveProperty('user_api_key');   at Object.request_id (tests/pass_through_tests/test_vertex_with_spend.test.js:118:29) Test Suites: 2 failed, 1 passed, 3 total Tests: 2 failed, 4 passed, 6 total Snapshots: 0 total Time: 32.449 s Ran all test suites matching /tests\/pass_through_tests/i.