Repair and validate AI-generated JSON with auto-generated retry prompts.
npm install agentic-json-repairbash
npm install agentic-json-repair zod
`
Usage
`typescript
import { safeParseAI } from 'agentic-json-repair';
import { z } from 'zod';
// Define your expected schema
const UserSchema = z.object({
name: z.string(),
age: z.number(),
});
// Parse messy AI output
const aiOutput =
\\json
{
name: "Alice",
age: 30,
}
\\\
;
const result = safeParseAI(aiOutput, UserSchema);
if (result.success) {
console.log(result.data); // { name: "Alice", age: 30 } - fully typed!
} else {
// Use retry prompt to ask the AI to fix the output
console.log(result.retryPrompt);
}
`
API
$3
Attempts to extract, repair, and validate JSON from an AI's text output.
Returns:
`typescript
// On success
{ success: true; data: T }
// On failure
{ success: false; error: string; retryPrompt: string }
`
What it handles
| Problem | Example | Fixed |
|---------|---------|-------|
| Markdown code blocks | `json {...} ` | ✅ |
| Surrounding prose | "Here's the JSON: {...}" | ✅ |
| Unquoted keys | { name: "Alice" } | ✅ |
| Trailing commas | { "a": 1, } | ✅ |
| Schema mismatches | Wrong types, missing fields | ✅ (retry prompt) |
Agentic Loop Example
`typescript
async function getStructuredData(prompt: string, schema: z.ZodType) {
let attempts = 0;
let currentPrompt = prompt;
while (attempts < 3) {
const aiOutput = await callLLM(currentPrompt);
const result = safeParseAI(aiOutput, schema);
if (result.success) {
return result.data;
}
// Use the auto-generated retry prompt
currentPrompt = result.retryPrompt;
attempts++;
}
throw new Error('Failed to get valid structured data');
}
``