import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; const NATURAL_WORKFLOW_COMMANDS = new Set([ "audit", "autoresearch", "compare", "deepresearch", "draft", "jobs", "lit", "log", "replicate", "review", "story", "summarize", "watch", ]); export function routeNaturalWorkflowInput(text: string, availableCommands: Iterable): string | undefined { const trimmed = text.trim(); if (!trimmed || trimmed.startsWith("/") || trimmed.startsWith("!")) return undefined; const match = trimmed.match(/^([a-z][a-z0-9-]*)(?:\s+|$)([\s\S]*)$/i); if (!match) return undefined; const command = match[1]!.toLowerCase(); if (!NATURAL_WORKFLOW_COMMANDS.has(command)) return undefined; if (!new Set(availableCommands).has(command)) return undefined; const args = match[2]?.trim(); return `/${command}${args ? ` ${args}` : ""}`; } export function registerNaturalCommandRouting(pi: ExtensionAPI): void { pi.on("input", async (event, ctx) => { if (event.source === "extension") return; const transformed = routeNaturalWorkflowInput(event.text, pi.getCommands().map((command) => command.name)); if (!transformed) return; if (ctx.hasUI) { ctx.ui.notify(`Распознана команда: ${transformed.split(/\s+/, 1)[0]}`, "info"); } return { action: "transform", text: transformed, images: event.images }; }); }