{"_id":"@benvargas/pi-openai-verbosity","_rev":"5-322847ed22530f3dc0d58092b3b5178c","name":"@benvargas/pi-openai-verbosity","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"@benvargas/pi-openai-verbosity","version":"1.0.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","openai","codex","openai-codex","gpt-5.5","gpt-5.3-codex","verbosity","text-verbosity","per-model"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-openai-verbosity@1.0.0","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-openai-verbosity#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"0069d89d057cb0d4cd67e4c0ef6c3323b79580d2","tarball":"https://registry.npmjs.org/@benvargas/pi-openai-verbosity/-/pi-openai-verbosity-1.0.0.tgz","fileCount":4,"integrity":"sha512-Q6A5AzDpnDI9CuuBWn/ZUcUfEhLLLGAVOHiAa9mzBFy+EbWfsOXEohieZ9iHDHgiJrMODfZcfsSCT+gD3yvQDg==","signatures":[{"sig":"MEUCIQCSDiLqFzJL57uS6cyJDKhiUM+fHVkJ+lMy3qPpRAFdhgIgbGfGLkycRCcSfjbxZG5gF/jAFcdJcmvJujVfzBaeT64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16268},"type":"module","gitHead":"b423651bfc5aca97c9974b0db01dd4bc2b8428df","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-openai-verbosity"},"_npmVersion":"11.9.0","description":"Per-model OpenAI Codex text verbosity overrides for pi","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"peerDependencies":{"@mariozechner/pi-coding-agent":">=0.57.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-verbosity_1.0.0_1777314229466_0.7145638533650733","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@benvargas/pi-openai-verbosity","version":"1.0.1","keywords":["pi","pi-package","pi-extension","pi-coding-agent","openai","codex","openai-codex","gpt-5.5","gpt-5.3-codex","verbosity","text-verbosity","per-model"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-openai-verbosity@1.0.1","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-openai-verbosity#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"13cc7225146a049711cc7dbb5ff84bf0cb5fd9fe","tarball":"https://registry.npmjs.org/@benvargas/pi-openai-verbosity/-/pi-openai-verbosity-1.0.1.tgz","fileCount":4,"integrity":"sha512-e8w5JCx04z45o/uZGFbekmNWIIj1JjdfhqZPo4XcVS23Jb5ESeSKTlyQ+P5Pxn6RZte7LClgVjGPGqPXy8ZzSQ==","signatures":[{"sig":"MEUCIQCSEojuaf5XgrJiZBGokFD7LpdZRX1GXPM3IlstrrdhfgIgFMBOmOfXEg36GrUy5SidVJKTc8daoxqrsJokIoBKtuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16272},"type":"module","gitHead":"d9370e9ba085ca27e91b113b6df06559f9aa7ba5","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-openai-verbosity"},"_npmVersion":"11.9.0","description":"Per-model OpenAI Codex text verbosity overrides for pi","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-verbosity_1.0.1_1779738051399_0.18519139041499155","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@benvargas/pi-openai-verbosity","version":"1.1.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","openai","codex","openai-codex","gpt-5.5","gpt-5.6-sol","verbosity","text-verbosity","per-model"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-openai-verbosity@1.1.0","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-openai-verbosity#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"d72dd32ad9f8c1cbba8f3404d3c6750346bf2d4f","tarball":"https://registry.npmjs.org/@benvargas/pi-openai-verbosity/-/pi-openai-verbosity-1.1.0.tgz","fileCount":4,"integrity":"sha512-GXA41x4PUo0nkxmOecZOC8M8EkxuMe+PFqUVQezQjk+w8JBcNDC8omyDw+UN5j5Iunkjmt7nKUk9E63+Xak4kA==","signatures":[{"sig":"MEUCIQCIUTnZI/teGrSLu7EmRoCjafV1awcUN+9aj8A8UtMKFAIgWmrrICai+z3fRJZZlEFJMpaomaWu6apx1NzBBQGTNCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18870},"type":"module","gitHead":"fc0a6ac2bfb712f8e4d0fbf72857fff629837619","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-openai-verbosity"},"_npmVersion":"11.9.0","description":"Per-model OpenAI Codex text verbosity overrides for pi","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-verbosity_1.1.0_1786047028190_0.6557493838318178","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@benvargas/pi-openai-verbosity","version":"1.1.1","keywords":["pi","pi-package","pi-extension","pi-coding-agent","openai","codex","openai-codex","gpt-5.5","gpt-5.6-sol","verbosity","text-verbosity","per-model"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-openai-verbosity@1.1.1","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-openai-verbosity#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"d7d50be632503517be889e5e052936ebca3bcbb3","tarball":"https://registry.npmjs.org/@benvargas/pi-openai-verbosity/-/pi-openai-verbosity-1.1.1.tgz","fileCount":4,"integrity":"sha512-IvGyBh93osTfBNH2Q8hAwZhqwr8nVnjH9/rzpkqlYp3YTko92gC210x6mwq/th9898mDp6FJDGATOpP51Un55w==","signatures":[{"sig":"MEUCIHyQmIQDee/zIoHzFrJHhh8OyO4QIvNRS0UvLFFtqQCFAiEAw0WVydjnNEp0Wmcm3aoe9uCXa98tXBY9T1TbRfR5Fu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20536},"type":"module","gitHead":"4840177d3452f830b7831ba93d247c3fda85fada","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-openai-verbosity"},"_npmVersion":"11.9.0","description":"Per-model OpenAI Codex text verbosity overrides for pi","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-openai-verbosity_1.1.1_1786047432030_0.06378237091081829","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@benvargas/pi-openai-verbosity","version":"1.1.2","description":"Per-model OpenAI Codex text verbosity overrides for pi","keywords":["pi","pi-package","pi-extension","pi-coding-agent","openai","codex","openai-codex","gpt-5.5","gpt-5.6-sol","gpt-6-astra","verbosity","text-verbosity","per-model"],"type":"module","pi":{"extensions":["./extensions/index.ts"]},"peerDependencies":{"@earendil-works/pi-coding-agent":">=0.74.0"},"repository":{"type":"git","url":"git+https://github.com/ben-vargas/pi-packages.git","directory":"packages/pi-openai-verbosity"},"author":{"name":"Ben Vargas"},"license":"MIT","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-openai-verbosity#readme","gitHead":"a27429aed49cd5e1bd9beb11418b77d47f7bb196","_id":"@benvargas/pi-openai-verbosity@1.1.2","_nodeVersion":"26.8.1","_npmVersion":"11.19.0","dist":{"integrity":"sha512-gLr+w/cQmvuwtMP3iDoH2aN6A5caoV7vFI/4QQ6RbAHfPsH6Z6DlUozoSrJ6M6uDvJ0AEgNqsJU7t4ZJj7otXQ==","shasum":"15415ecad346dd2583335a18bdba6c5afaec3328","tarball":"https://registry.npmjs.org/@benvargas/pi-openai-verbosity/-/pi-openai-verbosity-1.1.2.tgz","fileCount":4,"unpackedSize":20702,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDFdh+NHNX6JAw7rVIbH7l0evGNjM/Q3nMchI2SmGZZJQIgfnmGuGovXt565EpLXSQhiEwjtJNAw9ZCCyJ5zktqgEM="}]},"_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"directories":{},"maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-openai-verbosity_1.1.2_1789140211720_0.363567521158469"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-27T18:23:49.389Z","modified":"2026-09-11T15:23:32.008Z","1.0.0":"2026-04-27T18:23:49.673Z","1.0.1":"2026-05-25T19:40:51.596Z","1.1.0":"2026-08-06T20:10:28.325Z","1.1.1":"2026-08-06T20:17:12.181Z","1.1.2":"2026-09-11T15:23:31.839Z"},"bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"author":{"name":"Ben Vargas"},"license":"MIT","homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-openai-verbosity#readme","keywords":["pi","pi-package","pi-extension","pi-coding-agent","openai","codex","openai-codex","gpt-5.5","gpt-5.6-sol","gpt-6-astra","verbosity","text-verbosity","per-model"],"repository":{"type":"git","url":"git+https://github.com/ben-vargas/pi-packages.git","directory":"packages/pi-openai-verbosity"},"description":"Per-model OpenAI Codex text verbosity overrides for pi","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"readme":"# @benvargas/pi-openai-verbosity\n\nPer-model text verbosity overrides for pi's `openai-codex` provider.\n\n## Why This Exists\n\nThis extension was originally created because pi sent OpenAI Codex provider requests with the default Responses\nAPI text verbosity, which made some models, especially `gpt-5.5`, noticeably more verbose than the Codex CLI.\nThe goal was to align `openai-codex/gpt-5.5` with Codex CLI behavior by setting:\n\n```json\n{\n  \"text\": {\n    \"verbosity\": \"low\"\n  }\n}\n```\n\npi has since shipped an upstream fix: OpenAI Codex Responses requests now default to `low` verbosity when no\nexplicit verbosity is provided.\n\nThat upstream change addresses the original `gpt-5.5` issue, but it also means pi now defaults every\n`openai-codex` model to `low`. That may not be ideal for all model slugs. For example, the Codex CLI's own\ndefault for `gpt-5.4-mini` is `medium`, not `low`, and you may prefer `high` on a model you use for\nlong-form writing.\n\nThis extension now provides the missing user-facing control: per-slug verbosity settings for pi's\n`openai-codex` provider.\n\nRequires pi `0.74.0` or newer.\n\n## What It Does\n\nThe extension uses pi's `before_provider_request` hook to rewrite outgoing provider payloads for configured\n`openai-codex/<model>` keys.\n\nFor matching models, it sets:\n\n```json\n{\n  \"text\": {\n    \"verbosity\": \"low | medium | high\"\n  }\n}\n```\n\nNon-matching models are left unchanged.\n\n## Install\n\n```bash\npi install npm:@benvargas/pi-openai-verbosity\n```\n\nOr try without installing:\n\n```bash\npi -e npm:@benvargas/pi-openai-verbosity\n```\n\n## Usage\n\nRun pi with the extension enabled:\n\n```bash\npi -e npm:@benvargas/pi-openai-verbosity --model openai-codex/gpt-5.5\n```\n\nUse `/openai-verbosity status` inside pi to report the configured rewrite for the current model. The command also\nreloads the config file.\n\n## Config\n\nConfig files follow pi's project-over-global pattern:\n\n- Project: `<repo>/.pi/extensions/pi-openai-verbosity.json`\n- Global: `<agent-dir>/extensions/pi-openai-verbosity.json`\n\nThe global path uses pi's agent directory — `~/.pi/agent` by default, or wherever `PI_CODING_AGENT_DIR`\npoints if you have relocated it.\n\nOlder versions of this extension always used `~/.pi/agent`, even when `PI_CODING_AGENT_DIR` was set. If you\nhave relocated the agent directory and it contains no config, a config left at the legacy\n`~/.pi/agent/extensions/pi-openai-verbosity.json` path is still honored; it is read in place and never\nmodified. A config in the relocated directory takes precedence once you create one there.\n\nIf no config exists at any of these locations, the extension writes a default global config on first run.\n\nExample config:\n\n```json\n{\n  \"models\": {\n    \"openai-codex/gpt-5.6-sol\": \"low\",\n    \"openai-codex/gpt-5.5\": \"low\",\n    \"openai-codex/gpt-5.4-mini\": \"medium\",\n    \"openai-codex/gpt-5.3-codex-spark\": \"medium\"\n  }\n}\n```\n\nSettings:\n\n- `models`: object mapping `openai-codex/<model-id>` strings to `low`, `medium`, or `high`.\n\nProject config overrides global config per model key. Any model not listed is left unchanged, which means pi's\nnative default behavior applies.\n\n## Default Config\n\nBy default, the extension mirrors the Codex CLI's own per-model verbosity defaults for every model in pi's\n`openai-codex` catalog. That means `low` everywhere except `gpt-5.4-mini`, whose upstream default is `medium`\n(pi's blanket fallback would otherwise force it to `low`):\n\n```json\n{\n  \"models\": {\n    \"openai-codex/gpt-5.3-codex-spark\": \"low\",\n    \"openai-codex/gpt-5.4\": \"low\",\n    \"openai-codex/gpt-5.4-mini\": \"medium\",\n    \"openai-codex/gpt-5.5\": \"low\",\n    \"openai-codex/gpt-5.6-luna\": \"low\",\n    \"openai-codex/gpt-5.6-sol\": \"low\",\n    \"openai-codex/gpt-5.6-terra\": \"low\",\n    \"openai-codex/gpt-6-astra\": \"low\"\n  }\n}\n```\n\nYou can change any value to override the default for that model. If you have an existing config file from an\nolder version of this extension, your file's entries win over these defaults, and entries for model slugs pi no\nlonger exposes are simply ignored.\n\n## Why not `samplingParams`?\n\npi 0.84.0 added `samplingParams`, which lets you pass arbitrary OpenAI-compatible parameters through\n`models.json`, model overrides, and extension providers. Reading those release notes, it is natural to assume\nthis extension is now redundant and that you can write:\n\n```json\n{\n  \"modelOverrides\": {\n    \"openai-codex/gpt-5.5\": {\n      \"samplingParams\": { \"text\": { \"verbosity\": \"medium\" } }\n    }\n  }\n}\n```\n\n**On `openai-codex` this silently does nothing.** There is no error and no warning; the setting is simply never\napplied. `samplingParams` is explicitly scoped to OpenAI-*compatible* adapters — pi-ai documents it as \"only\napplied by OpenAI-compatible adapters (completions, responses, Azure responses); other APIs ignore it\" — and\nthe Codex adapter is not one of them. It builds its own request and hardcodes `text: { verbosity: ... }`,\ndefaulting to `low`.\n\nSo for the `openai-codex` provider, this extension remains the only way to set per-model verbosity.\n\n### If you use `samplingParams` on the plain `openai` provider\n\nThere it *is* applied, but the merge is a shallow top-level `Object.assign`. That means:\n\n```json\n{ \"samplingParams\": { \"text\": { \"verbosity\": \"medium\" } } }\n```\n\nreplaces the **entire** `text` object rather than merging into it, discarding any other `text` fields pi had\nalready set. This extension deliberately does the opposite: it preserves existing `text` fields and replaces\nonly `text.verbosity`.\n\n## Debugging\n\nPi does not currently expose a simple CLI flag to print the final provider request body. To verify this extension is\nmatching and rewriting a request, set `PI_OPENAI_VERBOSITY_DEBUG_LOG` to a JSONL file path.\n\n| Variable | Description |\n|---|---|\n| `PI_OPENAI_VERBOSITY_DEBUG_LOG` | Set to a file path to enable debug logging. Matching requests write `\"before\"` and `\"after\"` JSON entries with the full provider payload. Non-matching requests write one `\"skipped\"` entry. |\n\n```bash\nPI_OPENAI_VERBOSITY_DEBUG_LOG=/tmp/pi-openai-verbosity.jsonl \\\n  pi -e npm:@benvargas/pi-openai-verbosity \\\n  --model openai-codex/gpt-5.6-sol \\\n  -p \"Reply in one short sentence.\"\n```\n\nThen inspect the last entries:\n\n```bash\ntail -n 5 /tmp/pi-openai-verbosity.jsonl | jq .\n```\n\nThese entries include prompts, messages, tools, and the rest of the provider payload, so keep the file local and\ndelete it when you are done debugging.\n\n## Notes\n\n- This extension only changes outgoing provider request payloads.\n- Existing `text` fields are preserved, and only `text.verbosity` is replaced.\n- Only the `openai-codex` provider is supported. pi 0.84.0's `samplingParams` does not reach that provider, so\n  this extension remains the only per-model verbosity control for it — see\n  [Why not `samplingParams`?](#why-not-samplingparams).\n- This extension is most useful if you want different verbosity settings for different OpenAI Codex model slugs.\n\n## Uninstall\n\n```bash\npi remove npm:@benvargas/pi-openai-verbosity\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}