{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-HRB7Z3QN.cjs","../src/cli/commands/ask.command.ts"],"names":["createAskCommand","askCommand","Command","chalk","askCommandOptions","option","askCommandHelpText","query","options","dbManager","fileContent","processFiles","finalQuery","assembleQuery","input","resetFilterConfig","filteringEnabled","filterTypes","processFilterTypes","contentFilter","setupContentFilter","filteredQuery","filterAndDisplayQuery","displayFilterStatistics","saveFilterConfig","processedQuery","processActTemplate","profile","DEFAULT_PROFILE","validateProfile","DatabaseManager","sessionId","handleSession","credentials","validateCredentials","logProcessingInfo","streamAIResponse","session","error"],"mappings":"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","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-HRB7Z3QN.cjs","sourcesContent":[null,"import {input} from '@inquirer/prompts';\nimport chalk from 'chalk';\nimport {Command} from 'commander';\nimport {DatabaseManager} from '../../core/database/manager.js';\nimport {DEFAULT_PROFILE} from '../../core/shared/constants.js';\nimport {\n  assembleQuery,\n  displayFilterStatistics,\n  filterAndDisplayQuery,\n  handleSession,\n  logProcessingInfo,\n  processActTemplate,\n  processFiles,\n  processFilterTypes,\n  resetFilterConfig,\n  saveFilterConfig,\n  setupContentFilter,\n  streamAIResponse,\n  validateCredentials,\n  validateProfile,\n} from './ask/actions/index.js';\nimport {askCommandHelpText, askCommandOptions} from './ask/index.js';\n\nexport const createAskCommand = (): Command => {\n  const askCommand = new Command('ask');\n\n  askCommand\n    .description(\n      [\n        chalk.bold('Ask AI a question and get a response.'),\n        '',\n        chalk.gray('Supports piped input from stdin and file processing.'),\n        chalk.gray('Use --act <template> for expert prompt templates.'),\n        chalk.gray('See all templates with \"rawi act --list\".'),\n        '─'.repeat(80),\n      ].join('\\n'),\n    )\n    .argument(\n      '[query]',\n      chalk.white(\n        'The question or prompt to send to the AI (can be combined with piped input or file content)',\n      ),\n    );\n\n  askCommandOptions.forEach((option) => {\n    if ('defaultValue' in option && option.defaultValue !== undefined) {\n      askCommand.option(option.flags, option.description, option.defaultValue);\n    } else {\n      askCommand.option(option.flags, option.description);\n    }\n  });\n\n  askCommand\n    .addHelpText('after', askCommandHelpText)\n    .action(async (query: string, options: any) => {\n      let dbManager: DatabaseManager | null = null;\n\n      try {\n        let fileContent = '';\n        if (options.file || options.files || options.batch) {\n          const fileResult = await processFiles(options);\n          fileContent = fileResult.fileContent;\n        }\n\n        let finalQuery: string;\n        try {\n          finalQuery = await assembleQuery(query, fileContent);\n        } catch (_error) {\n          if (!query && !fileContent && process.stdin.isTTY) {\n            const userInput = await input({\n              message: 'What would you like to ask?',\n              required: true,\n            });\n            finalQuery = userInput;\n          } else {\n            askCommand.help();\n            return;\n          }\n        }\n\n        if (!finalQuery || finalQuery.trim() === '') {\n          askCommand.help();\n          return;\n        }\n\n        if (options.resetFilterConfig) {\n          resetFilterConfig(options);\n          if (!finalQuery || finalQuery.trim() === '') {\n            return;\n          }\n        }\n\n        const filteringEnabled =\n          options.filterSensitive ||\n          (options.filterTypes && options.filterTypes.trim() !== '');\n        const filterTypes = processFilterTypes(filteringEnabled, options);\n        const contentFilter = setupContentFilter(\n          filteringEnabled,\n          filterTypes,\n          options,\n        );\n\n        const filteredQuery = filterAndDisplayQuery(\n          contentFilter,\n          finalQuery,\n          filteringEnabled,\n          options,\n        );\n        displayFilterStatistics(\n          contentFilter,\n          finalQuery,\n          filteringEnabled,\n          options,\n        );\n\n        if (options.saveFilterConfig) {\n          saveFilterConfig(contentFilter, options);\n          if (!finalQuery || finalQuery.trim() === '') {\n            return;\n          }\n        }\n\n        let processedQuery = filteredQuery;\n        if (options.act) {\n          try {\n            processedQuery = await processActTemplate(\n              options.act,\n              filteredQuery,\n              options,\n            );\n          } catch (_error) {\n            return;\n          }\n        }\n\n        const profile = options.profile || DEFAULT_PROFILE;\n        validateProfile(profile, options);\n\n        dbManager = new DatabaseManager();\n        const sessionId = await handleSession(dbManager, profile, options);\n\n        const credentials = validateCredentials(profile, options);\n        logProcessingInfo(profile, processedQuery, options);\n\n        await streamAIResponse(\n          credentials,\n          sessionId,\n          processedQuery,\n          dbManager,\n          filteringEnabled,\n          filterTypes,\n          options,\n        );\n\n        if (options.verbose) {\n          const session = await dbManager.getSession(sessionId);\n          if (session) {\n            console.log(\n              chalk.dim(\n                `\\n💬 Session: ${sessionId} (${session.messageCount} messages)`,\n              ),\n            );\n          }\n        }\n      } catch (error) {\n        if (options.verbose) {\n          console.error('Error processing query:', error);\n        }\n        process.exit(1);\n      } finally {\n        if (dbManager) {\n          dbManager.close();\n        }\n      }\n    });\n\n  return askCommand;\n};\n"]}