agent: use Effect schema for generated agent object (#26973)
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
import { Config } from "@/config/config"
|
import { Config } from "@/config/config"
|
||||||
import z from "zod"
|
|
||||||
import { Provider } from "@/provider/provider"
|
import { Provider } from "@/provider/provider"
|
||||||
import { ModelID, ProviderID } from "../provider/schema"
|
import { ModelID, ProviderID } from "../provider/schema"
|
||||||
import { generateObject, streamObject, type ModelMessage } from "ai"
|
import { generateObject, streamObject, type ModelMessage } from "ai"
|
||||||
@@ -49,6 +48,12 @@ export const Info = Schema.Struct({
|
|||||||
}).annotate({ identifier: "Agent" })
|
}).annotate({ identifier: "Agent" })
|
||||||
export type Info = DeepMutable<Schema.Schema.Type<typeof Info>>
|
export type Info = DeepMutable<Schema.Schema.Type<typeof Info>>
|
||||||
|
|
||||||
|
const GeneratedAgent = Schema.Struct({
|
||||||
|
identifier: Schema.String,
|
||||||
|
whenToUse: Schema.String,
|
||||||
|
systemPrompt: Schema.String,
|
||||||
|
})
|
||||||
|
|
||||||
export interface Interface {
|
export interface Interface {
|
||||||
readonly get: (agent: string) => Effect.Effect<Info>
|
readonly get: (agent: string) => Effect.Effect<Info>
|
||||||
readonly list: () => Effect.Effect<Info[]>
|
readonly list: () => Effect.Effect<Info[]>
|
||||||
@@ -405,11 +410,10 @@ export const layer = Layer.effect(
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
model: language,
|
model: language,
|
||||||
schema: z.object({
|
schema: Object.assign(
|
||||||
identifier: z.string(),
|
Schema.toStandardSchemaV1(GeneratedAgent),
|
||||||
whenToUse: z.string(),
|
Schema.toStandardJSONSchemaV1(GeneratedAgent),
|
||||||
systemPrompt: z.string(),
|
),
|
||||||
}),
|
|
||||||
} satisfies Parameters<typeof generateObject>[0]
|
} satisfies Parameters<typeof generateObject>[0]
|
||||||
|
|
||||||
if (isOpenaiOauth) {
|
if (isOpenaiOauth) {
|
||||||
|
|||||||
Reference in New Issue
Block a user