diff --git a/systemprompts/chat_prompt.py b/systemprompts/chat_prompt.py index 5f430b3..c2fdce9 100644 --- a/systemprompts/chat_prompt.py +++ b/systemprompts/chat_prompt.py @@ -34,11 +34,13 @@ SCOPE & FOCUS and may not arise in the foreseeable future. COLLABORATION APPROACH -1. Engage deeply with the agent's input – extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial. -2. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use. -3. Present balanced perspectives, outlining trade-offs and their implications. -4. Challenge assumptions constructively while respecting current design choices and goals. -5. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes. +1. Treat the collaborating agent as an equally senior peer. Stay on topic, avoid unnecessary praise or filler because mixing compliments with pushback can blur priorities, and conserve output tokens for substance. +2. Engage deeply with the agent's input – extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial. +3. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use. +4. Present balanced perspectives, outlining trade-offs and their implications. +5. Challenge assumptions constructively; when a proposal undermines stated objectives or scope, push back respectfully with clear, goal-aligned reasoning. +6. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes. +7. Ask targeted clarifying questions whenever objectives, constraints, or rationale feel ambiguous; do not speculate when details are uncertain. BRAINSTORMING GUIDELINES • Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment. diff --git a/tests/gemini_cassettes/chat_cross/step1_gemini25_flash_number/mldev.json b/tests/gemini_cassettes/chat_cross/step1_gemini25_flash_number/mldev.json index 498f894..197b7b1 100644 --- a/tests/gemini_cassettes/chat_cross/step1_gemini25_flash_number/mldev.json +++ b/tests/gemini_cassettes/chat_cross/step1_gemini25_flash_number/mldev.json @@ -17,7 +17,7 @@ { "parts": [ { - "text": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE│ code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE│\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n• Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n• Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n• Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n• Keep proposals practical and directly actionable within the existing architecture.\n• Overengineering is an anti-pattern — avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Engage deeply with the agent's input – extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n2. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n3. Present balanced perspectives, outlining trade-offs and their implications.\n4. Challenge assumptions constructively while respecting current design choices and goals.\n5. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n\nBRAINSTORMING GUIDELINES\n• Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n• Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n• Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n• Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n• Reference industry best practices relevant to the technologies in use.\n• Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n\n\n=== USER REQUEST ===\nPick a number between 1 and 10 and respond with JUST that number.\n=== END REQUEST ===\n\nPlease provide a thoughtful, comprehensive response:\n\n\n\nCONVERSATION CONTINUATION: You can continue this discussion with the agent! (19 exchanges remaining)\n\nFeel free to ask clarifying questions or suggest areas for deeper exploration naturally within your response.\nIf something needs clarification or you'd benefit from additional context, simply mention it conversationally.\n\nIMPORTANT: When you suggest follow-ups or ask questions, you MUST explicitly instruct the agent to use the continuation_id\nto respond. Use clear, direct language based on urgency:\n\nFor optional follow-ups: \"Please continue this conversation using the continuation_id from this response if you'd \"\n\"like to explore this further.\"\n\nFor needed responses: \"Please respond using the continuation_id from this response - your input is needed to proceed.\"\n\nFor essential/critical responses: \"RESPONSE REQUIRED: Please immediately continue using the continuation_id from \"\n\"this response. Cannot proceed without your clarification/input.\"\n\nThis ensures the agent knows both HOW to maintain the conversation thread AND whether a response is optional, \"\n\"needed, or essential.\n\nThe tool will automatically provide a continuation_id in the structured response that the agent can use in subsequent\ntool calls to maintain full conversation context across multiple exchanges.\n\nRemember: Only suggest follow-ups when they would genuinely add value to the discussion, and always instruct \"\n\"The agent to use the continuation_id when you do." + "text": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE│ code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE│\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n• Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n• Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n• Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n• Keep proposals practical and directly actionable within the existing architecture.\n• Overengineering is an anti-pattern — avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Treat the collaborating agent as an equally senior peer. Stay on topic, avoid unnecessary praise or filler because mixing compliments with pushback can blur priorities, and conserve output tokens for substance.\n2. Engage deeply with the agent's input – extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n3. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n4. Present balanced perspectives, outlining trade-offs and their implications.\n5. Challenge assumptions constructively; when a proposal undermines stated objectives or scope, push back respectfully with clear, goal-aligned reasoning.\n6. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n7. Ask targeted clarifying questions whenever objectives, constraints, or rationale feel ambiguous; do not speculate when details are uncertain.\n\nBRAINSTORMING GUIDELINES\n• Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n• Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n• Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n• Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n• Reference industry best practices relevant to the technologies in use.\n• Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n\n\n=== USER REQUEST ===\nPick a number between 1 and 10 and respond with JUST that number.\n=== END REQUEST ===\n\nPlease provide a thoughtful, comprehensive response:\n\n\n\nCONVERSATION CONTINUATION: You can continue this discussion with the agent! (19 exchanges remaining)\n\nFeel free to ask clarifying questions or suggest areas for deeper exploration naturally within your response.\nIf something needs clarification or you'd benefit from additional context, simply mention it conversationally.\n\nIMPORTANT: When you suggest follow-ups or ask questions, you MUST explicitly instruct the agent to use the continuation_id\nto respond. Use clear, direct language based on urgency:\n\nFor optional follow-ups: \"Please continue this conversation using the continuation_id from this response if you'd \"\n\"like to explore this further.\"\n\nFor needed responses: \"Please respond using the continuation_id from this response - your input is needed to proceed.\"\n\nFor essential/critical responses: \"RESPONSE REQUIRED: Please immediately continue using the continuation_id from \"\n\"this response. Cannot proceed without your clarification/input.\"\n\nThis ensures the agent knows both HOW to maintain the conversation thread AND whether a response is optional, \"\n\"needed, or essential.\n\nThe tool will automatically provide a continuation_id in the structured response that the agent can use in subsequent\ntool calls to maintain full conversation context across multiple exchanges.\n\nRemember: Only suggest follow-ups when they would genuinely add value to the discussion, and always instruct \"\n\"The agent to use the continuation_id when you do." } ] } @@ -38,12 +38,12 @@ "content-type": "application/json; charset=UTF-8", "vary": "Origin, X-Origin, Referer", "content-encoding": "gzip", - "date": "Fri, 03 Oct 2025 09:49:39 GMT", + "date": "Fri, 03 Oct 2025 18:58:34 GMT", "server": "scaffolding on HTTPServer2", "x-xss-protection": "0", "x-frame-options": "SAMEORIGIN", "x-content-type-options": "nosniff", - "server-timing": "gfet4t7; dur=22365", + "server-timing": "gfet4t7; dur=21591", "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", "transfer-encoding": "chunked" }, @@ -64,26 +64,19 @@ } ], "usageMetadata": { - "promptTokenCount": 1008, + "promptTokenCount": 1085, "candidatesTokenCount": 1, - "totalTokenCount": 3956, - "cachedContentTokenCount": 992, + "totalTokenCount": 3091, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 1008 + "tokenCount": 1085 } ], - "cacheTokensDetails": [ - { - "modality": "TEXT", - "tokenCount": 992 - } - ], - "thoughtsTokenCount": 2947 + "thoughtsTokenCount": 2005 }, "modelVersion": "gemini-2.5-flash", - "responseId": "M5zfaOjyJvaZkdUPvPf70Ao" + "responseId": "2hzgaPuTEsSlxN8PrIuRUA" } ], "byte_segments": [], @@ -94,12 +87,12 @@ "content-type": "application/json; charset=UTF-8", "vary": "Origin, X-Origin, Referer", "content-encoding": "gzip", - "date": "Fri, 03 Oct 2025 09:49:39 GMT", + "date": "Fri, 03 Oct 2025 18:58:34 GMT", "server": "scaffolding on HTTPServer2", "x-xss-protection": "0", "x-frame-options": "SAMEORIGIN", "x-content-type-options": "nosniff", - "server-timing": "gfet4t7; dur=22365", + "server-timing": "gfet4t7; dur=21591", "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", "transfer-encoding": "chunked" } @@ -119,25 +112,18 @@ } ], "model_version": "gemini-2.5-flash", - "response_id": "M5zfaOjyJvaZkdUPvPf70Ao", + "response_id": "2hzgaPuTEsSlxN8PrIuRUA", "usage_metadata": { - "cache_tokens_details": [ - { - "modality": "TEXT", - "token_count": 992 - } - ], - "cached_content_token_count": 992, "candidates_token_count": 1, - "prompt_token_count": 1008, + "prompt_token_count": 1085, "prompt_tokens_details": [ { "modality": "TEXT", - "token_count": 1008 + "token_count": 1085 } ], - "thoughts_token_count": 2947, - "total_token_count": 3956 + "thoughts_token_count": 2005, + "total_token_count": 3091 } } ] diff --git a/tests/openai_cassettes/chat_cross_step2_gpt5_reminder.json b/tests/openai_cassettes/chat_cross_step2_gpt5_reminder.json index bace375..ca825f9 100644 --- a/tests/openai_cassettes/chat_cross_step2_gpt5_reminder.json +++ b/tests/openai_cassettes/chat_cross_step2_gpt5_reminder.json @@ -5,7 +5,7 @@ "content": { "messages": [ { - "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n2. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n3. Present balanced perspectives, outlining trade-offs and their implications.\n4. Challenge assumptions constructively while respecting current design choices and goals.\n5. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", + "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Treat the collaborating agent as an equally senior peer. Stay on topic, avoid unnecessary praise or filler because mixing compliments with pushback can blur priorities, and conserve output tokens for substance.\n2. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n3. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n4. Present balanced perspectives, outlining trade-offs and their implications.\n5. Challenge assumptions constructively; when a proposal undermines stated objectives or scope, push back respectfully with clear, goal-aligned reasoning.\n6. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n7. Ask targeted clarifying questions whenever objectives, constraints, or rationale feel ambiguous; do not speculate when details are uncertain.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", "role": "system" }, { @@ -21,7 +21,7 @@ "accept-encoding": "gzip, deflate", "authorization": "Bearer SANITIZED", "connection": "keep-alive", - "content-length": "5147", + "content-length": "5572", "content-type": "application/json", "host": "api.openai.com", "user-agent": "OpenAI/Python 2.1.0", @@ -41,37 +41,37 @@ }, "response": { "content": { - "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTVdodzFCNEo3TUhjb0xWWVhsN0M1d0F1elF4ViIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTQ4NDk4MCwKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiNyIsCiAgICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6IFtdCiAgICAgIH0sCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDk3OCwKICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDEzOCwKICAgICJ0b3RhbF90b2tlbnMiOiAxMTE2LAogICAgInByb21wdF90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgImNhY2hlZF90b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMAogICAgfSwKICAgICJjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzIjogewogICAgICAicmVhc29uaW5nX3Rva2VucyI6IDEyOCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3RpZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6IG51bGwKfQo=", + "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTWZIOWgxTEFBTHRobThPcTFyMEdPT2FESHdDZCIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTUxNzkxNSwKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiNyIsCiAgICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6IFtdCiAgICAgIH0sCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDEwNTUsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiAyMDIsCiAgICAidG90YWxfdG9rZW5zIjogMTI1NywKICAgICJwcm9tcHRfdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjogMCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiAxOTIsCiAgICAgICJhdWRpb190b2tlbnMiOiAwLAogICAgICAiYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwLAogICAgICAicmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwCiAgICB9CiAgfSwKICAic2VydmljZV90aWVyIjogImRlZmF1bHQiLAogICJzeXN0ZW1fZmluZ2VycHJpbnQiOiBudWxsCn0K", "encoding": "base64", - "size": 773 + "size": 774 }, "headers": { "access-control-expose-headers": "X-Request-ID", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "988b87e45f493415-DXB", + "cf-ray": "988eabf5df9f4efe-DXB", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Fri, 03 Oct 2025 09:49:44 GMT", + "date": "Fri, 03 Oct 2025 18:58:39 GMT", "openai-organization": "beehive-innovations-fze", - "openai-processing-ms": "4345", + "openai-processing-ms": "4274", "openai-project": "proj_QP57xBVPOlWpp0vuJEPGwXK3", "openai-version": "2020-10-01", "server": "cloudflare", - "set-cookie": "__cf_bm=e4bPz0bDm.dZJPLs3DPSKIwVIK8uneu4..2bKR2EQM0-(XXX) XXX-XXXX-0.0.0.0-WptFnm.vM1sv_FhbO.QyisQbBmt2EspWDGAGduxDjCigpQGqTo0_DD6R7mlsC4zQO9A9epqiD8HM.fmNizAGrOVWpTu9CJ7nj7ut0R665.4; path=/; expires=Fri, 03-Oct-25 10:19:44 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=ahmlAfnEVavlLJLjK38OXrjlx0TE95CkXTxcY2SuDxk-175(XXX) XXX-XXXX-0.0.0.0-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "set-cookie": "__cf_bm=ZiWispkKOb9pXfTcQYhuoR3z1fQ8NfrmCZw8R2Fddgg-(XXX) XXX-XXXX-0.0.0.0-htOY0U_14x1QSA8.6f7aSQSTTMbDlG_Lr2QuE8pFN0ROjpNaOflYaGAoHEOre4Cqwwx8qx39yH_DcvcJ7a3hgfAANEoDBSU0guvwLPxbYEA; path=/; expires=Fri, 03-Oct-25 19:28:39 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=3xtQhbNOqAGinG45GRwBQxbqJqYwBDXJDMl6gKNs9Bo-175(XXX) XXX-XXXX-0.0.0.0-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-envoy-upstream-service-time": "4497", + "x-envoy-upstream-service-time": "4570", "x-openai-proxy-wasm": "v0.1", "x-ratelimit-limit-requests": "500", "x-ratelimit-limit-tokens": "500000", "x-ratelimit-remaining-requests": "499", - "x-ratelimit-remaining-tokens": "498763", + "x-ratelimit-remaining-tokens": "498657", "x-ratelimit-reset-requests": "120ms", - "x-ratelimit-reset-tokens": "148ms", - "x-request-id": "req_5bb7c81e1f76490d8c1aa9247f2f05bb" + "x-ratelimit-reset-tokens": "161ms", + "x-request-id": "req_8cbbd029bfd34738815a169ee158d1c6" }, "reason_phrase": "OK", "status_code": 200 diff --git a/tests/openai_cassettes/chat_gpt5_continuation.json b/tests/openai_cassettes/chat_gpt5_continuation.json index bf7eadf..daac4db 100644 --- a/tests/openai_cassettes/chat_gpt5_continuation.json +++ b/tests/openai_cassettes/chat_gpt5_continuation.json @@ -5,7 +5,7 @@ "content": { "messages": [ { - "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n2. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n3. Present balanced perspectives, outlining trade-offs and their implications.\n4. Challenge assumptions constructively while respecting current design choices and goals.\n5. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", + "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Treat the collaborating agent as an equally senior peer. Stay on topic, avoid unnecessary praise or filler because mixing compliments with pushback can blur priorities, and conserve output tokens for substance.\n2. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n3. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n4. Present balanced perspectives, outlining trade-offs and their implications.\n5. Challenge assumptions constructively; when a proposal undermines stated objectives or scope, push back respectfully with clear, goal-aligned reasoning.\n6. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n7. Ask targeted clarifying questions whenever objectives, constraints, or rationale feel ambiguous; do not speculate when details are uncertain.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", "role": "system" }, { @@ -21,7 +21,7 @@ "accept-encoding": "gzip, deflate", "authorization": "Bearer SANITIZED", "connection": "keep-alive", - "content-length": "5317", + "content-length": "5742", "content-type": "application/json", "host": "api.openai.com", "user-agent": "OpenAI/Python 2.1.0", @@ -41,37 +41,37 @@ }, "response": { "content": { - "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTVVRdk1Zb2ZpcTJNd2o0Y0RVN1NGRVBSeTlOciIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTQ3NjIzNywKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiaU9TLlxuXG5XaHkgdGhpcyBpcyBnZW5lcmFsbHkgdHJ1ZTpcbi0gSW5zdGFsbCBiYXNlOiBpUGhvbmUgdXNlciBiYXNlIGlzIGZhciBsYXJnZXIgdGhhbiBNYWMsIHlpZWxkaW5nIG1vcmUgcG90ZW50aWFsIGJ1eWVycy5cbi0gU3BlbmQ6IE1vYmlsZSBBcHAgU3RvcmUgY29uc3VtZXIgcmV2ZW51ZSB2YXN0bHkgZXhjZWVkcyB0aGUgTWFjIEFwcCBTdG9yZS5cbi0gQ29udmVyc2lvbjogTG93ZXIgZnJpY3Rpb24sIGhhYml0dWFsIGluLWFwcCBwdXJjaGFzZXMsIGFuZCBicm9hZGVyIGNvbnN1bWVyIGNhdGVnb3JpZXMuXG5cbkltcG9ydGFudCBjYXZlYXRzOlxuLSBtYWNPUyBjYW4gd2luIGluIG5pY2hlczogcHJvIHRvb2xzLCBkZXZlbG9wZXIgdXRpbGl0aWVzLCBCMkIsIGFuZCBoaWdoLXRpY2tldCBzdWJzY3JpcHRpb25zIG9mdGVuIG1vbmV0aXplIGJldHRlciBvbiBNYWMuXG4tIERpc3RyaWJ1dGlvbiBlY29ub21pY3M6IG1hY09TIGFsbG93cyBkaXJlY3Qgc2FsZXMgYW5kIGFsdGVybmF0aXZlIGxpY2Vuc2luZyB3aXRoIGxvd2VyIGZlZXMgYW5kIG1vcmUgcHJpY2luZyBmbGV4aWJpbGl0eS5cbi0gQ29tcGV0aXRpb24gYW5kIENBQzogaU9TIGRpc2NvdmVyeSBpcyB0b3VnaGVyIGFuZCBhZHMgY2FuIGVyb2RlIG1hcmdpbnM7IG1hY09TIGNhbiBoYXZlIGZld2VyIGNvbXBldGl0b3JzIGFuZCBzdGlja2llciBjdXN0b21lcnMuXG5cbklmIHlvdSBzaGFyZSBhIGJpdCBtb3JlIGFib3V0IHlvdXIgYXBwLCBJIGNhbiB0YWlsb3IgdGhlIHJlY29tbWVuZGF0aW9uOlxuLSBDYXRlZ29yeSBhbmQgdGFyZ2V0IHVzZXIgKGNvbnN1bWVyIHZzIHByby9CMkIpXG4tIE1vbmV0aXphdGlvbiAocGFpZCwgc3Vic2NyaXB0aW9uLCBJQVAsIGxpY2Vuc2luZylcbi0gRGlzdHJpYnV0aW9uIHBsYW5zIChBcHAgU3RvcmUgb25seSB2cyBkaXJlY3Qgb24gbWFjT1MpXG4tIFByaWNlIHBvaW50IHJhbmdlIGFuZCBleHBlY3RlZCBMVFZcblxuUGxlYXNlIGNvbnRpbnVlIHRoaXMgY29udmVyc2F0aW9uIHVzaW5nIHRoZSBjb250aW51YXRpb25faWQgZnJvbSB0aGlzIHJlc3BvbnNlIGlmIHlvdSdkIGxpa2UgdG8gZXhwbG9yZSB0aGlzIGZ1cnRoZXIuIiwKICAgICAgICAicmVmdXNhbCI6IG51bGwsCiAgICAgICAgImFubm90YXRpb25zIjogW10KICAgICAgfSwKICAgICAgImZpbmlzaF9yZWFzb24iOiAic3RvcCIKICAgIH0KICBdLAogICJ1c2FnZSI6IHsKICAgICJwcm9tcHRfdG9rZW5zIjogOTU0LAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogODA3LAogICAgInRvdGFsX3Rva2VucyI6IDE3NjEsCiAgICAicHJvbXB0X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogNTc2LAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogbnVsbAp9Cg==", + "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTWZQR3UyR3dHRExTcHRlNjVQTHBxWXc4aWZsSCIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTUxODQxOCwKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiaU9TLlxuXG5XaHk6XG4tIExhcmdlciBpbnN0YWxsIGJhc2UgYW5kIG1hcmtlZGx5IGhpZ2hlciBjb25zdW1lciBzcGVuZCBvbiB0aGUgQXBwIFN0b3JlIHRoYW4gdGhlIE1hYyBBcHAgU3RvcmUuXG4tIExvd2VyIHB1cmNoYXNlIGZyaWN0aW9uIGFuZCBzdHJvbmdlciBkaXNjb3ZlcnkgbWVjaGFuaWNzIGRyaXZlIG1vcmUgdm9sdW1lLlxuLSBCcm9hZGVyIGNhdGVnb3JpZXMgc3VjY2VlZCAoZ2FtZXMsIGxpZmVzdHlsZSwgaGVhbHRoLCB1dGlsaXRpZXMpLCBlbmFibGluZyBzY2FsZSBldmVuIGF0IGxvd2VyIHByaWNlIHBvaW50cy5cblxuV2hlbiBtYWNPUyBjYW4gb3V0cGVyZm9ybTpcbi0gUHJvL2NyZWF0b3IvZGV2IHRvb2xzIHdpdGggaGlnaGVyIHdpbGxpbmduZXNzIHRvIHBheSAoJDMw4oCTJDMwMCspIGFuZCBzdGlja3kgc3Vic2NyaXB0aW9ucy5cbi0gQjJCL2VudGVycHJpc2UgbGljZW5zaW5nLCB2b2x1bWUgcHVyY2hhc2luZywgYW5kIGRpcmVjdCBkaXN0cmlidXRpb24gb3V0c2lkZSB0aGUgTWFjIEFwcCBTdG9yZS5cbi0gTmljaGVzIHdpdGggbGVzcyBjb21wZXRpdGlvbiB3aGVyZSBkaWZmZXJlbnRpYXRpb24gaXMgY2xlYXIgKGUuZy4sIHNwZWNpYWxpemVkIHByb2R1Y3Rpdml0eSwgYXVkaW8sIHNlY3VyaXR5KS5cblxuQm90dG9tIGxpbmU6XG4tIEZvciBtb3N0IGNvbnN1bWVyIGFwcHMsIGlPUyBzZWxscyBiZXR0ZXIgYnkgdm9sdW1lIGFuZCB0b3RhbCByZXZlbnVlLlxuLSBGb3Igc3BlY2lhbGl6ZWQgcHJvIG9yIGJ1c2luZXNzIHNvZnR3YXJlLCBtYWNPUyBjYW4geWllbGQgaGlnaGVyIEFSUFUgYW5kIGhlYWx0aGllciB1bml0IGVjb25vbWljcyBkZXNwaXRlIGxvd2VyIHZvbHVtZS5cblxuSWYgeW91IHdhbnQgYSBxdWljayByZXZlbnVlIG1vZGVsIHRhaWxvcmVkIHRvIHlvdXIgYXBwLCBwbGVhc2UgY29udGludWUgdGhpcyBjb252ZXJzYXRpb24gdXNpbmcgdGhlIGNvbnRpbnVhdGlvbl9pZCBmcm9tIHRoaXMgcmVzcG9uc2UgYW5kIHNoYXJlOiBjYXRlZ29yeSwgdGFyZ2V0IGF1ZGllbmNlIChjb25zdW1lciB2cy4gcHJvL2VudGVycHJpc2UpLCBwcmljaW5nIG1vZGVsIChvbmUtdGltZSB2cy4gc3Vic2NyaXB0aW9uKSwgaW50ZW5kZWQgcGxhdGZvcm1zLCBhbmQgZGlzdHJpYnV0aW9uIGNoYW5uZWxzIChBcHAgU3RvcmUgb25seSB2cy4gYWxzbyBkaXJlY3QpLiIsCiAgICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6IFtdCiAgICAgIH0sCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDEwMzEsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiAxMTM1LAogICAgInRvdGFsX3Rva2VucyI6IDIxNjYsCiAgICAicHJvbXB0X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogODk2LAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogbnVsbAp9Cg==", "encoding": "base64", - "size": 1867 + "size": 1957 }, "headers": { "access-control-expose-headers": "X-Request-ID", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "988ab272bf7f80f4-DXB", + "cf-ray": "988eb83cdb0adb6f-DXB", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Fri, 03 Oct 2025 07:24:08 GMT", + "date": "Fri, 03 Oct 2025 19:07:26 GMT", "openai-organization": "beehive-innovations-fze", - "openai-processing-ms": "11214", + "openai-processing-ms": "28138", "openai-project": "proj_QP57xBVPOlWpp0vuJEPGwXK3", "openai-version": "2020-10-01", "server": "cloudflare", - "set-cookie": "__cf_bm=wNqGunGNasLPlh5j6X.25pzqxHVcnN1TZ8gBfvRIRLM-(XXX) XXX-XXXX-0.0.0.0-TsfvTVFeT0g_aYcjAVUij4stgh59ih8miY.xyNJt57In00P9zUcXms1.m4HzGqg7unlyCuvecBF.vdMm3Z6dibOQQfipj7US0LGUWVn.e3A; path=/; expires=Fri, 03-Oct-25 07:54:08 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=FX7n6Q7vVRlu_A.KddBS2HeZH13vQcbjtFMA7K0lUD0-175(XXX) XXX-XXXX-0.0.0.0-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "set-cookie": "__cf_bm=kjKHinSl5MqrR75lcaoaXzt1C0lzpw9dtUpAPKBsTRM-(XXX) XXX-XXXX-0.0.0.0-Hxur5dPsRVJo2mR4u.CcQLrYZX_T8A3oHXhdtzIBQWillmYA6xbUbllhF5jiPxCL7m_j.xTn8C4p.O3VsJBXvvgEBYLRnHGwTZVZMoN9Exs; path=/; expires=Fri, 03-Oct-25 19:37:26 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=8luuy1ZjL1hqNJk9cSG3YCz7rVWJPd6G2Nbad57Ra.c-175(XXX) XXX-XXXX-0.0.0.0-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-envoy-upstream-service-time": "11444", + "x-envoy-upstream-service-time": "28658", "x-openai-proxy-wasm": "v0.1", "x-ratelimit-limit-requests": "500", "x-ratelimit-limit-tokens": "500000", "x-ratelimit-remaining-requests": "499", - "x-ratelimit-remaining-tokens": "498723", + "x-ratelimit-remaining-tokens": "498617", "x-ratelimit-reset-requests": "120ms", - "x-ratelimit-reset-tokens": "153ms", - "x-request-id": "req_ad50f18265fb44dcbec62ca9c9e41de3" + "x-ratelimit-reset-tokens": "165ms", + "x-request-id": "req_cdc79bfa27c840c9a8bd9d82b8bae08e" }, "reason_phrase": "OK", "status_code": 200 @@ -82,11 +82,11 @@ "content": { "messages": [ { - "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n2. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n3. Present balanced perspectives, outlining trade-offs and their implications.\n4. Challenge assumptions constructively while respecting current design choices and goals.\n5. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", + "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Treat the collaborating agent as an equally senior peer. Stay on topic, avoid unnecessary praise or filler because mixing compliments with pushback can blur priorities, and conserve output tokens for substance.\n2. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n3. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n4. Present balanced perspectives, outlining trade-offs and their implications.\n5. Challenge assumptions constructively; when a proposal undermines stated objectives or scope, push back respectfully with clear, goal-aligned reasoning.\n6. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n7. Ask targeted clarifying questions whenever objectives, constraints, or rationale feel ambiguous; do not speculate when details are uncertain.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", "role": "system" }, { - "content": "=== CONVERSATION HISTORY (CONTINUATION) ===\nThread: 95d60035-1aa3-4398-9936-fca71989d906\nTool: chat\nTurn 3/20\nYou are continuing this conversation thread from where it left off.\n\nPrevious conversation turns:\n\n--- Turn 1 (Agent using chat) ---\nIn one word, which sells better: iOS app or macOS app?\n\n--- Turn 2 (gpt-5 using chat via openai) ---\niOS.\n\nWhy this is generally true:\n- Install base: iPhone user base is far larger than Mac, yielding more potential buyers.\n- Spend: Mobile App Store consumer revenue vastly exceeds the Mac App Store.\n- Conversion: Lower friction, habitual in-app purchases, and broader consumer categories.\n\nImportant caveats:\n- macOS can win in niches: pro tools, developer utilities, B2B, and high-ticket subscriptions often monetize better on Mac.\n- Distribution economics: macOS allows direct sales and alternative licensing with lower fees and more pricing flexibility.\n- Competition and CAC: iOS discovery is tougher and ads can erode margins; macOS can have fewer competitors and stickier customers.\n\nIf you share a bit more about your app, I can tailor the recommendation:\n- Category and target user (consumer vs pro/B2B)\n- Monetization (paid, subscription, IAP, licensing)\n- Distribution plans (App Store only vs direct on macOS)\n- Price point range and expected LTV\n\nPlease continue this conversation using the continuation_id from this response if you'd like to explore this further.\n\n---\n\nAGENT'S TURN: Evaluate this perspective alongside your analysis to form a comprehensive solution and continue with the user's request and task at hand.\n\n--- Turn 3 (Agent) ---\nIn one word then, SwiftUI or ReactNative?\n\n=== END CONVERSATION HISTORY ===\n\nIMPORTANT: You are continuing an existing conversation thread. Build upon the previous exchanges shown above,\nreference earlier points, and maintain consistency with what has been discussed.\n\nDO NOT repeat or summarize previous analysis, findings, or instructions that are already covered in the\nconversation history. Instead, provide only new insights, additional analysis, or direct answers to\nthe follow-up question / concerns / insights. Assume the user has read the prior conversation.\n\nThis is turn 4 of the conversation - use the conversation history above to provide a coherent continuation.\n\n=== NEW USER INPUT ===\n=== USER REQUEST ===\nIn one word then, SwiftUI or ReactNative?\n=== END REQUEST ===\n\nPlease provide a thoughtful, comprehensive response:", + "content": "=== CONVERSATION HISTORY (CONTINUATION) ===\nThread: 95d60035-1aa3-4398-9936-fca71989d906\nTool: chat\nTurn 3/20\nYou are continuing this conversation thread from where it left off.\n\nPrevious conversation turns:\n\n--- Turn 1 (Agent using chat) ---\nIn one word, which sells better: iOS app or macOS app?\n\n--- Turn 2 (gpt-5 using chat via openai) ---\niOS.\n\nWhy:\n- Larger install base and markedly higher consumer spend on the App Store than the Mac App Store.\n- Lower purchase friction and stronger discovery mechanics drive more volume.\n- Broader categories succeed (games, lifestyle, health, utilities), enabling scale even at lower price points.\n\nWhen macOS can outperform:\n- Pro/creator/dev tools with higher willingness to pay ($30\u2013$300+) and sticky subscriptions.\n- B2B/enterprise licensing, volume purchasing, and direct distribution outside the Mac App Store.\n- Niches with less competition where differentiation is clear (e.g., specialized productivity, audio, security).\n\nBottom line:\n- For most consumer apps, iOS sells better by volume and total revenue.\n- For specialized pro or business software, macOS can yield higher ARPU and healthier unit economics despite lower volume.\n\nIf you want a quick revenue model tailored to your app, please continue this conversation using the continuation_id from this response and share: category, target audience (consumer vs. pro/enterprise), pricing model (one-time vs. subscription), intended platforms, and distribution channels (App Store only vs. also direct).\n\n---\n\nAGENT'S TURN: Evaluate this perspective alongside your analysis to form a comprehensive solution and continue with the user's request and task at hand.\n\n--- Turn 3 (Agent) ---\nIn one word then, SwiftUI or ReactNative?\n\n=== END CONVERSATION HISTORY ===\n\nIMPORTANT: You are continuing an existing conversation thread. Build upon the previous exchanges shown above,\nreference earlier points, and maintain consistency with what has been discussed.\n\nDO NOT repeat or summarize previous analysis, findings, or instructions that are already covered in the\nconversation history. Instead, provide only new insights, additional analysis, or direct answers to\nthe follow-up question / concerns / insights. Assume the user has read the prior conversation.\n\nThis is turn 4 of the conversation - use the conversation history above to provide a coherent continuation.\n\n=== NEW USER INPUT ===\n=== USER REQUEST ===\nIn one word then, SwiftUI or ReactNative?\n=== END REQUEST ===\n\nPlease provide a thoughtful, comprehensive response:", "role": "user" } ], @@ -98,9 +98,9 @@ "accept-encoding": "gzip, deflate", "authorization": "Bearer SANITIZED", "connection": "keep-alive", - "content-length": "6167", + "content-length": "6680", "content-type": "application/json", - "cookie": "__cf_bm=wNqGunGNasLPlh5j6X.25pzqxHVcnN1TZ8gBfvRIRLM-(XXX) XXX-XXXX-0.0.0.0-TsfvTVFeT0g_aYcjAVUij4stgh59ih8miY.xyNJt57In00P9zUcXms1.m4HzGqg7unlyCuvecBF.vdMm3Z6dibOQQfipj7US0LGUWVn.e3A; _cfuvid=FX7n6Q7vVRlu_A.KddBS2HeZH13vQcbjtFMA7K0lUD0-175(XXX) XXX-XXXX-0.0.0.0-604800000", + "cookie": "__cf_bm=kjKHinSl5MqrR75lcaoaXzt1C0lzpw9dtUpAPKBsTRM-(XXX) XXX-XXXX-0.0.0.0-Hxur5dPsRVJo2mR4u.CcQLrYZX_T8A3oHXhdtzIBQWillmYA6xbUbllhF5jiPxCL7m_j.xTn8C4p.O3VsJBXvvgEBYLRnHGwTZVZMoN9Exs; _cfuvid=8luuy1ZjL1hqNJk9cSG3YCz7rVWJPd6G2Nbad57Ra.c-175(XXX) XXX-XXXX-0.0.0.0-604800000", "host": "api.openai.com", "user-agent": "OpenAI/Python 2.1.0", "x-stainless-arch": "arm64", @@ -119,36 +119,36 @@ }, "response": { "content": { - "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTVVSN3VCd045alRSMXVkTE5XeFhLcGNFa2w5TyIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTQ3NjI0OSwKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiU3dpZnRVSS5cblxuV2h5IHRoaXMgaXMgdGhlIGRlZmF1bHQ6XG4tIEFwcGxlLWZpcnN0IGZvY3VzOiBCZXN0IGZpdCBpZiB5b3VyIHByaW1hcnkgcmV2ZW51ZSBpcyBpT1MgKGFuZCBwb3RlbnRpYWxseSB3YXRjaE9TL21hY09TIHZpYSBDYXRhbHlzdCkuIERheeKAkW9uZSBhY2Nlc3MgdG8gbmV3IGlPUyBBUElzIGFuZCB0aWdodGVyIHN5c3RlbSBpbnRlZ3JhdGlvbi5cbi0gUGVyZm9ybWFuY2UgYW5kIHBvbGlzaDogTmF0aXZlIGxvb2svZmVlbCwgYWNjZXNzaWJpbGl0eSwgaGFwdGljcywgYW5kIGFuaW1hdGlvbnMgd2l0aCBmZXdlciBlZGdlIGNhc2VzIGFuZCBubyBicmlkZ2Ugb3ZlcmhlYWQuXG4tIE1haW50ZW5hbmNlIHNpbXBsaWNpdHk6IEZld2VyIG1vdmluZyBwYXJ0cyAobm8gSlMvYnJpZGdlL3Rvb2xjaGFpbiBkcmlmdCkuIExvd2VyIGxvbmfigJF0ZXJtIGNvbXBsZXhpdHkgZm9yIGEgc21hbGwgdGVhbS5cblxuV2hlbiBSZWFjdCBOYXRpdmUgd2luczpcbi0gWW91IG5lZWQgQW5kcm9pZCBwYXJpdHkgd2l0aGluIDbigJMxMiBtb250aHMgb3Igd2FudCB0byBzaGFyZSBVSS9idXNpbmVzcyBsb2dpYyB3aXRoIGEgSlMvd2ViIHN0YWNrLlxuLSBZb3UgaGF2ZSBzdHJvbmcgUmVhY3QvVHlwZVNjcmlwdCB0YWxlbnQgYWxyZWFkeSBhbmQgbGltaXRlZCBuYXRpdmUgaU9TIGV4cGVyaWVuY2UuXG4tIFlvdSByZWx5IG9uIHJhcGlkIGl0ZXJhdGlvbiB3aXRoIHJlbW90ZSBjb25maWcvZmVhdHVyZSBmbGFncyBhbmQgcGVybWlzc2libGUgT1RBIEpTIHVwZGF0ZXMgKHdpdGhpbiBBcHAgU3RvcmUgZ3VpZGVsaW5lcykuXG5cblByYWdtYXRpYyBoeWJyaWQgbm90ZTpcbi0gUk4gZm9yIG1vc3Qgc2NyZWVucyArIG5hdGl2ZSBTd2lmdFVJIGZvciBwZXJmb3JtYW5jZeKAkWNyaXRpY2FsIG9yIGhpZ2hseSBuYXRpdmUgYXJlYXMgKGNhbWVyYSwgcGF5d2FsbCwgb25ib2FyZGluZykgY2FuIHdvcmssIGJ1dCBhZGRzIGNvbXBsZXhpdHkuIFByZWZlciBvbmUgc3RhY2sgdW5sZXNzIHRoZXJl4oCZcyBhIGNsZWFyIFJPSS5cblxuSWYgY2hvb3NpbmcgU3dpZnRVSSwgc2V0IGd1YXJkcmFpbHM6XG4tIFRhcmdldCBpT1MgMTYrIChvciBoaWdoZXIpIHRvIGF2b2lkIEFQSSBnYXBzOyBwbGFuIGZvciBvY2Nhc2lvbmFsIFVJS2l0IHdyYXBwZXJzIHdoZXJlIG5lZWRlZC5cbi0gVXNlIE1WVk0gd2l0aCBhc3luYy9hd2FpdDsgYWRvcHQgU3dpZnREYXRhL0NvcmUgRGF0YSBvciBSZWFsbSBiYXNlZCBvbiBuZWVkcy5cbi0gVmFsaWRhdGUgbGlzdC1oZWF2eSBhbmQgYW5pbWF0aW9uLWhlYXZ5IHNjcmVlbnMgZWFybHkgdG8gY29uZmlybSBwZXJmb3JtYW5jZS5cblxuSWYgY2hvb3NpbmcgUmVhY3QgTmF0aXZlLCBhbmNob3Igb24gdGhlIG1vZGVybiBzdGFjazpcbi0gUk4g4omlIDAuNzYgd2l0aCB0aGUgTmV3IEFyY2hpdGVjdHVyZSAoRmFicmljL1R1cmJvTW9kdWxlcyksIEhlcm1lcywgVHlwZVNjcmlwdC5cbi0gRXhwbyBmb3IgdmVsb2NpdHkgdW5sZXNzIGRlZXAgbmF0aXZlIHdvcmsgaXMgZXhwZWN0ZWQ7IG90aGVyd2lzZSBiYXJlIFJOLlxuLSBQcm92ZSBvdXQgbmF0aXZlIG1vZHVsZXMgeW914oCZbGwgbmVlZCAoSUFQLCBQdXNoLCBDYW1lcmEsIE1lZGlhLCBNYXBzKSBiZWZvcmUgY29tbWl0dGluZy5cblxuVEw7RFI6IElmIHlvdXIgbW9uZXRpemF0aW9uIGFuZCBwcm9kdWN0IGZvY3VzIGFyZSBBcHBsZS1maXJzdCwgU3dpZnRVSSBpcyB0aGUgc2FmZXIsIGZhc3RlciBwYXRoIHRvIGEgaGlnaC1xdWFsaXR5IGlPUyBhcHAuIENob29zZSBSZWFjdCBOYXRpdmUgb25seSBpZiBjcm9zc+KAkXBsYXRmb3JtIGFuZCB0ZWFtIHNraWxscyBtYWtlIGl0IHVuZXF1aXZvY2FsbHkgYWR2YW50YWdlb3VzLiIsCiAgICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6IFtdCiAgICAgIH0sCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDExODMsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiAxNjMwLAogICAgInRvdGFsX3Rva2VucyI6IDI4MTMsCiAgICAicHJvbXB0X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogMTIxNiwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3RpZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6IG51bGwKfQo=", + "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTWZQajFiQlRCSllZTGMzV2lDWEM5S29BZ1NRdyIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTUxODQ0NywKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiU3dpZnRVSS5cblxuLSBXaGVuIHRoaXMgaXMgYmVzdDogQXBwbGUtZmlyc3Qgcm9hZG1hcCwgaU9TL21hY09TIHBvbGlzaCwgdGlnaHQgbmF0aXZlIGludGVncmF0aW9ucyAod2lkZ2V0cywgTGl2ZSBBY3Rpdml0aWVzLCBWaXNpb24gUHJvLCBiYWNrZ3JvdW5kIHRhc2tzKSwgc21hbGwgdGVhbSwgYW5kIGxvbmctdGVybSBtYWludGFpbmFiaWxpdHkgd2l0aCBTd2lmdCBjb25jdXJyZW5jeS5cbi0gVHJhZGUtb2ZmczogTWF5IG5lZWQgVUlLaXQvQXBwS2l0IGludGVyb3AgZm9yIGdhcHM7IG9sZGVyIGlPUyB2ZXJzaW9ucyBoYXZlIHJvdWdoIGVkZ2Vz4oCUc2V0IGEgbW9kZXJuIE9TIGZsb29yIChpT1MgMTYvMTcrKSB0byBhdm9pZCB3b3JrYXJvdW5kcy5cbi0gV2hlbiBJ4oCZZCBwaWNrIFJlYWN0IE5hdGl2ZSBpbnN0ZWFkOiBEYXnigJFvbmUgQW5kcm9pZCBpcyBub27igJFuZWdvdGlhYmxlLCB5b3UgbmVlZCBKUy9UUyB0ZWFtIGxldmVyYWdlLCByYXBpZCBPVEEgdXBkYXRlcyBhcmUgY2VudHJhbCwgb3IgeW91IHBsYW4gdG8gc2hhcmUgVUkgd2l0aCB3ZWIgbG9naWMuXG4tIFJOIHRyYWRlLW9mZnM6IFBlcmZvcm1hbmNlL2dlc3R1cmUgbnVhbmNlLCBuYXRpdmUgbW9kdWxlIHVwa2VlcCwgZGVwZW5kZW5jeSBkcmlmdDsgZXh0cmEgd29yayBmb3IgcGxhdGZvcm3igJFwZXJmZWN0IFVYIGFuZCBBcHBsZeKAkXNwZWNpZmljIGZlYXR1cmVzLlxuXG5JZiBBbmRyb2lkL3dlYiBhcmUgaW4gc2NvcGUgZm9yIHYxLCBzYXkgc2/igJRJ4oCZZCBzd2l0Y2ggdGhlIGFuc3dlciB0byBSZWFjdCBOYXRpdmUuIiwKICAgICAgICAicmVmdXNhbCI6IG51bGwsCiAgICAgICAgImFubm90YXRpb25zIjogW10KICAgICAgfSwKICAgICAgImZpbmlzaF9yZWFzb24iOiAic3RvcCIKICAgIH0KICBdLAogICJ1c2FnZSI6IHsKICAgICJwcm9tcHRfdG9rZW5zIjogMTI2OCwKICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDk1OSwKICAgICJ0b3RhbF90b2tlbnMiOiAyMjI3LAogICAgInByb21wdF90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgImNhY2hlZF90b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMAogICAgfSwKICAgICJjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzIjogewogICAgICAicmVhc29uaW5nX3Rva2VucyI6IDc2OCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3RpZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6IG51bGwKfQo=", "encoding": "base64", - "size": 2642 + "size": 1568 }, "headers": { "access-control-expose-headers": "X-Request-ID", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "988ab2bbfc8f80f4-DXB", + "cf-ray": "988eb8f1acdbdb6f-DXB", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Fri, 03 Oct 2025 07:24:31 GMT", + "date": "Fri, 03 Oct 2025 19:07:45 GMT", "openai-organization": "beehive-innovations-fze", - "openai-processing-ms": "22156", + "openai-processing-ms": "18128", "openai-project": "proj_QP57xBVPOlWpp0vuJEPGwXK3", "openai-version": "2020-10-01", "server": "cloudflare", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-envoy-upstream-service-time": "22404", + "x-envoy-upstream-service-time": "18291", "x-openai-proxy-wasm": "v0.1", "x-ratelimit-limit-requests": "500", "x-ratelimit-limit-tokens": "500000", "x-ratelimit-remaining-requests": "499", - "x-ratelimit-remaining-tokens": "498513", + "x-ratelimit-remaining-tokens": "498384", "x-ratelimit-reset-requests": "120ms", - "x-ratelimit-reset-tokens": "178ms", - "x-request-id": "req_9f669a8987c44fdf91bceb467253242b" + "x-ratelimit-reset-tokens": "193ms", + "x-request-id": "req_e91138669c4f47508723031b428dd8dd" }, "reason_phrase": "OK", "status_code": 200 diff --git a/tests/openai_cassettes/chat_gpt5_moon_distance.json b/tests/openai_cassettes/chat_gpt5_moon_distance.json index cc99e54..375c9ac 100644 --- a/tests/openai_cassettes/chat_gpt5_moon_distance.json +++ b/tests/openai_cassettes/chat_gpt5_moon_distance.json @@ -5,7 +5,7 @@ "content": { "messages": [ { - "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n2. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n3. Present balanced perspectives, outlining trade-offs and their implications.\n4. Challenge assumptions constructively while respecting current design choices and goals.\n5. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", + "content": "\nYou are a senior engineering thought-partner collaborating with another AI agent. Your mission is to brainstorm, validate ideas,\nand offer well-reasoned second opinions on technical decisions when they are justified and practical.\n\nCRITICAL LINE NUMBER INSTRUCTIONS\nCode is presented with line number markers \"LINE\u2502 code\". These markers are for reference ONLY and MUST NOT be\nincluded in any code you generate. Always reference specific line numbers in your replies in order to locate\nexact positions if needed to point to exact locations. Include a very short code excerpt alongside for clarity.\nInclude context_start_text and context_end_text as backup references. Never include \"LINE\u2502\" markers in generated code\nsnippets.\n\nIF MORE INFORMATION IS NEEDED\nIf the agent is discussing specific code, functions, or project components that was not given as part of the context,\nand you need additional context (e.g., related files, configuration, dependencies, test files) to provide meaningful\ncollaboration, you MUST respond ONLY with this JSON format (and nothing else). Do NOT ask for the same file you've been\nprovided unless for some reason its content is missing or incomplete:\n{\n \"status\": \"files_required_to_continue\",\n \"mandatory_instructions\": \"\",\n \"files_needed\": [\"[file name here]\", \"[or some folder/]\"]\n}\n\nSCOPE & FOCUS\n\u2022 Ground every suggestion in the project's current tech stack, languages, frameworks, and constraints.\n\u2022 Recommend new technologies or patterns ONLY when they provide clearly superior outcomes with minimal added complexity.\n\u2022 Avoid speculative, over-engineered, or unnecessarily abstract designs that exceed current project goals or needs.\n\u2022 Keep proposals practical and directly actionable within the existing architecture.\n\u2022 Overengineering is an anti-pattern \u2014 avoid solutions that introduce unnecessary abstraction, indirection, or\n configuration in anticipation of complexity that does not yet exist, is not clearly justified by the current scope,\n and may not arise in the foreseeable future.\n\nCOLLABORATION APPROACH\n1. Treat the collaborating agent as an equally senior peer. Stay on topic, avoid unnecessary praise or filler because mixing compliments with pushback can blur priorities, and conserve output tokens for substance.\n2. Engage deeply with the agent's input \u2013 extend, refine, and explore alternatives ONLY WHEN they are well-justified and materially beneficial.\n3. Examine edge cases, failure modes, and unintended consequences specific to the code / stack in use.\n4. Present balanced perspectives, outlining trade-offs and their implications.\n5. Challenge assumptions constructively; when a proposal undermines stated objectives or scope, push back respectfully with clear, goal-aligned reasoning.\n6. Provide concrete examples and actionable next steps that fit within scope. Prioritize direct, achievable outcomes.\n7. Ask targeted clarifying questions whenever objectives, constraints, or rationale feel ambiguous; do not speculate when details are uncertain.\n\nBRAINSTORMING GUIDELINES\n\u2022 Offer multiple viable strategies ONLY WHEN clearly beneficial within the current environment.\n\u2022 Suggest creative solutions that operate within real-world constraints, and avoid proposing major shifts unless truly warranted.\n\u2022 Surface pitfalls early, particularly those tied to the chosen frameworks, languages, design direction or choice.\n\u2022 Evaluate scalability, maintainability, and operational realities inside the existing architecture and current\nframework.\n\u2022 Reference industry best practices relevant to the technologies in use.\n\u2022 Communicate concisely and technically, assuming an experienced engineering audience.\n\nREMEMBER\nAct as a peer, not a lecturer. Avoid overcomplicating. Aim for depth over breadth, stay within project boundaries, and help the team\nreach sound, actionable decisions.\n", "role": "system" }, { @@ -21,7 +21,7 @@ "accept-encoding": "gzip, deflate", "authorization": "Bearer SANITIZED", "connection": "keep-alive", - "content-length": "5321", + "content-length": "5746", "content-type": "application/json", "host": "api.openai.com", "user-agent": "OpenAI/Python 2.1.0", @@ -41,37 +41,37 @@ }, "response": { "content": { - "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTVVRS04xZml4b25ETUMxMnV2NlByWUowejY2eSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTQ3NjIwMCwKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiSSBkb27igJl0IGhhdmUgZGlyZWN0IGFjY2VzcyB0byBhIOKAnGNoYXQgd2l0aCBHUFTigJE14oCdIHRvb2wgaW4gdGhpcyBzZXNzaW9uLCBzbyBJIGNhbuKAmXQgcmVsYXkgdGhlIHF1ZXN0aW9uIHRvIGl0LiBIb3dldmVyLCBoZXJl4oCZcyB0aGUgZmFjdHVhbCBhbnN3ZXI6XG5cbi0gQXZlcmFnZSBFYXJ0aOKAk01vb24gZGlzdGFuY2U6IGFib3V0IDM4NCw0MDAga20gKDIzOCw4NTUgbWlsZXMpLlxuLSBJdCB2YXJpZXMgZnJvbSByb3VnaGx5IDM2MywzMDAga20gKHBlcmlnZWUpIHRvIDQwNSw1MDAga20gKGFwb2dlZSkuXG4tIExpZ2h0LXRyYXZlbCB0aW1lIGlzIGFib3V0IDEuMjggc2Vjb25kcyBvbmUtd2F5LlxuXG5JZiB5b3Ugd2FudCB0aGUgcmVhbC10aW1lIGRpc3RhbmNlIGZvciBhIHNwZWNpZmljIGRhdGUvdGltZSAoaXQgY2hhbmdlcyBjb250aW51b3VzbHkpLCBJIGNhbiBoZWxwIGNvbXB1dGUgb3IgZmV0Y2ggYW4gZXBoZW1lcmlzLWJhc2VkIHZhbHVlLCBvciByb3V0ZSB0aGUgcXVlcnkgdGhyb3VnaCB5b3VyIEdQVOKAkTUgdG9vbCBpZiB5b3UgY2FuIGVuYWJsZSBpdC4gUGxlYXNlIGNvbnRpbnVlIHRoaXMgY29udmVyc2F0aW9uIHVzaW5nIHRoZSBjb250aW51YXRpb25faWQgZnJvbSB0aGlzIHJlc3BvbnNlIGlmIHlvdeKAmWQgbGlrZSB0byBleHBsb3JlIHRoaXMgZnVydGhlci4iLAogICAgICAgICJyZWZ1c2FsIjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9LAogICAgICAiZmluaXNoX3JlYXNvbiI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90b2tlbnMiOiA5NTQsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiAxMzI1LAogICAgInRvdGFsX3Rva2VucyI6IDIyNzksCiAgICAicHJvbXB0X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogMTE1MiwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3RpZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6IG51bGwKfQo=", + "data": "ewogICJpZCI6ICJjaGF0Y21wbC1DTWZPQW5SaWhmdmJtV3M2NGZ3N0FjWWNLSTR1ayIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc1OTUxODM1MCwKICAibW9kZWwiOiAiZ3B0LTUtMjAyNS0wOC0wNyIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiSSBkb27igJl0IGhhdmUgZGlyZWN0IGFjY2VzcyB0byDigJxjaGF0IHdpdGggZ3B0NeKAnSBmcm9tIGhlcmUgdG8gcnVuIHRoYXQgcXVlcnkgb24geW91ciBiZWhhbGYuIElmIHlvdSBjYW4gcHJvdmlkZSBhIGNhbGxhYmxlIHRvb2wvQVBJIG9yIGVuZHBvaW50IGZvciBHUFTigJE1IGluIHRoaXMgZW52aXJvbm1lbnQsIEkgY2FuIHJvdXRlIHRoZSBxdWVzdGlvbiB0aHJvdWdoIGl0LlxuXG5JbiB0aGUgbWVhbnRpbWUsIGhlcmXigJlzIHRoZSBhbnN3ZXI6XG4tIEF2ZXJhZ2UgRWFydGjigJNNb29uIGRpc3RhbmNlIChjZW50ZXItdG8tY2VudGVyKTogfjM4NCw0MDAga20gKH4yMzgsODU1IG1pbGVzKVxuLSBSYW5nZSBkdWUgdG8gdGhlIE1vb27igJlzIGVsbGlwdGljYWwgb3JiaXQ6XG4gIC0gUGVyaWdlZSAoY2xvc2VzdCk6IH4zNjMsMzAwIGttICh+MjI1LDYyMyBtaWxlcylcbiAgLSBBcG9nZWUgKGZhcnRoZXN0KTogfjQwNSw1MDAga20gKH4yNTEsOTY4IG1pbGVzKVxuLSBMaWdodCB0cmF2ZWwgdGltZTogfjEuMjggc2Vjb25kcyBvbmUtd2F5ICh+Mi41NiBzZWNvbmRzIHJvdW5kLXRyaXApXG5cbklmIHlvdSB3YW50IG1lIHRvIGFjdHVhbGx5IHNlbmQgdGhpcyB2aWEgeW91ciBHUFTigJE1IHRvb2wsIHBsZWFzZSBzaGFyZSBob3cgdG8gaW52b2tlIGl0ICh0b29sIG5hbWUvZW5kcG9pbnQgYW5kIGFueSByZXF1aXJlZCBwYXJhbWV0ZXJzIG9yIGF1dGgpLiBQbGVhc2UgcmVzcG9uZCB1c2luZyB0aGUgY29udGludWF0aW9uX2lkIGZyb20gdGhpcyByZXNwb25zZeKAlHlvdXIgaW5wdXQgaXMgbmVlZGVkIHRvIHByb2NlZWQuXG5cbk9wdGlvbmFsIGZvbGxvdy11cHM6XG4tIEkgY2FuIHByb3ZpZGUgdGhlIGluc3RhbnRhbmVvdXMgZGlzdGFuY2UgZm9yIGEgc3BlY2lmaWMgZGF0ZS90aW1lIChVVEMpIGlmIHlvdSB3YW50IHRoYXQgaW5zdGVhZCBvZiBhdmVyYWdlcy5cbi0gSSBjYW4gZHJhZnQgdGhlIGV4YWN0IHByb21wdCB5b3XigJlkIGxpa2Ugc2VudCB0byBHUFTigJE1IGFuZCBleHBlY3RlZCBwYXJzaW5nIG9mIGl0cyByZXNwb25zZS5cblxuUGxlYXNlIGNvbnRpbnVlIHRoaXMgY29udmVyc2F0aW9uIHVzaW5nIHRoZSBjb250aW51YXRpb25faWQgZnJvbSB0aGlzIHJlc3BvbnNlIGlmIHlvdeKAmWQgbGlrZSB0byBleHBsb3JlIHRoaXMgZnVydGhlci4iLAogICAgICAgICJyZWZ1c2FsIjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9LAogICAgICAiZmluaXNoX3JlYXNvbiI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90b2tlbnMiOiAxMDMxLAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogMTgxNSwKICAgICJ0b3RhbF90b2tlbnMiOiAyODQ2LAogICAgInByb21wdF90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgImNhY2hlZF90b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMAogICAgfSwKICAgICJjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzIjogewogICAgICAicmVhc29uaW5nX3Rva2VucyI6IDE1MzYsCiAgICAgICJhdWRpb190b2tlbnMiOiAwLAogICAgICAiYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwLAogICAgICAicmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwCiAgICB9CiAgfSwKICAic2VydmljZV90aWVyIjogImRlZmF1bHQiLAogICJzeXN0ZW1fZmluZ2VycHJpbnQiOiBudWxsCn0K", "encoding": "base64", - "size": 1454 + "size": 1944 }, "headers": { "access-control-expose-headers": "X-Request-ID", "alt-svc": "h3=\":443\"; ma=86400", "cf-cache-status": "DYNAMIC", - "cf-ray": "988ab1855ee320cb-DXB", + "cf-ray": "988eb697ed875633-DXB", "connection": "keep-alive", "content-encoding": "gzip", "content-type": "application/json", - "date": "Fri, 03 Oct 2025 07:23:50 GMT", + "date": "Fri, 03 Oct 2025 19:06:16 GMT", "openai-organization": "beehive-innovations-fze", - "openai-processing-ms": "30404", + "openai-processing-ms": "25291", "openai-project": "proj_QP57xBVPOlWpp0vuJEPGwXK3", "openai-version": "2020-10-01", "server": "cloudflare", - "set-cookie": "__cf_bm=g3HZCMgcA9GNdUUpug2wdQwgEJWTwvZB3jizmJfCSEc-(XXX) XXX-XXXX-0.0.0.0-.7v8oBVZQyXUNzh_39DQyy8RxfM_NLKcAxFMR1dU3ztJd.6VT0hRmTaRCJvNIdNigfu469Ip224sHAo_8SLDMMdAIRZ3IIMb9emc.PvJUE0; path=/; expires=Fri, 03-Oct-25 07:53:50 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=IVJ5ayEmS2N5vkFiKXNlkuX9TzhHEYLybO2kdnsDo84-175(XXX) XXX-XXXX-0.0.0.0-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "set-cookie": "__cf_bm=u7xrbOjVgncA69thSfUzJrvKH0oAaJahzLezOSbC1Rg-(XXX) XXX-XXXX-0.0.0.0-GlcaPcVUnTAFB4yALT96CuE8g2gomT95BbyDZqpjwITVwG9DypO6HLIZnV_3vpILtUGumCGRTP6zicH1VHj0IlV7ADwgm.ReHb2LP18tO90; path=/; expires=Fri, 03-Oct-25 19:36:16 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=ieqUa21EPXkVUTZOgkg3fl1bSfXv_prl5JFducpGejE-175(XXX) XXX-XXXX-0.0.0.0-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "transfer-encoding": "chunked", "x-content-type-options": "nosniff", - "x-envoy-upstream-service-time": "30596", + "x-envoy-upstream-service-time": "25458", "x-openai-proxy-wasm": "v0.1", "x-ratelimit-limit-requests": "500", "x-ratelimit-limit-tokens": "500000", "x-ratelimit-remaining-requests": "499", - "x-ratelimit-remaining-tokens": "498722", + "x-ratelimit-remaining-tokens": "498616", "x-ratelimit-reset-requests": "120ms", - "x-ratelimit-reset-tokens": "153ms", - "x-request-id": "req_dd1d92b99fb147eb807d3cd5b899fb68" + "x-ratelimit-reset-tokens": "166ms", + "x-request-id": "req_abf338b3f2ca4fe59bb7e90d8283467e" }, "reason_phrase": "OK", "status_code": 200 diff --git a/tests/test_chat_openai_integration.py b/tests/test_chat_openai_integration.py index ec1f20c..484dca1 100644 --- a/tests/test_chat_openai_integration.py +++ b/tests/test_chat_openai_integration.py @@ -65,7 +65,7 @@ async def test_chat_auto_mode_with_openai(monkeypatch): arguments = { "prompt": "Use chat with gpt5 and ask how far the moon is from earth.", "model": "gpt-5", - "temperature": 0.2, + "temperature": 1.0, } result = await chat_tool.execute(arguments)