{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-DFRFF36Y.cjs","../src/core/exec/generator.ts"],"names":["generateCommand","options","context","buildExecContext","contextInfo","formatContextForPrompt","systemPrompt","createSystemPrompt","userPrompt","createUserPrompt","result","generateWithProvider","validateCommand","command","warnings","isDangerous","isPotentiallyDangerousCommand","dangerousPatterns","pattern"],"mappings":"AAAA;AACA,wDAA0C,wDAAyC,wDAAgD,wDAAyC,MCkB5K,SAAsBA,CAAAA,CACpBC,CAAAA,CAC2B,CAC3B,IAAMC,CAAAA,CAAU,MAAMC,iCAAAA,CAAiB,CACjCC,CAAAA,CAAcC,iCAAAA,CAA8B,CAAA,CAC5CC,CAAAA,CAAeC,iCAAAA,CAA8B,CAAA,CAC7CC,CAAAA,CAAaC,iCAAAA,CAAiBR,CAAQ,WAAW,CAAA,CAEjDS,CAAAA,CAAS,MAAMC,iCAAAA,CACnB,WAAA,CAAaV,CAAAA,CAAQ,WAAA,CACrB,YAAA,CAAAK,CAAAA,CACA,UAAA,CAAAE,CACF,CAAC,CAAA,CAED,MAAO,CACL,OAAA,CAASE,CAAAA,CAAO,OAAA,CAChB,WAAA,CAAaT,CAAAA,CAAQ,WAAA,CACrB,OAAA,CAASG,CAAAA,CACT,cAAA,CAAgBM,CAAAA,CAAO,cACzB,CACF,CAEO,SAASE,CAAAA,CAAgBC,CAAAA,CAI9B,CACA,IAAMC,CAAAA,CAAqB,CAAC,CAAA,CAExBC,CAAAA,CAAcC,iCAAAA,CAAqC,CAAA,CAEjDC,CAAAA,CAAoB,CACxB,mBAAA,CACA,mBAAA,CACA,gBAAA,CACA,iBAAA,CACA,MAAA,CACA,OAAA,CACA,eAAA,CACA,WAAA,CACA,WAAA,CACA,eAAA,CACA,eACF,CAAA,CAEA,GAAA,CAAA,IAAWC,EAAAA,GAAWD,CAAAA,CACpB,EAAA,CAAIC,CAAAA,CAAQ,IAAA,CAAKL,CAAO,CAAA,CAAG,CACzBE,CAAAA,CAAc,CAAA,CAAA,CACdD,CAAAA,CAAS,IAAA,CACP,6DACF,CAAA,CACA,KACF,CAGF,MAAI,CAACD,CAAAA,EAAWA,CAAAA,CAAQ,IAAA,CAAK,CAAA,GAAM,EAAA,CAC1B,CACL,OAAA,CAAS,CAAA,CAAA,CACT,WAAA,CAAa,CAAA,CAAA,CACb,QAAA,CAAU,CAAC,4BAA4B,CACzC,CAAA,CAAA,CAGEA,CAAAA,CAAQ,MAAA,CAAS,GAAA,EACnBC,CAAAA,CAAS,IAAA,CAAK,qCAAqC,CAAA,CAAA,CAInDD,CAAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EACpBA,CAAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,EACrBA,CAAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,CAAA,EAErBC,CAAAA,CAAS,IAAA,CAAK,sCAAsC,CAAA,CAG/C,CACL,OAAA,CAAS,CAAA,CAAA,CACT,WAAA,CAAAC,CAAAA,CACA,QAAA,CAAAD,CACF,CAAA,CACF,CAAA,6BAAA;ADjGA","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-DFRFF36Y.cjs","sourcesContent":[null,"import {generateWithProvider} from '../providers/utils.js';\nimport type {RawiCredentials} from '../shared/index.js';\nimport {buildExecContext, formatContextForPrompt} from './context.js';\nimport {isPotentiallyDangerousCommand} from './executor.js';\nimport {createSystemPrompt, createUserPrompt} from './prompts.js';\n\nexport interface GenerateCommandOptions {\n  credentials: RawiCredentials;\n  description: string;\n  timeout?: number;\n}\n\nexport interface GeneratedCommand {\n  command: string;\n  description: string;\n  context: string;\n  generationTime: number;\n}\n\nexport async function generateCommand(\n  options: GenerateCommandOptions,\n): Promise<GeneratedCommand> {\n  const context = await buildExecContext();\n  const contextInfo = formatContextForPrompt(context);\n  const systemPrompt = createSystemPrompt(contextInfo);\n  const userPrompt = createUserPrompt(options.description);\n\n  const result = await generateWithProvider({\n    credentials: options.credentials,\n    systemPrompt,\n    userPrompt,\n  });\n\n  return {\n    command: result.command,\n    description: options.description,\n    context: contextInfo,\n    generationTime: result.generationTime,\n  };\n}\n\nexport function validateCommand(command: string): {\n  isValid: boolean;\n  isDangerous: boolean;\n  warnings: string[];\n} {\n  const warnings: string[] = [];\n\n  let isDangerous = isPotentiallyDangerousCommand(command);\n\n  const dangerousPatterns = [\n    /rm\\s+-rf\\s*\\/\\s*$/, // rm -rf /\n    /rm\\s+-rf\\s*\\*\\s*$/, // rm -rf *\n    />\\s*\\/dev\\/sda/, // Writing to disk directly\n    /dd\\s+.*of=\\/dev/, // dd to device\n    /mkfs/, // Format filesystem\n    /fdisk/, // Disk partitioning\n    /:(){ :|:& };:/, // Fork bomb\n    /sudo\\s+rm/, // sudo rm\n    /sudo\\s+dd/, // sudo dd\n    /curl.*\\|\\s*sh/, // Pipe curl to shell\n    /wget.*\\|\\s*sh/, // Pipe wget to shell\n  ];\n\n  for (const pattern of dangerousPatterns) {\n    if (pattern.test(command)) {\n      isDangerous = true;\n      warnings.push(\n        'This command may be dangerous and could cause system damage',\n      );\n      break;\n    }\n  }\n\n  if (!command || command.trim() === '') {\n    return {\n      isValid: false,\n      isDangerous: false,\n      warnings: ['Generated command is empty'],\n    };\n  }\n\n  if (command.length > 1000) {\n    warnings.push('Generated command is unusually long');\n  }\n\n  if (\n    command.includes(';') ||\n    command.includes('&&') ||\n    command.includes('||')\n  ) {\n    warnings.push('Command contains multiple operations');\n  }\n\n  return {\n    isValid: true,\n    isDangerous,\n    warnings,\n  };\n}\n"]}