index.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import z from "zod/v4"
  2. import { Config } from "../config/config"
  3. import { Instance } from "../project/instance"
  4. export namespace Command {
  5. export const Info = z
  6. .object({
  7. name: z.string(),
  8. description: z.string().optional(),
  9. agent: z.string().optional(),
  10. model: z.string().optional(),
  11. template: z.string(),
  12. subtask: z.boolean().optional(),
  13. })
  14. .meta({
  15. ref: "Command",
  16. })
  17. export type Info = z.infer<typeof Info>
  18. const state = Instance.state(async () => {
  19. const cfg = await Config.get()
  20. const result: Record<string, Info> = {}
  21. for (const [name, command] of Object.entries(cfg.command ?? {})) {
  22. result[name] = {
  23. name,
  24. agent: command.agent,
  25. model: command.model,
  26. description: command.description,
  27. template: command.template,
  28. subtask: command.subtask,
  29. }
  30. }
  31. return result
  32. })
  33. export async function get(name: string) {
  34. return state().then((x) => x[name])
  35. }
  36. export async function list() {
  37. return state().then((x) => Object.values(x))
  38. }
  39. }