mlld
Version:
mlld: a modular prompt scripting language
1 lines • 4.36 kB
Source Map (JSON)
{"version":3,"sources":["../core/errors/capture.ts"],"names":["captureError","error","source","filePath","id","getNextCaptureId","dir","path","join","fs","mkdir","recursive","writeFile","context","message","name","stack","location","found","expected","timestamp","Date","toISOString","JSON","stringify","copyFile","captureDir","access","entries","readdir","ids","filter","e","test","map","parseInt","sort","a","b","nextId","length","toString","padStart"],"mappings":"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","file":"capture-KPIII4FK.mjs","sourcesContent":["import fs from 'fs/promises';\nimport path from 'path';\n\nexport async function captureError(error: Error, source: string, filePath: string): Promise<string> {\n const id = await getNextCaptureId();\n const dir = path.join('errors', 'captured', id);\n \n await fs.mkdir(dir, { recursive: true });\n \n // Save the input that caused the error\n await fs.writeFile(path.join(dir, 'input.mld'), source);\n \n // Save error context\n const context = {\n error: {\n message: error.message,\n name: error.name,\n stack: error.stack,\n location: (error as any).location as unknown,\n found: (error as any).found as unknown,\n expected: (error as any).expected as unknown\n },\n filePath,\n timestamp: new Date().toISOString()\n };\n \n await fs.writeFile(\n path.join(dir, 'context.json'), \n JSON.stringify(context, null, 2)\n );\n \n // Copy the pattern template\n await fs.copyFile(\n path.join('errors', 'templates', 'pattern.ts'),\n path.join(dir, 'pattern.ts')\n );\n \n // Create a simple example.md file\n await fs.writeFile(\n path.join(dir, 'example.md'),\n `# Error Pattern: ${id}\\n\\n## Input\\n\\`\\`\\`mld\\n${source}\\n\\`\\`\\`\\n\\n## Error\\n\\`\\`\\`\\n${error.message}\\n\\`\\`\\`\\n`\n );\n \n return dir;\n}\n\nasync function getNextCaptureId(): Promise<string> {\n const captureDir = path.join('errors', 'captured');\n \n try {\n await fs.access(captureDir);\n } catch {\n // Directory doesn't exist, this is the first capture\n return '001';\n }\n \n const entries = await fs.readdir(captureDir);\n const ids = entries\n .filter(e => /^\\d{3}$/.test(e))\n .map(e => parseInt(e, 10))\n .sort((a, b) => b - a);\n \n const nextId = ids.length > 0 ? ids[0] + 1 : 1;\n return nextId.toString().padStart(3, '0');\n}"]}