|
|
@@ -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<typeof generateObject>[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: () => {},
|