tool.ts 842 B

123456789101112131415161718192021222324252627282930313233343536
  1. import type { StandardSchemaV1 } from "@standard-schema/spec"
  2. export namespace Tool {
  3. interface Metadata {
  4. title: string
  5. [key: string]: any
  6. }
  7. export type Context<M extends Metadata = Metadata> = {
  8. sessionID: string
  9. messageID: string
  10. abort: AbortSignal
  11. metadata(meta: M): void
  12. }
  13. export interface Info<
  14. Parameters extends StandardSchemaV1 = StandardSchemaV1,
  15. M extends Metadata = Metadata,
  16. > {
  17. id: string
  18. description: string
  19. parameters: Parameters
  20. execute(
  21. args: StandardSchemaV1.InferOutput<Parameters>,
  22. ctx: Context,
  23. ): Promise<{
  24. metadata: M
  25. output: string
  26. }>
  27. }
  28. export function define<
  29. Parameters extends StandardSchemaV1,
  30. Result extends Metadata,
  31. >(input: Info<Parameters, Result>): Info<Parameters, Result> {
  32. return input
  33. }
  34. }