Commit Graph

998 Commits

Author SHA1 Message Date
Kit Langton 67f97690e6 refactor(llm): make xai responses canonical 2026-05-06 18:08:34 -04:00
Kit Langton 56ebef0927 feat(llm): add provider definitions 2026-05-06 17:04:42 -04:00
Kit Langton 8b8a09c59f Merge remote-tracking branch 'origin/llm-core-patch-api' into llm-core-patch-api
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
#
# Conflicts:
#	packages/llm/AGENTS.md
#	packages/llm/package.json
#	packages/llm/script/recording-cost-report.ts
#	packages/llm/script/setup-recording-env.ts
#	packages/llm/src/adapter.ts
#	packages/llm/src/index.ts
#	packages/llm/src/llm.ts
#	packages/llm/src/patch.ts
#	packages/llm/src/protocols/anthropic-messages.ts
#	packages/llm/src/protocols/openai-responses.ts
#	packages/llm/src/provider/bedrock-converse.ts
#	packages/llm/src/provider/openai-compatible-chat.ts
#	packages/llm/src/provider/openai-compatible-family.ts
#	packages/llm/src/provider/xai.ts
#	packages/llm/src/schema.ts
#	packages/llm/src/tool-runtime.ts
#	packages/llm/src/tool.ts
#	packages/llm/test/adapter.test.ts
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-llama-3-3-70b-drives-a-tool-loop.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-streams-text.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-streams-tool-call.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-claude-opus-4-7-drives-a-tool-loop.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-4o-mini-drives-a-tool-loop.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-5-5-drives-a-tool-loop.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-text.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-tool-call.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/xai-grok-4-3-drives-a-tool-loop.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/xai-streams-text.json
#	packages/llm/test/fixtures/recordings/openai-compatible-chat/xai-streams-tool-call.json
#	packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-drives-a-tool-loop.json
#	packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-streams-text.json
#	packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-streams-tool-call.json
#	packages/llm/test/provider-resolver.test.ts
#	packages/llm/test/provider/anthropic-messages.recorded.test.ts
#	packages/llm/test/provider/bedrock-converse.test.ts
#	packages/llm/test/provider/gemini.recorded.test.ts
#	packages/llm/test/provider/gemini.test.ts
#	packages/llm/test/provider/openai-chat-tool-loop.recorded.test.ts
#	packages/llm/test/provider/openai-compatible-chat.recorded.test.ts
#	packages/llm/test/provider/openai-responses.recorded.test.ts
#	packages/llm/test/provider/openai-responses.test.ts
#	packages/llm/test/recorded-scenarios.ts
#	packages/llm/test/recorded-test.ts
#	packages/opencode/src/provider/llm-bridge.ts
#	packages/opencode/src/session/llm-native-tools.ts
#	packages/opencode/src/session/llm.ts
#	packages/opencode/test/provider/llm-bridge.test.ts
#	packages/opencode/test/session/llm-native-stream.test.ts
2026-05-06 13:48:44 -04:00
Kit Langton c99e278e28 refactor(llm): tighten helper and diagnostic surfaces 2026-05-06 13:28:49 -04:00
Kit Langton 9fc1d154c4 refactor(llm): tighten runtime service boundaries 2026-05-06 11:47:23 -04:00
Kit Langton 7b4f436fc2 refactor(llm): collapse client adapter injection 2026-05-06 11:08:31 -04:00
Kit Langton 1808fe8628 refactor(llm): clarify public module surface 2026-05-06 09:30:01 -04:00
Kit Langton 89c65949c2 refactor(llm): remove transform pipeline 2026-05-05 20:18:15 -04:00
Kit Langton b3568ab0f0 refactor(llm): replace patches with transforms 2026-05-05 17:58:58 -04:00
Kit Langton 8523299069 refactor(llm): simplify provider payload routing 2026-05-05 16:48:23 -04:00
Kit Langton fea96490e3 fix(llm): expand compatible provider bridge 2026-05-03 13:11:45 -04:00
Kit Langton de79fd7306 fix(test): use instance helper in native fallback test 2026-05-03 08:50:17 -04:00
Kit Langton 1caeaf70bb Merge remote-tracking branch 'origin/dev' into HEAD 2026-05-03 08:48:44 -04:00
Shoubhit Dash d1f597b5b5 fix(vcs): avoid unbounded diff memory usage (#25581) 2026-05-03 17:49:46 +05:30
Kit Langton 2df8eda8a3 fix(cli): bridge Instance.current ALS in effectCmd handlers (regression from #25522) (#25546) 2026-05-03 04:24:33 +00:00
Kit Langton 9065d79a9a fix(llm): preserve native protocol state 2026-05-03 00:20:50 -04:00
Kit Langton 5f03d892c0 fix(httpapi): pagination Link header echoes request host (#25527) 2026-05-02 23:19:33 -04:00
Kit Langton ad05a46d74 refactor(lifecycle): bootstrap as pure orchestration (#25510) 2026-05-02 22:26:54 -04:00
opencode-agent[bot] a6cadba814 chore: generate 2026-05-03 02:10:52 +00:00
Dax a3bc5d35b0 Refactor v2 session events as schemas (#24512) 2026-05-02 22:09:48 -04:00
opencode-agent[bot] 80f2b13a55 chore: generate 2026-05-03 00:40:21 +00:00
Kit Langton 7d91d3b1ed Normalize instance lifecycle wiring (#25501) 2026-05-02 20:39:20 -04:00
opencode-agent[bot] a6464062b7 chore: generate 2026-05-03 00:32:24 +00:00
Kit Langton fd01dc9c89 test(httpapi): add route exerciser 2026-05-02 20:31:21 -04:00
opencode-agent[bot] 9bef88e3b0 chore: generate 2026-05-02 23:34:40 +00:00
Kit Langton f98053c34e fix(instance): run bootstrap from instance store (#25475) 2026-05-02 19:33:38 -04:00
opencode-agent[bot] 9d03d4419e chore: generate 2026-05-02 23:20:15 +00:00
Luke Parker 3f459819ba feat: refactor bash tool with shell-aware prompts for bash, pwsh+powershell, and cmd (#20039) 2026-05-03 09:18:48 +10:00
opencode-agent[bot] b3a7513765 chore: generate 2026-05-02 18:00:11 +00:00
Kit Langton f8738c9002 feat(models): effectify ModelsDev as Service (#25434) 2026-05-02 13:59:08 -04:00
opencode-agent[bot] 96061222d2 chore: generate 2026-05-02 15:45:21 +00:00
Kit Langton 3b9155714d Delete Instance.dispose and Instance.reload (#25427) 2026-05-02 11:44:16 -04:00
Kit Langton b09b7d28b8 refactor(instance-store): consolidate dispose helpers (#25424) 2026-05-02 11:21:40 -04:00
Kit Langton 78b3000031 fix(tui): keep shell-mode prompt editable (#25419) 2026-05-02 10:56:27 -04:00
Kit Langton 4c4860fb24 Replace Instance.disposeAll/load with fixture helper (#25418) 2026-05-02 10:56:15 -04:00
Kit Langton 5242a1c6b4 fix(httpapi): install Instance ALS for adapter Promise bridge (#25417) 2026-05-02 10:49:44 -04:00
Kit Langton 075f876e6f fix(httpapi): re-land workspace create payload accepts missing extra (#25412) 2026-05-02 09:35:39 -04:00
Kit Langton d99dde6306 Migrate test inits from Promise to Effect (#25377) 2026-05-02 09:07:59 -04:00
Kit Langton f33aec1139 Convert LoadInput.init to Effect + extract InstanceBootstrap as a Service (#25376) 2026-05-02 00:02:52 -04:00
Kit Langton 1571933096 Drop ALS fallbacks from containsPath and workspace routing (#25374) 2026-05-02 03:06:22 +00:00
Kit Langton 0b498dd448 fix(httpapi): preserve OpenAPI parameter parity (#25291) 2026-05-01 22:18:52 -04:00
Kit Langton cec9c6122a Move instance loading into Effect service (#25277) 2026-05-01 22:18:06 -04:00
Zeke Sikelianos 51e310c9ce fix(read): prevent unsupported image formats from being sending to provider (#21114)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-05-01 18:14:22 -05:00
opencode-agent[bot] 6252412d94 chore: generate 2026-05-01 20:03:10 +00:00
Dax Raad c2609cbf04 core: allow agents to access global tmp directory without permission prompts
Agents can now create temporary files in the global tmp directory without
triggering external_directory permission prompts. This enables agents to
freely use temporary storage for intermediate files during builds and
other operations.
2026-05-01 15:35:45 -04:00
Aiden Cline 29ec07700c fix: bedrock reasoning issue (#25303) 2026-05-01 11:15:17 -05:00
Kit Langton e9d84c6db7 fix(llm): preserve native stream fallback parity 2026-05-01 08:54:05 -04:00
Kit Langton f86a6790a2 refactor(llm): move queryParams off model.native to typed field
Promotes queryParams to a first-class ModelRef field used by Endpoint.baseURL,
so deployment-level URL query params (Azure api-version, OpenAI-compatible
provider knobs) live in a typed home instead of an opaque `native` bag.

Also removes write-only dead fields from `native`:

- openaiCompatibleProvider (set by family helper, never read)
- opencodeProviderID, opencodeModelID (set by opencode bridge + native session
  builder, never read)
- npm (set by opencode bridge, never read)

After this commit `model.native` only carries genuinely provider-specific
opaque options that no other adapter cares about (Bedrock's aws_credentials
+ aws_region for SigV4). Drops the now-dead ProviderShared.queryParams
helper. Updates AGENTS.md doc on native is implicit through the new schema
JSDoc.
2026-05-01 08:12:37 -04:00
Kit Langton 5d08e28cd9 refactor(llm): move auth secret from headers onto ModelRef.apiKey
Add an optional `apiKey` field to `ModelRef` so authentication is no
longer baked into `model.headers` at construction time. Each provider
adapter now passes an `Auth` to `Adapter.fromProtocol` that reads
`request.model.apiKey` per request:

- OpenAI Chat / Responses / OpenAI-compatible Chat: `Auth.bearer`
- Anthropic Messages:  `Auth.apiKeyHeader("x-api-key")`
- Gemini:              `Auth.apiKeyHeader("x-goog-api-key")`
- Bedrock Converse:    custom auth that uses `apiKey` for Bearer auth
                       and falls back to SigV4 with AWS credentials

The `model()` constructors no longer fold the API key into
`model.headers`. The OpenCode bridge sets `apiKey` directly instead of
building auth headers via the now-deleted `authHeader` helper. Test
assertions move from `headers: { authorization: "Bearer ..." }` to
`apiKey: "..."`.
2026-05-01 08:12:37 -04:00
Kit Langton a921eb88e6 test(opencode): cover Azure native request mapping 2026-05-01 08:12:36 -04:00