import type { ExtensionAPI } from "@oh-my-pi/pi-coding-agent"; const catalog = [ { id: "reed", habitat: "marsh" }, { id: "fern", habitat: "woodland" }, ]; export default function catalogEntry(pi: ExtensionAPI): void { const { Type } = pi.typebox; pi.registerTool({ name: "field_catalog", label: "Field catalog", description: "Discover ids or query fictional field notes by habitat. Read-only.", parameters: Type.Object({ op: Type.Union([Type.Literal("discover"), Type.Literal("query")]), habitat: Type.Optional(Type.String()), }), async execute(_id, params) { const details = params.op === "discover" ? { operations: ["discover", "query"], ids: catalog.map(note => note.id) } : { notes: catalog.filter(note => !params.habitat || note.habitat === params.habitat) }; return { content: [{ type: "text", text: JSON.stringify(details) }], details }; }, }); pi.registerCommand("field-catalog", { description: "List fictional catalog entries", async handler(_args, ctx) { ctx.ui.notify(catalog.map(note => `${note.id}: ${note.habitat}`).join("\n"), "info"); }, }); }