Replace the codex-substring heuristic with the empirically verified
allow/disallow lists plus the >5.4 version rule; the ChatGPT backend
rejects models like gpt-5.3-codex that the substring rule admitted.
Provider packages in @opencode-ai/llm/providers/* now implement a uniform
ProviderPackage contract: model(modelID, settings) => Model. SessionRunnerModel
becomes provider-agnostic: it resolves a package specifier, folds catalog
settings, credentials, and transport overlays into one Settings object, and
delegates request construction to the package.
- llm: add ProviderPackage (Settings, Definition, define), flat model(id,
config) constructors on the openai-responses, anthropic-messages, and
openai-compatible-chat protocols, contract-shaped model exports on the
openai, anthropic, and openai-compatible providers, and a new
providers/openai/codex entry point that targets the ChatGPT codex backend
and sets the chatgpt-account-id header from settings.accountID.
- schema: Provider.Native gains optional package.
- core: SessionRunnerModel loads packages through a static built-in map
(dynamic import for foreign specifiers) and applies one settings fold;
the ChatGPT conditional is deleted from the runner. The OpenAI plugin's
catalog transform now assigns the codex package to eligible models when a
ChatGPT connection is active, alongside the existing eligibility and cost
rewrites.
- llm schema: hoist ToolResultValue union out of its Object.assign self
reference; the previous shape only typechecked under lucky check ordering
and broke under core's typecheck with the new import graph.
Closes#34765
Cherry-picks the packages/core changes from the v2 branch onto dev:
- combined ordered stdout/stderr in AppProcess + bash structured output
- edit/apply-patch return FileDiff info with status and line stats
- ignore no-op model switches; record reasoning timestamps
- return unexpected local tool defects to the model and continue
- keep OAuth account metadata out of request bodies
- nest OpenAI reasoning effort/summary options
- load OpenCode provider config asynchronously; batch plugin boot
- export latest public event manifest
Includes the supporting schema reasoning time field and regenerated
client/SDK types.