import { cpus } from "node:os"; import { groupSystemPrompt } from "../index.ts"; const append = `# Response style - Abbreviate: DB/auth/config/req/res/fn/impl - Strip conjunctions, articles - Arrows: X → Y → Z - Fragments OK - No filler, hedging, pleasantries`; const prompt = `You are a coding agent. Use tools. - read: Read files - bash: Execute shell commands - edit: Precise replacement - write: Write files ${"- Use concise output.\n".repeat(120).trimEnd()} ${append} Project-specific instructions and guidelines: ${"Use exact edits. Prefer rg/fd.\n".repeat(160).trimEnd()} The following skills provide specialized instructions for specific tasks. Use the read tool to load a skill's file when the task matches its description. When a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands. ${Array.from( { length: 24 }, (_, i) => ` skill-${i} ${"desc ".repeat(24)} /skills/skill-${i}/SKILL.md `, ).join("\n")} /repo `; function oldGroupSystemPrompt(raw: string): string { const sections = [ { label: "[CORE]", test: (l: string) => l.includes("You are a coding agent") || l.includes("use these tools"), }, { label: "[TOOLS]", test: (l: string) => l.includes("## Available tools") || l.includes("- read:") || l.includes("- bash:"), }, { label: "[GUIDE]", test: (l: string) => l.includes("## Guidelines") || l.includes("- Use the") || l.includes("- When"), }, { label: "[SKILLS]", test: (l: string) => l.includes("## Available skills") || l.includes("Use skill documentation"), }, { label: "[CTX]", test: (l: string) => l.includes("## Project Context") || l.includes("# Project Context"), }, { label: "[APPEND]", test: (l: string) => l.includes("APPEND_SYSTEM") || l.includes("Response Protocol") || l.includes("Abbreviate") || l.includes("Strip conjunctions"), }, { label: "[DATE]", test: (l: string) => l.includes("Current date:") || l.includes("Current working directory:"), }, ]; const lines = raw.split("\n"); let current = "[UNKNOWN]"; const grouped: Record = {}; for (const line of lines) { const match = sections.find((s) => s.test(line)); if (match) current = match.label; else if (line.trim() === "") current = "[BLANK]"; if (!grouped[current]) grouped[current] = []; grouped[current].push(line); } return Object.entries(grouped) .map(([k, v]) => `${k}\n${v.join("\n")}`) .join("\n\n"); } const mode = process.argv[2] === "old" ? "old" : "new"; const threads = cpus().length; let sink = 0; function consume(s: string): void { sink ^= s.length ^ s.charCodeAt(0) ^ s.charCodeAt(s.length >> 1) ^ s.charCodeAt(s.length - 1); } function bench(name: string, fn: () => string, n = 20_000, rounds = 12): void { for (let i = 0; i < 3_000; i++) consume(fn()); for (let r = 0; r < rounds; r++) { const start = performance.now(); for (let i = 0; i < n; i++) consume(fn()); const ns = ((performance.now() - start) * 1_000_000) / n; console.log(`Benchmark${name}-${threads}\t${n}\t${ns.toFixed(0)} ns/op`); } } bench( "PromptAutopsy", mode === "old" ? () => oldGroupSystemPrompt(prompt) : () => groupSystemPrompt(prompt), ); if (sink === 42) console.log("sink", sink);