diff --git a/packages/opencode/src/agent/agent.ts b/packages/opencode/src/agent/agent.ts index 843d65433c90..2a8bed092799 100644 --- a/packages/opencode/src/agent/agent.ts +++ b/packages/opencode/src/agent/agent.ts @@ -341,6 +341,10 @@ export namespace Agent { ) const existing = yield* InstanceState.useEffect(state, (s) => s.list()) + // TODO: clean this up so provider specific logic doesnt bleed over + const authInfo = yield* auth.get(model.providerID).pipe(Effect.orDie) + const isOpenaiOauth = model.providerID === "openai" && authInfo?.type === "oauth" + const params = { experimental_telemetry: { isEnabled: cfg.experimental?.openTelemetry, @@ -350,12 +354,14 @@ export namespace Agent { }, temperature: 0.3, messages: [ - ...system.map( - (item): ModelMessage => ({ - role: "system", - content: item, - }), - ), + ...(isOpenaiOauth + ? [] + : system.map( + (item): ModelMessage => ({ + role: "system", + content: item, + }), + )), { role: "user", content: `Create an agent configuration based on this request: \"${input.description}\".\n\nIMPORTANT: The following identifiers already exist and must NOT be used: ${existing.map((i) => i.name).join(", ")}\n Return ONLY the JSON object, no other text, do not wrap in backticks`, @@ -369,13 +375,12 @@ export namespace Agent { }), } satisfies Parameters[0] - // TODO: clean this up so provider specific logic doesnt bleed over - const authInfo = yield* auth.get(model.providerID).pipe(Effect.orDie) - if (model.providerID === "openai" && authInfo?.type === "oauth") { + if (isOpenaiOauth) { return yield* Effect.promise(async () => { const result = streamObject({ ...params, providerOptions: ProviderTransform.providerOptions(resolved, { + instructions: system.join("\n"), store: false, }), onError: () => {},