chore: release - #17
Merged
Merged
Conversation
github-actions
Bot
force-pushed
the
changeset-release/master
branch
from
July 2, 2026 05:16
16e2ab3 to
354ec96
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 1.1.0
This release bundles two features. Main highlight is Codex CLI login (developed in #18):
🔑 Codex CLI login for the
openaiprovider (#18)Use DUUL with the OpenAI Codex CLI login instead of a raw
OPENAI_API_KEY. When no key is set, DUUL falls back to~/.codex/auth.json(override withCODEX_HOME):OPENAI_API_KEYstored inauth.json.The stateless ChatGPT backend is handled by streaming + output aggregation, full-input tool-round replay (echoing encrypted reasoning), and dropping unsupported params. Cross-round continuity is preserved via the new
conversationReplayprovider capability, soprevious_review_idkeeps working. AddsDUUL_REASONING_EFFORT(defaultmedium). Verified live against the real ChatGPT backend and via DUUL's own plan-review loop (5 rounds → APPROVE); 94 unit tests pass.🧰 Empty-input guards + file escape hatch (#16)
plan_file/code_file/approved_plan_fileinputs and reachable guards that fix the recurring-32602empty-{}loop.Full details and changelog below.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.
Releases
@planningo/duul@1.1.0
Minor Changes
19b5420: Support Codex CLI login for the
openaiprovider — noOPENAI_API_KEYrequired.When no
OPENAI_API_KEY(or per-requestapi_key) is set, DUUL now falls back to the OpenAI Codex CLI credentials in~/.codex/auth.json(override withCODEX_HOME):https://chatgpt.com/backend-api/codex), billed to your ChatGPT plan. Tokens are refreshed automatically via the OAuth endpoint (on expiry and on a mid-review 401).OPENAI_API_KEYstored inauth.json.The ChatGPT backend is stateless (
store: false): DUUL streams the request, aggregates output items from the stream, resends the full input (echoing encrypted reasoning) across tool rounds, and drops unsupported params (temperature,top_p,max_output_tokens,previous_response_id). Cross-round context is preserved by replaying prior rounds' turns (newconversationReplayprovider capability, same mechanism as the Anthropic provider), soprevious_review_idcontinuity works. AddDUUL_REASONING_EFFORT(defaultmedium) to tune reasoning effort. An explicit env/request key always takes precedence over the CLI login.7a6123f: Fix the recurring
-32602: plan required(andcode/approved_planequivalents) failure where a caller's tool call collapsed to an empty{}and looped.Two-part fix:
plan,code,approved_plan) are nowoptionalat the schema level, so an empty/partial call reaches the handler instead of being rejected pre-handler by the MCP SDK. Callers now get actionable retry guidance instead of an opaque-32602zod error. (Partition's shortworkspace_rootwas also relaxed tooptionalfor the same reachability reason — the handler still hard-requires it.)plan_file(plan review),code_file+approved_plan_file(code review), andapproved_plan_file(execution partition). Callers can write large content to a file with a normal Write call and pass a short relative path; the server reads it (scoped, symlink-guarded,tracked_onlybypassed for the caller's own artifact). This avoids the large-argument serialization failure that made models emit{}.The reviewer system prompts now emit free-text fields in compressed style to reduce output tokens. Exactly one of the inline field or its
*_filecompanion is required.