|
|
@@ -1,10 +1,12 @@
|
|
|
import { Config } from "../config/config"
|
|
|
import z from "zod"
|
|
|
import { Provider } from "../provider/provider"
|
|
|
-import { generateObject, type ModelMessage } from "ai"
|
|
|
+import { generateObject, streamObject, type ModelMessage } from "ai"
|
|
|
import { SystemPrompt } from "../session/system"
|
|
|
import { Instance } from "../project/instance"
|
|
|
import { Truncate } from "../tool/truncation"
|
|
|
+import { Auth } from "../auth"
|
|
|
+import { ProviderTransform } from "../provider/transform"
|
|
|
|
|
|
import PROMPT_GENERATE from "./generate.txt"
|
|
|
import PROMPT_COMPACTION from "./prompt/compaction.txt"
|
|
|
@@ -276,10 +278,12 @@ export namespace Agent {
|
|
|
const defaultModel = input.model ?? (await Provider.defaultModel())
|
|
|
const model = await Provider.getModel(defaultModel.providerID, defaultModel.modelID)
|
|
|
const language = await Provider.getLanguage(model)
|
|
|
+
|
|
|
const system = SystemPrompt.header(defaultModel.providerID)
|
|
|
system.push(PROMPT_GENERATE)
|
|
|
const existing = await list()
|
|
|
- const result = await generateObject({
|
|
|
+
|
|
|
+ const params = {
|
|
|
experimental_telemetry: {
|
|
|
isEnabled: cfg.experimental?.openTelemetry,
|
|
|
metadata: {
|
|
|
@@ -305,7 +309,24 @@ export namespace Agent {
|
|
|
whenToUse: z.string(),
|
|
|
systemPrompt: z.string(),
|
|
|
}),
|
|
|
- })
|
|
|
+ } satisfies Parameters<typeof generateObject>[0]
|
|
|
+
|
|
|
+ if (defaultModel.providerID === "openai" && (await Auth.get(defaultModel.providerID))?.type === "oauth") {
|
|
|
+ const result = streamObject({
|
|
|
+ ...params,
|
|
|
+ providerOptions: ProviderTransform.providerOptions(model, {
|
|
|
+ instructions: SystemPrompt.instructions(),
|
|
|
+ store: false,
|
|
|
+ }),
|
|
|
+ onError: () => {},
|
|
|
+ })
|
|
|
+ for await (const part of result.fullStream) {
|
|
|
+ if (part.type === "error") throw part.error
|
|
|
+ }
|
|
|
+ return result.object
|
|
|
+ }
|
|
|
+
|
|
|
+ const result = await generateObject(params)
|
|
|
return result.object
|
|
|
}
|
|
|
}
|