{"_id":"@mmmbuto/zai-codex-bridge","_rev":"30-8dca5fae893346cf3d7ece39b7fdaa3e","name":"@mmmbuto/zai-codex-bridge","dist-tags":{"latest":"0.4.9"},"versions":{"0.1.0":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.0","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.0","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"4216b09e5566a87010011c2797bbbc543740ff0e","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.0.tgz","fileCount":7,"integrity":"sha512-wiZPNiN+FIuAAUefKILGLC/FSpmVvAqeDFKDc2tieh4AmH+qyTjCpGg3IZPMr3n6XQJiAe5uywDRI+hDBelZbg==","signatures":[{"sig":"MEYCIQCSE4V3wRjNTG+UwpTUtYgEujlF29zr3ah11bI9nY/KrwIhAMq2iQHsVOjBjlwfTUQlz7CemmhqTRDwk1piXkhcgEYR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31151},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"010e4072ef5d05e1c9efaf2e783f8b2b428e727f","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.0_1768493458283_0.26631056525127095","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.1","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.1","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"9124093c3f40193f704909f3829c35d6f61afbdc","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.1.tgz","fileCount":7,"integrity":"sha512-pdzaLyxukKASd/u8TXSKc4KCIx6Rj4EakTaIg4pKektE/jVx95wIXf6UX07wWvghRccRUYsHekEDAy+9B7dgzg==","signatures":[{"sig":"MEUCIFRSYgOhZTqhWzhFFlscWDCsC5cBCZSFBWUn3/ykJEG2AiEAwuENtBVkHTm8GCo0r2B6FE/9uQekubE/CCm0LuMmd+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29928},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"9e0c3801a6e3de1fe79173b1e94bc144803660fd","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.1_1768493912679_0.6740729993144148","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.2","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.2","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"b4db723a4c8611717de266edd9e9d726fa8067f3","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.2.tgz","fileCount":7,"integrity":"sha512-BMmH6Y6YCpWbeI9aWXWDa1iyVKgfIVdnnpRFStQg1ruj/RjZR0EfKkVYnf4DQoD/v1ZSNgePYCRSF8Ea296UfQ==","signatures":[{"sig":"MEQCIGUuY6r3mdMXJQwN7ZusuJTp8B+TYH4Pboe8uWH//dl2AiAOTdXfjCKWGSme3teLRyp4zpXCxRJaTAEtPCH51PwKMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29967},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"7dc5a99074f9943c6f8b0d7eadfe97f00fb94b00","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.2_1768494348865_0.2994210573647911","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.3","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.3","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"563472fcbe2c4d6c62e54792c27ca8ea77e0da03","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.3.tgz","fileCount":7,"integrity":"sha512-VbTw/UerWizsAe2N130LzNfxbAK51VaZOsfPNkAUuEH7PeEuaotdJVYBEdzMbInHEY+K8EJXmKXgieEKzUHBFw==","signatures":[{"sig":"MEUCIH5wa6RsrwjFfUDDodv3OHeueAcMajhkLXYcOjEhtv4bAiEAyFmqZSRoPwY6nD/ks5G1BdBoTW0c9X5glzjD7Z45jgk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30125},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"2209f6f505b817fc7d00be803bab5b711a976fe1","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.3_1768494509443_0.4156870796992085","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.4","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.4","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"caaa1bfda3e5b8b1778b698bbab5cfa5f5d71049","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.4.tgz","fileCount":7,"integrity":"sha512-o+IVPgvOQFp8bSVyQ8ZLLCl/YaINZI+JMd6VY5x/2BrptU6hYHJh17YEa1MhbeIH2JYLAYyOKxplJk8vc89R+A==","signatures":[{"sig":"MEYCIQD8TF8PrEJOfUpSEllw1MUinnBnurDlPmpzVRvI7MZfXQIhAI+/J9gGPbCt0VaI+WWdqk9yjUtvs+YGZXpKTEWmoJVY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30272},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"bb639ec01ad435bc35b10a1020fa7e0697b0b0ce","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.4_1768495346984_0.28219661221525505","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.5","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.5","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"694e345d559429bf9aa5bbe35db3aa425c4f5f20","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.5.tgz","fileCount":7,"integrity":"sha512-xbYMwxAWmbfyc80LfFAe37opucCRd7sFztB+w14bfyF8p2HIDYNS9E+CxbtUCPHajhiLQ6VtWx6GRK9CWG3xgQ==","signatures":[{"sig":"MEYCIQDPpbt+We+Ca5glB4o/K/QwivWNJE01JVgy9ztEtSEHOQIhAOUyepItmlb1DZSGbLSBVVvua71dEu98gQ0U547ZDIga","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30579},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"afad8c34f929b98c355547902f3c2d633bf6ee64","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.5_1768496838748_0.3376442028806934","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.6","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.6","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"04f09611b570e192c7cc517dfb214e3a4aabce22","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.6.tgz","fileCount":7,"integrity":"sha512-GpLPrFbBl0skgAN+ru5ydDhdXZYR3CfmXsQ/M+nHr+0g0miNKnqYNxjsu9Y2fZbrn0jtOeVMx5GnhI2oKUu8Cg==","signatures":[{"sig":"MEQCIF9UEdqwXa5hHthajBKI4nCFFRJw1cooXmsfp9h+nT5vAiAVKTfC3hkcnRgJV5qSm88aVxpbG0RJccB8mmvHqym0iA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31765},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"a1917f9515392104873f009998f000d9ed92a7ae","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.6_1768497952309_0.16566893945059502","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.7","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.7","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"a47120e45b78134c674a716222880c822c483abc","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.7.tgz","fileCount":7,"integrity":"sha512-sRt5mXYwihxeLEbj2oYR6uTvYPuI5x4uFJ+D9/tJx6bzZxoog7vTA9rlP8ywKpIyhx8Og+KkNznq8S26JCecjg==","signatures":[{"sig":"MEUCIQDVEAb4JjGxv83T0MzeaBUw4jPAUEei7JEjCbK+ryFfiQIgHr91UdTmwspiQI10EGx0SIs8XeYR88ZsxYjCcQMZToE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31828},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"24b26e1bf3245206ab05c46161825f84f45e22ac","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.7_1768498382869_0.06435818756216571","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.8","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.8","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"0111fd01dc716140e4739d894ece47c98840ed56","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.8.tgz","fileCount":7,"integrity":"sha512-6T911oiTGQgB3PooBvT5ZJ5XMGZOAMZK+wxx+cqNASxYusSgwDj4EvYkAn3Opg43hR5+4er7oYKqZGw84UCbTQ==","signatures":[{"sig":"MEYCIQC+qSepjwbz7NLjsjt5L9eHMr6LPgXAPRjFp8yH6QtPtQIhAPreK/UFsMLIm195LmEQ0Ay3MzCZYck5W6mCjvQYmY3M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33263},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"ed32f95b07c8ff41fd45ae56a9da8dfb433df6d5","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.8_1768500732303_0.6466626034158895","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.9","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.9","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"813fd409f7dde197507cd133197f2b7fda71231e","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.9.tgz","fileCount":7,"integrity":"sha512-yPF2cx1+xgBeph8dYF9UxuSKX+kScCJdG7OUtnzm0Gg8bqRxEmdjVQwTXjhKHCsfs3skcPV+/JKrAzcqjzgZvw==","signatures":[{"sig":"MEUCIQCjX0LinU01q6LBhDL0aGKRxCt/lj1jzSeHfBAMob6N3QIgIaYl6/vjoqEOqgDvm1WzMMz3pJzZOw6fLTvEHoXlPf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33731},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"4c904e20804cfc74c95900c8931041483a497765","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.9_1768501506875_0.15475797446420803","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.10","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.10","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"1ff751be353e88a2d729231ce2902f1a1670b644","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.10.tgz","fileCount":7,"integrity":"sha512-sI1H/tdzs1Yn0zsxC2t7996lnD2rxuM3hM3LwrfegoxfMb8pzW2dLzT5tw66uvGZo3NDhUszReynZ+jcYEDL/Q==","signatures":[{"sig":"MEQCIFP6TTX1eOgneqJCkXpfCuFUQZ9Z9v1WhP67rwfJXX9zAiA3hAaOpQr2VHn2zTYWyJ4hoYLHMyCTcJOd5Sgt8HiXow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34007},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"85a1e553281f0a4fcd49063941cca4e357462132","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.10_1768502161386_0.5862953096736183","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.11","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.11","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"c2789ac23619c87fbf1f453fdde86335c39d2e88","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.11.tgz","fileCount":7,"integrity":"sha512-S1fasqO78JGZd/Z25tyz10aklOSfjPUl7vZJbnp1IqmV+T5Te927+GCvjtLBmxIMhWsdlQadY762D6KjTPcezw==","signatures":[{"sig":"MEQCIHxRwo9MgcyKVlA8Dgte5/NAMiR5uHdQQn4Tv/Z7OdOhAiB0D6zZzP2hxAlpAnEqaPrlBTgLo0xTID9jh0Sb1n3B0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34097},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"4a666fce250307bbc86d8e7034da9df16f3c7949","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.11_1768503147201_0.15631218663232427","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.12","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.12","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"93b974240021a00cc7950c7d8b5b8ea64f16df28","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.12.tgz","fileCount":7,"integrity":"sha512-2fM5j6go++Wr41hooIZ+Pr4Rx1zXaRhMqfvveCfUPXW1CpuXQ0++2OkXmfH9ub9dkshR6LF8sjna4PNIrNMfgg==","signatures":[{"sig":"MEUCIQCFYB10N5FjfrRHYMVMobr37eL4ClVKSqGqPgVdUl7xjgIgSKGvgosWxwxsxrUENhxZ76pNihOficFngcMRje3GPFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34838},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"defcbff15352abad923b2f6d940c794bfbe004be","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.12_1768503579912_0.5685726836736504","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@mmmbuto/zai-codex-bridge","version":"0.1.13","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.1.13","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"2fa37b7c2d3f2ae168f5b4cc7e195c565a8662ed","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.1.13.tgz","fileCount":7,"integrity":"sha512-eirnh/ELMzoFiPWfFvsOJTVZ/DoOODJ+6s8eIqCuHK4Dwmd2nFo8ADmlNp/i1BDWbGREFEm3J9Szpl8yM7F3SA==","signatures":[{"sig":"MEUCIFy7KxpwUDCmUyuFzBUqr3sVsVxiT9lNsM4rrA3qZVHEAiEAzg5Rk50ceSgLpjCwuc9JSKU4cMpaMdReFD6lFG+Rc/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35306},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"0f8612d85c01d98f9dcda04b40adab7513e29d87","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.1.13_1768503991732_0.5245395433412401","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@mmmbuto/zai-codex-bridge","version":"0.2.0","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.2.0","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"9c6c467b744650755391473e41e99cc13431496b","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.2.0.tgz","fileCount":7,"integrity":"sha512-zV+gHeentYLxy7pdkueVSff7XgsjtVAFii2idntVUUXGutAbDZ58BmU9yToLgpjzXlGXVRjQL4czhC/UWJf4Pw==","signatures":[{"sig":"MEYCIQCbdiu9KOJarCUhvn59DoQyGNhdnw6/WsMcbJbBdgu8hAIhAJijsfMLdDVwmk0qVm5++CNz8NX4Fhf47+TYhDjPhg0v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37153},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"b6ac5847ab7d299bff1051d6ab36dba07b5d195c","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.2.0_1768506785788_0.15693847258284088","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@mmmbuto/zai-codex-bridge","version":"0.2.1","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.2.1","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"736c075c0569ef520819de2f8a654ad7e3181d99","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.2.1.tgz","fileCount":7,"integrity":"sha512-ud7cVhU0qENUO8kVDV1gkIzzQiolKF4a3TmkhldJKboK/CyhiAB8/4tpTbSpQF6L4YTcXlOK6GnqmbqTWppXQA==","signatures":[{"sig":"MEYCIQCqR9iZHDin4zCh/uPkT9KBff246yWYAudaNMemHBUHWQIhAIcH+DYSA3qnXLQ++n/SiZZKLFfLM3h4O0StBIjCgMtH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37872},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"6cd20e8b3f4bc7bd33f1a1e25d81af67ee0469a0","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.2.1_1768507542837_0.1013457291896327","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@mmmbuto/zai-codex-bridge","version":"0.3.0","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.3.0","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"d83ab8271bd8d08f325bff30caf9d453405fe7a2","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.3.0.tgz","fileCount":7,"integrity":"sha512-+9TCYoFsaSum21R1vXSTaqfTWyWDqPU5oBbxF0Vnt3zNvgrV3lfBftkh/LkZ2Acbp8Pf9Cvjg2ipEM98ZP2JYQ==","signatures":[{"sig":"MEYCIQDR2AOgjwJ+bMwWdppp+cJVWvqVlBMwg1bDRL1LsBeRmwIhANlKyobE7vWAFr+gDBtn7epuY8n76qwS42+NSILHYDBa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42010},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"9d44ecca8d49df67c5082357da794980d7713698","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.3.0_1768513699378_0.24767562558296152","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@mmmbuto/zai-codex-bridge","version":"0.3.1","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.3.1","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"613e880d998ce3e05c0bef62afbb31cfaae608ad","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.3.1.tgz","fileCount":7,"integrity":"sha512-+ccEJ0aLDg3NmyEzdWMkfEfENDJSjfmGmF/kW2C9ExE1RVV6oTiF7FwdIOUmxZqwwMkgt0wzBTq6mBWdCoyuMw==","signatures":[{"sig":"MEUCIQDXjzYyGgwBFe6jejmwarMTmFiw4PPhrH0Y3ADcspupQwIgOfRfM50QO3QXkrRmltqYHz7ekz8OXSD24XpVGZLZnWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42358},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"68776009242dd2df3c4a8b435e618b8c25862bac","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.3.1_1768514044097_0.8748239970115745","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@mmmbuto/zai-codex-bridge","version":"0.3.2","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.3.2","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"217ec86e08719588beea73374ca23ebea3645119","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.3.2.tgz","fileCount":7,"integrity":"sha512-IyzENw6TovSOe93wMUMceaeslRff5mTaf+FzxW+1S6lLrgwApnndSbxGOQpf3cVJZm7bCmZ6Za2oIY22TbXzEQ==","signatures":[{"sig":"MEQCIA6gkt6+h+F5U34dSetzI6BDEwapPsBkqHEQPHn6bQBeAiBc1mLNx8mB8049SLqi67J89J5THtKrPDzn10KCG9OjAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42566},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"9cdcf3d517ea38a8ee535ae468df0953a18deb51","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.3.2_1768514399911_0.037663643870899266","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.0","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.0","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"b69393e3e88860f4e84f17c8ba5efa62389c6780","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.0.tgz","fileCount":7,"integrity":"sha512-g0NwMf10cDkpQzegwrH24LIBwvsu8NqLNm365fnTOhnkDFv55yYjSsnGw9U2tYoGH10i10DdupZ+xctYNoMnjg==","signatures":[{"sig":"MEUCIG0o2Abdoohqkrw31cPnk/iA2+7tfgAsgBc5FFBCvNYjAiEApT4EEoecFRKVZqcg+bA9jgvfL2bzPm9JJXSaZx3R598=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39754},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"76cb9da1d9b0ed8514956e78fffb7c68f055eed6","scripts":{"start":"node src/server.js","test:curl":"node scripts/test-curl.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.0_1768530098885_0.7729434852072385","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.2","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.2","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"e0361ccb00f3d8a5a8c3afe0afb1f646a72c5a17","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.2.tgz","fileCount":10,"integrity":"sha512-xjfWTmVlGG8zAQcMzi6UGsmIBwcc9patvN5qd3nMTfkwhvf2R6H2sTJ1x4P2nLrGCG/p0f2CPE9N64KBf4fV1Q==","signatures":[{"sig":"MEYCIQC/H2YHfe8CHw2z2TZlFq8WNEckQ13XxOxgWkx9h4KJAwIhAJTQ71cjZcEj+dyZuSz8ntR4XjJ7mFehPj71fRdBoMBQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57355},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"711e671800632f9a3706140ab122402e068b0965","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.2_1768553353490_0.94142269929432","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.3","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.3","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"1680953852007b7775389a7850c4a06b0d0239dc","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.3.tgz","fileCount":10,"integrity":"sha512-gZxtxv7k9W9CD6TQnRSmv6kerupJAGT/t+qgOtHhu1Rc3uw/mkI7DLbMkLmEcXYulN0qAlnSQaGWBwmtBpEmOQ==","signatures":[{"sig":"MEYCIQC8+QSRONNkTW42n/uEjxEMWkHmTjPIx4xshv1WPsvQoQIhAPhIZ8LO92P8OGzuC6OTmMocX6Wsx9Olwqb/MVkHen22","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61542},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"bd6336df59e950496fb750da66e13703879c6c24","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.3_1768555808972_0.6132343535914335","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.4","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.4","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"87f53981959f717b88df6663f6666ee62e961251","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.4.tgz","fileCount":10,"integrity":"sha512-nq6x9oD6XyYIYtsqoFfLxw82zzHiFoD3xmKxFJ4W78ZPsYseiVnR4QErM0c0guOD4OFB4/7Ilw61oWoajJF+Ag==","signatures":[{"sig":"MEUCIQDjJrE4Qpw6eVFzBgJD6CT74qs6QVQ5gJ8Kx/VH2RkLdgIgeTJyshkdcCuXlxoMOxUhYIvegajtf5lVOxVcmv8RmOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61652},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"efec10dcf7975f063649912084ad5f8cf58c2f11","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.4_1768555900676_0.658638644152584","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.5","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.5","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"a060909198b197c78ec1c9021d9d8dd8646d3e06","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.5.tgz","fileCount":10,"integrity":"sha512-Gm4JeBjtXKb6squw7h5l9lu3Wos6ung/y3IeNKrNKk1SO6QKFarAEd8b+Bxtenq7Wjnjjkh8uCq9c0vFWtEc8w==","signatures":[{"sig":"MEYCIQCuW1qM+vUn8iWnag5vvFj2TlL8ZCR7dg5kMD+iseY9HwIhAIaaUzg+LtK+ulOAiKMTw9GrAwdAMjZlTPNT8hEqRto8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62295},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"d601ac4d422c210dbd78fe11a5b5d404d38cb79e","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.5_1768558161060_0.19531547689388118","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.6","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.6","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"fceab1ad0fb29f761abd216caeb24bb291d5f8c2","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.6.tgz","fileCount":10,"integrity":"sha512-/5yFoL/9yxDt9fh3OBBgYXS55gK095GyygOB1W4c0oXzXWg/yD7f0g6dlFEXZfa4AqWvJCd6j5NXdz1iEs3bmQ==","signatures":[{"sig":"MEQCIH4mc13VbPiGpUs9sZT3dk6Y8pLww+JqDtPFDO6eky44AiAHVOs/uatDfOBCS+0UhbZq4T8mSNEDgM3VWtFoItfWEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63251},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"ce5b3a7a407f524a338354c961f9c94756ee4747","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned.","repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.6_1768558978428_0.587415206875388","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.7","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.7","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"002169a39fa7f38445efee20237c941ec23086d3","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.7.tgz","fileCount":12,"integrity":"sha512-Enn+IN7kERbljIEpCr4/lajvJFbEzB2UroR7YkOoUpp2Oi6ijF/YguHdGyeUDFg3FcRMJ/Og9/ngoVQKQIiqnA==","signatures":[{"sig":"MEQCID60awuCJmiWLfoo27ZJ15Ip2p1eIIMyP1tFekf3gqPkAiAa5rUKkJdlFawZ7BJg9bac6O9Do4O/RaAubr7LuyiGMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91733},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"5f62aef8cef5097aae599d16f45adec57509ffbb","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.7_1768587341134_0.3772912279950458","host":"s3://npm-registry-packages-npm-production"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned."},"0.4.8":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.8","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.8","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"ece0cc26d1ee350c5e87ce75c7f6a80e80d80aea","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.8.tgz","fileCount":12,"integrity":"sha512-QzKvJA1Zk+u4+6BdJrV+tvwLdhWjVWzQOxcgwHJklKepvQVD3UO2may3y7TIYpTiWOCPRNgzjBKWEtyTH38tfg==","signatures":[{"sig":"MEUCIG3n5REP40Ikc5tm3SZpJk1UZfx+GktkoPonUlDlAtUqAiEA5eFOWvAbw64N2vIwIWtXWTfw/DYd98f5hEjJEK4IdZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94675},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"8425c2e5345a7e80cae600587959d6cc61a38d75","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.8_1768845544902_0.29773947285263236","host":"s3://npm-registry-packages-npm-production"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned."},"0.4.9":{"name":"@mmmbuto/zai-codex-bridge","version":"0.4.9","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"author":{"name":"Davide A. Guglielmi"},"license":"MIT","_id":"@mmmbuto/zai-codex-bridge@0.4.9","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"bin":{"zai-codex-bridge":"bin/zai-codex-bridge"},"dist":{"shasum":"d048e562dea5bee732faf37683b8d4e87b574132","tarball":"https://registry.npmjs.org/@mmmbuto/zai-codex-bridge/-/zai-codex-bridge-0.4.9.tgz","fileCount":12,"integrity":"sha512-7HRbpk97kBLveEPSrjIA56oM/E0w8YmHZh0QHn6gcY87MQnFyPVEd+8EwKwCUdZViAGIvwBFj/+075E5QEMPJA==","signatures":[{"sig":"MEYCIQDjCDLMXKqN2nNumnl39wc4sVFLieXjEMG1peClqMc1dAIhAIEn9cgp69LA//Da/Ivlsh9y9irZDaqEKWjSMpM0H5Tr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114734},"main":"src/server.js","engines":{"node":">=18.0.0"},"gitHead":"9c6c0fd9a69680d6e1567afabb70f44b85676a49","scripts":{"test":"node scripts/test-curl.js","start":"node src/server.js","test:curl":"node scripts/test-curl.js","release:patch":"node scripts/release-patch.js"},"_npmUser":{"name":"dionanos","email":"davide@mmmbuto.com"},"repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"_npmVersion":"11.6.2","description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zai-codex-bridge_0.4.9_1768892415230_0.8328995366249878","host":"s3://npm-registry-packages-npm-production"},"deprecated":"End of life: this package is no longer maintained. No further updates or support are planned."}},"time":{"created":"2026-01-15T16:10:58.166Z","modified":"2026-08-28T07:50:15.343Z","0.1.0":"2026-01-15T16:10:58.420Z","0.1.1":"2026-01-15T16:18:32.835Z","0.1.2":"2026-01-15T16:25:49.004Z","0.1.3":"2026-01-15T16:28:29.603Z","0.1.4":"2026-01-15T16:42:27.124Z","0.1.5":"2026-01-15T17:07:18.894Z","0.1.6":"2026-01-15T17:25:52.447Z","0.1.7":"2026-01-15T17:33:03.000Z","0.1.8":"2026-01-15T18:12:12.481Z","0.1.9":"2026-01-15T18:25:07.023Z","0.1.10":"2026-01-15T18:36:01.540Z","0.1.11":"2026-01-15T18:52:27.380Z","0.1.12":"2026-01-15T18:59:40.064Z","0.1.13":"2026-01-15T19:06:31.883Z","0.2.0":"2026-01-15T19:53:05.939Z","0.2.1":"2026-01-15T20:05:43.021Z","0.3.0":"2026-01-15T21:48:19.555Z","0.3.1":"2026-01-15T21:54:04.247Z","0.3.2":"2026-01-15T22:00:00.063Z","0.4.0":"2026-01-16T02:21:39.021Z","0.4.2":"2026-01-16T08:49:13.631Z","0.4.3":"2026-01-16T09:30:09.107Z","0.4.4":"2026-01-16T09:31:40.813Z","0.4.5":"2026-01-16T10:09:21.206Z","0.4.6":"2026-01-16T10:22:58.594Z","0.4.7":"2026-01-16T18:15:41.267Z","0.4.8":"2026-01-19T17:59:05.043Z","0.4.9":"2026-01-20T07:00:15.373Z"},"bugs":{"url":"https://github.com/DioNanos/zai-codex-bridge/issues"},"author":{"name":"Davide A. Guglielmi"},"license":"MIT","homepage":"https://github.com/DioNanos/zai-codex-bridge#readme","keywords":["codex","zai","glm","proxy","openai","responses-api","chat-completions"],"repository":{"url":"git+https://github.com/DioNanos/zai-codex-bridge.git","type":"git"},"description":"Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex","maintainers":[{"name":"dionanos","email":"davide@mmmbuto.com"}],"readme":"# ZAI Codex Bridge\n\n> Local proxy that translates OpenAI **Responses API** ↔ Z.AI **Chat Completions** for Codex CLI\n\n[![npm](https://img.shields.io/npm/v/@mmmbuto/zai-codex-bridge?style=flat-square&logo=npm)](https://www.npmjs.org/package/@mmmbuto/zai-codex-bridge)\n[![node](https://img.shields.io/node/v/@mmmbuto/zai-codex-bridge?style=flat-square&logo=node.js)](https://github.com/DioNanos/zai-codex-bridge)\n[![license](https://img.shields.io/npm/l/@mmmbuto/zai-codex-bridge?style=flat-square)](LICENSE)\n\n---\n\n## What It Solves\n\nNewer **Codex CLI** versions speak the OpenAI **Responses API** (e.g. `/v1/responses`, with `instructions` + `input` + event-stream semantics).\nSome gateways/providers (including Z.AI endpoints) only expose legacy **Chat Completions** (`messages[]`).\n\nThis proxy:\n1. Accepts Codex requests in **Responses** format\n2. Translates them to **Chat Completions**\n3. Forwards to Z.AI\n4. Translates back to **Responses** format (stream + non-stream)\n5. Returns to Codex\n\n**Without this proxy**, Codex may fail (example from upstream error payloads):\n```json\n{\"error\":{\"code\":\"1214\",\"message\":\"Incorrect role information\"}}\n```\n\n> If you’re using **codex-termux** and a gateway that doesn’t fully match the Responses API, this proxy is the recommended compatibility layer.\n\n---\n\n## Features\n\n- Responses API ↔ Chat Completions translation (request + response)\n- Streaming support with SSE (Server-Sent Events)\n- Health check endpoint (`/health`)\n- Works on Linux/macOS/Windows (WSL) + Termux (ARM64)\n- Reasoning passthrough (request `reasoning` + upstream reasoning text)\n- **Optional tool/MCP bridging** (see “Tools / MCP” below)\n- Zero/low dependencies (Node built-ins only, unless noted by package.json)\n\n---\n\n## Requirements\n\n- **Node.js**: 18+ (native `fetch`)\n- **Port**: 31415 (default, configurable)\n\n---\n\n## Installation\n\n```bash\nnpm install -g @mmmbuto/zai-codex-bridge\n```\n\n---\n\n## Quick Start\n\n### 1) Start the Proxy\n\n```bash\nzai-codex-bridge\n```\n\nDefault listen address:\n\n- `http://127.0.0.1:31415`\n\n### 2) Configure Codex\n\nAdd this provider to `~/.codex/config.toml`:\n\n```toml\n[model_providers.zai_proxy]\nname = \"ZAI via local proxy\"\nbase_url = \"http://127.0.0.1:31415\"\nenv_key = \"OPENAI_API_KEY\"\nwire_api = \"responses\"\nstream_idle_timeout_ms = 3000000\n```\n\n> Notes:\n> - `base_url` is the server root. Codex will call `/v1/responses`; this proxy supports that path.\n> - We keep `env_key = \"OPENAI_API_KEY\"` because Codex expects that key name. You can store your Z.AI key there.\n\n### 3) Run Codex via the Proxy\n\n```bash\nexport OPENAI_API_KEY=\"your-zai-api-key\"\ncodex -m \"GLM-4.7\" -c model_provider=\"zai_proxy\"\n```\n\n---\n\n## Tools / MCP (optional)\n\nCodex tool-calling / MCP memory requires an additional compatibility layer:\n- Codex uses **Responses API tool events** (function call items + arguments delta/done, plus function_call_output inputs)\n- Some upstream models/providers may not emit tool calls (or may emit them in a different shape)\n\nThis proxy can **attempt** to bridge tools automatically when the request carries tool definitions\n(`tools`, `tool_choice`, or tool outputs). You can also force it on:\n\n```bash\nexport ALLOW_TOOLS=1\n```\n\nImportant:\n- Tool support is **provider/model dependent**. If upstream never emits tool calls, the proxy can’t invent them.\n- If tools are enabled, the proxy must translate:\n  - Responses `tools` + `tool_choice` → Chat `tools` + `tool_choice`\n  - Chat `tool_calls` (stream/non-stream) → Responses function-call events\n  - Responses `function_call_output` → Chat `role=tool` messages\n- Non-function tool types are dropped for Z.AI compatibility.\n- Function calls are emitted as stream events; final `response.completed` output includes message + function_call\n  items in creation order for parity with streaming.\n\n(See repo changelog and docs for the exact implemented behavior.)\n\n---\n\n## CLI Usage\n\n```bash\n# Start with defaults\nzai-codex-bridge\n\n# Custom port\nzai-codex-bridge --port 8080\n\n# Enable debug logging\nzai-codex-bridge --log-level debug\n\n# Custom Z.AI endpoint\nzai-codex-bridge --zai-base-url https://api.z.ai/api/coding/paas/v4\n\n# Show help\nzai-codex-bridge --help\n```\n\n### Environment Variables\n\n```bash\nexport HOST=127.0.0.1\nexport PORT=31415\nexport ZAI_BASE_URL=https://api.z.ai/api/coding/paas/v4\nexport LOG_LEVEL=info\nexport ZAI_API_KEY=your-zai-api-key   # or ZAI_API_KEY_P / ZAI_API_KEY_A\n\n# Optional\nexport ALLOW_TOOLS=1   # force tool bridging (otherwise auto-enabled when tools are present)\nexport ALLOW_SYSTEM=1  # only if your provider supports system role\nexport SUPPRESS_REASONING_TEXT=1  # reduce latency by skipping reasoning stream\nexport ALLOW_MULTI_TOOL_CALLS=1   # process multiple tool_calls in one chunk (default: first only)\n```\n\n---\n\n## Auto-start the Proxy with Codex (recommended)\n\nUse a shell function that starts the proxy only if needed:\n\n```bash\ncodex-with-zai() {\n  local HOST=\"127.0.0.1\"\n  local PORT=\"31415\"\n  local HEALTH=\"http://${HOST}:${PORT}/health\"\n  local PROXY_PID=\"\"\n\n  if ! curl -fsS \"$HEALTH\" >/dev/null 2>&1; then\n    ALLOW_TOOLS=1 zai-codex-bridge --host \"$HOST\" --port \"$PORT\" >/dev/null 2>&1 &\n    PROXY_PID=$!\n    trap 'kill $PROXY_PID 2>/dev/null' EXIT INT TERM\n    sleep 1\n  fi\n\n  codex -c model_provider=\"zai_proxy\" \"$@\"\n}\n```\n\nUsage:\n\n```bash\nexport OPENAI_API_KEY=\"your-zai-api-key\"\ncodex-with-zai -m \"GLM-4.7\"\n```\n\n---\n\n## API Endpoints\n\n- `POST /responses` — accepts Responses API requests\n- `POST /v1/responses` — same as above (Codex default path)\n- `GET /health` — health check\n\n---\n\n## Translation Overview\n\n### Request: Responses → Chat\n\n```js\n// Input (Responses)\n{\n  \"model\": \"GLM-4.7\",\n  \"instructions\": \"Be helpful\",\n  \"input\": [{ \"role\": \"user\", \"content\": \"Hello\" }],\n  \"max_output_tokens\": 1000\n}\n\n// Output (Chat)\n{\n  \"model\": \"GLM-4.7\",\n  \"messages\": [\n    { \"role\": \"system\", \"content\": \"Be helpful\" },\n    { \"role\": \"user\", \"content\": \"Hello\" }\n  ],\n  \"max_tokens\": 1000\n}\n```\n\n### Response: Chat → Responses (simplified)\n\n```js\n// Input (Chat)\n{\n  \"choices\": [{ \"message\": { \"content\": \"Hi there!\" } }],\n  \"usage\": { \"prompt_tokens\": 10, \"completion_tokens\": 5 }\n}\n\n// Output (Responses - simplified)\n{\n  \"status\": \"completed\",\n  \"output\": [{ \"type\": \"message\", \"content\": [{ \"type\": \"output_text\", \"text\": \"Hi there!\" }] }],\n  \"usage\": { \"input_tokens\": 10, \"output_tokens\": 5 }\n}\n```\n\n---\n\n## Reasoning Support\n\n- If the Responses request includes `reasoning`, the proxy forwards it to upstream as `reasoning`\n  (and `reasoning_effort` when `reasoning.effort` is set).\n- Upstream reasoning text is accepted from any of: `reasoning_content`, `reasoning`, `thinking`, `thought`.\n- The proxy emits `response.reasoning_text.delta` / `response.reasoning_text.done` events and includes\n  `reasoning_text` content as a dedicated `reasoning` output item in `response.completed`.\n\n## Troubleshooting\n\n### 401 / “token expired or incorrect”\n- Verify the key is exported as `OPENAI_API_KEY` (or matches `env_key` in config.toml).\n- Make sure the proxy is not overwriting Authorization headers.\n\n### 404 on `/v1/responses`\n- Ensure `base_url` points to the proxy root (example: `http://127.0.0.1:31415`).\n- Confirm the proxy is running and `/health` returns `ok`.\n\n### MCP/tools not being called\n- Check proxy logs for `allowTools: true` and `toolsPresent: true`.\n- If `toolsPresent: false`, Codex did not send tool definitions (verify your provider config).\n- If tools are present but the model prints literal `<function=...>` markup or never emits tool calls,\n  your upstream model likely doesn’t support tool calling.\n- If your provider supports `system` role, try `ALLOW_SYSTEM=1` to improve tool adherence.\n\n### 502 Bad Gateway\n- Proxy reached upstream but upstream failed. Enable debug:\n  ```bash\n  LOG_LEVEL=debug zai-codex-bridge\n  ```\n\n---\n\n## 🧪 Tests\n\nThis repo includes end-to-end validation assets for running Codex through the proxy:\n\n- **Test suite:** [`CODEX_TEST_SUITE.md`](./CODEX_TEST_SUITE.md)\n- **Latest report:** [`CODEX_REPORT_v0.4.9.md`](./CODEX_REPORT_v0.4.9.md)\n\nNotes:\n- Interactive runs require a real TTY (`codex`).\n- For automation/non-TTY environments, prefer `codex exec`.\n\n---\n\n## Versioning Policy\n\nThis repo follows **small, safe patch increments** while stabilizing provider compatibility:\n\n- Keep patch bumps only: `0.4.0 → 0.4.1 → 0.4.2 → ...`\n- No big jumps unless strictly necessary.\n\n(See `CHANGELOG.md` for details once present.)\n\n---\n\n## License\n\nMIT License — Copyright (c) 2026 Davide A. Guglielmi  \nSee [LICENSE](LICENSE) for details.\n","readmeFilename":"README.md"}