{"version":3,"sources":["../../../src/utils/logger.ts","../../../src/services/intent-service.ts"],"names":["winston","chalk","path"],"mappings":"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","file":"intent-service.cjs","sourcesContent":["import winston from 'winston';\nimport chalk from 'chalk';\nimport { IssueError, FileNotFoundError, InvalidFilenameError, InvalidTargetError, FileExistsError, handleError } from '../errors/errors.js';\n\n// Define our custom logger interface\nexport interface CustomLogger extends winston.Logger {\n  success(message: any, ...meta: any[]): winston.Logger;\n  debug(message: any, ...meta: any[]): winston.Logger;\n}\n\nconst { format, createLogger, transports } = winston;\nconst { combine, timestamp, printf } = format;\n\n// Custom format for different log levels\nconst customFormat = printf((info: winston.Logform.TransformableInfo) => {\n  const ts = new Date(info.timestamp?.toString() || Date.now()).toLocaleTimeString();\n  \n  switch (info.level) {\n    case 'error':\n      return `${chalk.gray(ts)} ${chalk.red('✖')} ${chalk.red(info.message)}`;\n    case 'warn':\n      return `${chalk.gray(ts)} ${chalk.yellow('⚠')} ${chalk.yellow(info.message)}`;\n    case 'info':\n      return `${chalk.gray(ts)} ${chalk.blue('ℹ')} ${info.message}`;\n    case 'debug':\n      return `${chalk.gray(ts)} ${chalk.gray('🔍')} ${chalk.gray(info.message)}`;\n    case 'success':\n      return `${chalk.gray(ts)} ${chalk.green('✔')} ${chalk.green(info.message)}`;\n    default:\n      return `${chalk.gray(ts)} ${info.message}`;\n  }\n});\n\n// Create custom success level\nconst customLevels = {\n  levels: {\n    error: 0,\n    warn: 1,\n    info: 2,\n    debug: 3,\n    success: 4\n  },\n  colors: {\n    error: 'red',\n    warn: 'yellow',\n    info: 'blue',\n    debug: 'gray',\n    success: 'green'\n  }\n};\n\n// Create a filter to completely silence debug messages unless explicitly enabled\nconst silenceDebug = format((info) => {\n  if (info.level === 'debug' && !process.env.DEBUG_ENABLED) {\n    return false;\n  }\n  return info;\n});\n\n// Create the logger with silent debug by default\nconst baseLogger = createLogger({\n  levels: customLevels.levels,\n  format: combine(\n    silenceDebug(),\n    timestamp(),\n    customFormat\n  ),\n  transports: [\n    new transports.Console({\n      level: 'info'\n    })\n  ]\n});\n\n// Add success method to match our interface\n(baseLogger as any).success = baseLogger.info;\n\nexport const logger = baseLogger as CustomLogger;\n\n// Add colors to winston\nwinston.addColors(customLevels.colors);\n\n// Function to configure logger based on debug flag\nexport function configureLogger(debug: boolean = false) {\n  process.env.DEBUG_ENABLED = debug ? 'true' : '';\n  const level = debug ? 'debug' : 'info';\n  logger.transports.forEach(transport => {\n    if (transport instanceof winston.transports.Console) {\n      transport.level = level;\n    }\n  });\n}\n\n// Re-export error types for convenience\nexport { IssueError, FileNotFoundError, InvalidFilenameError, InvalidTargetError, FileExistsError, handleError }; ","import { ResolvedConfig } from '../utils/config.js';\nimport path from 'path';\nimport { FrontmatterMetadata, ValidationResult } from '../types.js';\nimport { PluginService } from './plugin-service.js';\nimport { logger } from '../utils/logger.js';\n\nexport interface FileLocation {\n  dirname: string;\n  basename: string;\n}\n\nexport interface FileState {\n  pathname: string;\n  metadata: FrontmatterMetadata;\n}\n\nexport interface FileIntent {\n  targetDir: string;\n  metadata: FrontmatterMetadata;\n}\n\nexport interface InterpretedIntent {\n  targetLocation: FileLocation;\n  targetMetadata: FrontmatterMetadata;\n  reason: string;\n}\n\nexport interface LocationPattern {\n  inDirectory?: string | ((dir: string) => boolean);\n  hasTypeDir?: boolean;\n}\n\nexport interface MetadataPattern {\n  hasState?: boolean;\n  specificState?: string | ((state: string) => boolean);\n}\n\nexport interface IntentPattern {\n  pattern: {\n    location?: LocationPattern;\n    metadata?: MetadataPattern;\n  };\n  interpretation: (state: FileState) => InterpretedIntent;\n}\n\nexport class IntentService {\n  private intentPatterns: IntentPattern[];\n  private validTypes: string[];\n\n  constructor(\n    private config: ResolvedConfig,\n    private pluginService?: PluginService\n  ) {\n    this.intentPatterns = [];\n    \n    // Initialize valid types from config first\n    this.validTypes = [...config.types_list];\n    logger.debug('Initial validTypes:', this.validTypes);\n    \n    // Ensure 'issue' is a valid type if no types are configured\n    if (this.validTypes.length === 0) {\n      this.validTypes = ['issue'];\n      logger.debug('No types configured, using default:', this.validTypes);\n    }\n    // Add 'issue' as a default type if not already present\n    else if (!this.validTypes.includes('issue')) {\n      this.validTypes.push('issue');\n      logger.debug('Added issue type:', this.validTypes);\n    }\n    \n    // Initialize plugin service with core states if provided\n    if (this.pluginService) {\n      logger.debug('Registering core types with plugin service:', this.validTypes);\n      // Register core states from config\n      this.pluginService.registerCoreTypes(this.validTypes);\n      this.pluginService.registerCoreActiveStates(this.config.active_states);\n      this.pluginService.registerCoreInactiveReasons(this.config.inactive_reasons);\n      \n      // Get plugin types and combine with our existing types\n      const pluginTypes = this.pluginService.getValidTypes();\n      logger.debug('Plugin types:', pluginTypes);\n      \n      // Combine all types while preserving uniqueness\n      this.validTypes = [...new Set([...this.validTypes, ...pluginTypes])];\n      logger.debug('Final validTypes:', this.validTypes);\n      \n      // Apply plugin patterns\n      this.intentPatterns = this.pluginService.applyPluginIntents(this.intentPatterns);\n    }\n  }\n\n  /**\n   * Get all registered intent patterns, including plugin-provided ones\n   */\n  getIntentPatterns(): IntentPattern[] {\n    return [...this.intentPatterns];\n  }\n\n  isValidState(state: string): boolean {\n    if (!state) return false;\n\n    // Get all valid states including plugin-provided ones\n    const validActiveStates = this.pluginService \n      ? this.pluginService.getValidActiveStates()\n      : this.config.active_states;\n\n    const validInactiveReasons = this.pluginService\n      ? this.pluginService.getValidInactiveReasons()\n      : this.config.inactive_reasons;\n\n    const normalizedState = state.toLowerCase();\n    logger.debug('isValidState - Checking state:', state);\n    logger.debug('isValidState - Valid active states:', validActiveStates);\n    logger.debug('isValidState - Valid inactive reasons:', validInactiveReasons);\n    \n    return validActiveStates.includes(normalizedState) || validInactiveReasons.includes(normalizedState);\n  }\n\n  private isValidInactiveReason(reason: string): boolean {\n    // Get all valid inactive reasons including plugin-provided ones\n    const validReasons = this.pluginService\n      ? this.pluginService.getValidInactiveReasons()\n      : this.config.inactive_reasons;\n\n    return validReasons.includes(reason.toLowerCase());\n  }\n\n  private isValidType(type: string): boolean {\n    if (!type) return false;\n    \n    // Always allow 'issue' type\n    if (type.toLowerCase() === 'issue') return true;\n    \n    // Normalize the type for comparison\n    const normalizedType = type.toLowerCase();\n    logger.debug('isValidType - Checking type:', type);\n    logger.debug('isValidType - Valid types:', this.validTypes);\n    \n    // Check against our combined list of valid types\n    return this.validTypes.some(t => t.toLowerCase() === normalizedType);\n  }\n\n  isActiveState(state: string): boolean {\n    if (!state) return false;\n    \n    // Check if it's an active state from config or plugins\n    const validStates = this.pluginService \n      ? this.pluginService.getValidActiveStates()\n      : this.config.active_states;\n\n    logger.debug('isActiveState - Checking state:', state);\n    logger.debug('isActiveState - Valid states:', validStates);\n    \n    return validStates.includes(state.toLowerCase());\n  }\n\n  isInactiveReason(state: string): boolean {\n    if (!state) return false;\n\n    // Check if it's an inactive reason from config or plugins\n    const validReasons = this.pluginService\n      ? this.pluginService.getValidInactiveReasons()\n      : this.config.inactive_reasons;\n\n    logger.debug('isInactiveReason - Checking state:', state);\n    logger.debug('isInactiveReason - Valid reasons:', validReasons);\n    \n    return validReasons.includes(state.toLowerCase());\n  }\n\n  getCanonicalState(state: string): string {\n    // Get all valid states including plugin-provided ones\n    const validActiveStates = this.pluginService \n      ? this.pluginService.getValidActiveStates()\n      : this.config.active_states;\n\n    const validInactiveReasons = this.pluginService\n      ? this.pluginService.getValidInactiveReasons()\n      : this.config.inactive_reasons;\n\n    // Preserve user's case if it exactly matches a configured state\n    const exactActiveMatch = validActiveStates.find(s => s === state);\n    if (exactActiveMatch) return exactActiveMatch;\n\n    const exactInactiveMatch = validInactiveReasons.find(r => r === state);\n    if (exactInactiveMatch) return exactInactiveMatch;\n\n    // Otherwise find case-insensitive match\n    const activeMatch = validActiveStates.find(s => s.toLowerCase() === state.toLowerCase());\n    if (activeMatch) return activeMatch;\n\n    const inactiveMatch = validInactiveReasons.find(r => r.toLowerCase() === state.toLowerCase());\n    if (inactiveMatch) return inactiveMatch;\n\n    return state; // Let validation catch invalid states\n  }\n\n  getTargetDirForState(state: string, type: string): string {\n    // Ensure we're working with relative paths\n    const rootDir = this.config.issues_dir.replace(/^\\/+/, '');\n    const inboxDir = this.config.inbox_dir.replace(/^\\/+/, '');\n\n    // For active states, use the state directory\n    if (this.isActiveState(state)) {\n      return path.join(rootDir, `_${state}`);\n    }\n\n    // For inactive states, use the type archive directory\n    if (this.isInactiveReason(state)) {\n      return path.join(rootDir, type);\n    }\n\n    // Default to inbox\n    return inboxDir;\n  }\n\n  getTypeArchiveDir(type: string): string {\n    // Ensure we're working with relative paths\n    const rootDir = this.config.issues_dir.replace(/^\\/+/, '');\n    return path.join(rootDir, type);\n  }\n\n  matchState(state: FileState): { matches: boolean; state?: string } {\n    if (!state.pathname || !state.metadata) {\n      return { matches: false };\n    }\n\n    const normalizedPathname = state.pathname.toLowerCase();\n\n    // First check metadata state if present\n    if (state.metadata.state) {\n      const canonicalState = this.getCanonicalState(state.metadata.state);\n      const isActive = this.isActiveState(canonicalState);\n\n      // For active states, check if in correct directory\n      if (isActive) {\n        if (normalizedPathname.includes(`_${canonicalState.toLowerCase()}/`)) {\n          return { matches: true, state: canonicalState };\n        }\n      } else {\n        // For inactive states, check if in type directory\n        if (normalizedPathname.includes(`/${state.metadata.type}/`)) {\n          return { matches: true, state: canonicalState };\n        }\n      }\n      return { matches: false };\n    }\n\n    // If no metadata state, check pathname patterns\n    // Special case for inbox\n    if (normalizedPathname === 'inbox' || normalizedPathname.includes('inbox/')) {\n      return { matches: true, state: 'inbox' };\n    }\n\n    // Check for active states in underscore-prefixed directories\n    for (const activeState of this.config.active_states) {\n      const normalizedState = activeState.toLowerCase();\n      if (normalizedPathname.includes(`_${normalizedState}/`)) {\n        return { matches: true, state: activeState };\n      }\n    }\n\n    // Check for inactive states in type subdirectories\n    for (const inactiveReason of this.config.inactive_reasons) {\n      const normalizedReason = inactiveReason.toLowerCase();\n      if (normalizedPathname.includes(`/${normalizedReason}/`)) {\n        return { matches: true, state: inactiveReason };\n      }\n    }\n\n    return { matches: false };\n  }\n\n  interpretState(state: string): { canonicalState?: string; isActive: boolean } {\n    // Handle inbox state - it's a special case that maps to active with no state\n    if (state.toLowerCase() === 'inbox') {\n      return { canonicalState: undefined, isActive: true };\n    }\n\n    // Get canonical form of state\n    const canonicalState = this.getCanonicalState(state);\n\n    // Check if it's an inactive reason - always set the state and mark as inactive\n    if (this.isInactiveReason(canonicalState)) {\n      return { canonicalState, isActive: false };\n    }\n\n    // Check if it's an active state\n    if (this.isActiveState(canonicalState)) {\n      return { canonicalState, isActive: true };\n    }\n\n    // If it's neither, return the state as is but mark as inactive\n    return { canonicalState, isActive: false };\n  }\n\n  matchesState(metadata: FrontmatterMetadata, stateInfo: { isActive: boolean; canonicalState?: string }): boolean {\n    // Special handling for inbox state\n    if (stateInfo.canonicalState === undefined && stateInfo.isActive) {\n      return metadata.active === true && !metadata.state;\n    }\n\n    // For states, check both the state field and active status\n    return metadata.state === stateInfo.canonicalState && metadata.active === stateInfo.isActive;\n  }\n\n  interpretIntent(state: FileState): InterpretedIntent {\n    const { type } = state.metadata;\n\n    // Handle state-based intents first\n    if (state.metadata.state) {\n      // Special handling for inbox state\n      if (state.metadata.state.toLowerCase() === 'inbox') {\n        const inboxIntent = {\n          targetLocation: {\n            dirname: this.config.inbox_dir || 'inbox',\n            basename: `${type}-${state.metadata.id}.md`\n          },\n          targetMetadata: {\n            ...state.metadata,\n            type,  // Ensure type is set\n            state: undefined,\n            active: true\n          },\n          reason: 'Inbox state specified - normalizing to active with no state'\n        };\n        return inboxIntent;\n      }\n\n      // Get target directory based on state\n      const targetDir = this.getTargetDirForState(state.metadata.state, type);\n      const isActive = this.isActiveState(state.metadata.state);\n\n      return {\n        targetLocation: {\n          dirname: targetDir,\n          basename: `${state.metadata.state}-${type}-${state.metadata.id}.md`\n        },\n        targetMetadata: {\n          ...state.metadata,\n          type,  // Ensure type is set\n          state: state.metadata.state,\n          active: isActive\n        },\n        reason: `File has state '${state.metadata.state}' - moving to appropriate directory`\n      };\n    }\n\n    // For items with no state, check active flag\n    if (state.metadata.active === true) {\n      // Active items with no state go to inbox\n      return {\n        targetLocation: {\n          dirname: this.config.inbox_dir || 'inbox',\n          basename: `${type}-${state.metadata.id}.md`\n        },\n        targetMetadata: {\n          ...state.metadata,\n          type,  // Ensure type is set\n          state: undefined,\n          active: true\n        },\n        reason: 'Active item with no state - moving to inbox'\n      };\n    }\n\n    // For inactive items with no state, move to type directory\n    if (state.metadata.active === false) {\n      const baseDir = this.config.issues_dir || 'issues';\n      return {\n        targetLocation: {\n          dirname: path.join(baseDir, type),\n          basename: `${type}-${state.metadata.id}.md`\n        },\n        targetMetadata: {\n          ...state.metadata,\n          type,  // Ensure type is set\n          active: false,\n          state: undefined\n        },\n        reason: 'Inactive item with no state - moving to type archive'\n      };\n    }\n\n    // Default to inbox for new items\n    return {\n      targetLocation: {\n        dirname: this.config.inbox_dir || 'inbox',\n        basename: `${type}-${state.metadata.id}.md`\n      },\n      targetMetadata: {\n        ...state.metadata,\n        type,  // Ensure type is set\n        state: undefined,\n        active: true\n      },\n      reason: 'New item - moving to inbox'\n    };\n  }\n\n  validateFinalState(state: FileState): ValidationResult {\n    const errors: string[] = [];\n    const warnings: string[] = [];\n\n    // Validate metadata has required fields\n    if (!state.metadata.id) {\n      errors.push('Missing required field: id');\n    }\n    if (!state.metadata.type) {\n      errors.push('Missing required field: type');\n    }\n\n    // Validate type is valid\n    if (state.metadata.type && !this.isValidType(state.metadata.type)) {\n      errors.push(`Invalid type: ${state.metadata.type}`);\n    }\n\n    // Validate state if present\n    if (state.metadata.state && !this.isValidState(state.metadata.state)) {\n      errors.push(`Invalid state: ${state.metadata.state}`);\n    }\n\n    // Validate active status is consistent with state\n    if (state.metadata.state) {\n      const isActive = this.isActiveState(state.metadata.state);\n      if (state.metadata.active === undefined) {\n        warnings.push('Active status not explicitly set - inferring from state');\n      } else if (state.metadata.active !== isActive) {\n        errors.push(`Active status (${state.metadata.active}) does not match state type (${isActive ? 'active' : 'inactive'})`);\n      }\n\n      // Check if file location matches state\n      const targetDir = this.getTargetDirForState(state.metadata.state, state.metadata.type);\n      const currentDir = path.dirname(state.pathname);\n      if (currentDir !== targetDir) {\n        warnings.push('File location does not match state');\n      }\n    }\n\n    return {\n      valid: errors.length === 0,\n      errors,\n      warnings\n    };\n  }\n\n  validateStateTransition(initialState: FileState, targetState: FileState): ValidationResult {\n    const result: ValidationResult = {\n      valid: true,\n      errors: [],\n      warnings: [],\n      guidance: []\n    };\n\n    // First validate the target state\n    const finalStateValidation = this.validateFinalState(targetState);\n    if (finalStateValidation.warnings) {\n      result.warnings!.push(...finalStateValidation.warnings);\n    }\n\n    // Check metadata preservation\n    const preservedFields = ['id', 'type', 'title', 'created'];\n    for (const field of preservedFields) {\n      if (initialState.metadata[field] && initialState.metadata[field] !== targetState.metadata[field]) {\n        result.errors.push(`Field '${field}' must be preserved during state transition`);\n        result.valid = false;\n      }\n    }\n\n    // Check filename pattern\n    const expectedBasename = targetState.metadata.state\n      ? `${targetState.metadata.state}-${targetState.metadata.type}-${targetState.metadata.id}`\n      : `${targetState.metadata.type}-${targetState.metadata.id}`;\n\n    if (targetState.pathname !== expectedBasename) {\n      result.guidance!.push(`Filename '${targetState.pathname}' doesn't match expected pattern '${expectedBasename}' - will be renamed`);\n    }\n\n    return result;\n  }\n\n  validateMetadataAgainstConfig(metadata: FrontmatterMetadata): ValidationResult {\n    const errors: string[] = [];\n    const warnings: string[] = [];\n\n    // Validate type is valid\n    if (metadata.type && !this.isValidType(metadata.type)) {\n      errors.push(`Invalid type: ${metadata.type}`);\n    }\n\n    // Validate state if present\n    if (metadata.state && !this.isValidState(metadata.state)) {\n      errors.push(`Invalid state: ${metadata.state}`);\n    }\n\n    // Validate active status is consistent with state\n    if (metadata.state) {\n      const isActive = this.isActiveState(metadata.state);\n      if (metadata.active === undefined) {\n        warnings.push('Active status not explicitly set - inferring from state');\n      } else if (metadata.active !== isActive) {\n        errors.push(`Active status (${metadata.active}) does not match state type (${isActive ? 'active' : 'inactive'})`);\n      }\n    }\n\n    return {\n      valid: errors.length === 0,\n      errors,\n      warnings\n    };\n  }\n\n  validateMove(sourcePath: string, targetPath: string, metadata: FrontmatterMetadata): ValidationResult {\n    // Get current metadata from source path\n    const sourceState: FileState = {\n      pathname: sourcePath,\n      metadata: { ...metadata }  // Use current metadata as base\n    };\n\n    // Create target state with new metadata\n    const targetState: FileState = {\n      pathname: targetPath,\n      metadata\n    };\n\n    // First validate both states individually\n    const sourceValidation = this.validateFinalState(sourceState);\n    if (!sourceValidation.valid) {\n      return sourceValidation;\n    }\n\n    const targetValidation = this.validateFinalState(targetState);\n    if (!targetValidation.valid) {\n      return targetValidation;\n    }\n\n    // Then validate the transition between them\n    const transitionValidation = this.validateStateTransition(sourceState, targetState);\n    \n    // Combine warnings from all validations\n    const allWarnings = [\n      ...(sourceValidation.warnings || []),\n      ...(targetValidation.warnings || []),\n      ...(transitionValidation.guidance || [])\n    ];\n\n    return {\n      valid: transitionValidation.valid,\n      errors: transitionValidation.errors,\n      warnings: [],  // Add empty warnings array since it's required\n      guidance: allWarnings.length > 0 ? allWarnings : undefined\n    };\n  }\n\n  /**\n   * Clean state transition by removing invalid fields and normalizing values\n   */\n  cleanStateTransition(current: FrontmatterMetadata, next: Partial<FrontmatterMetadata>): FrontmatterMetadata {\n    logger.debug('cleanStateTransition - Current metadata:', current);\n    logger.debug('cleanStateTransition - Next metadata:', next);\n    \n    // Start with current metadata to preserve all fields\n    const result = { ...current };\n\n    // Handle active flag first\n    if (next.active !== undefined) {\n      logger.debug('cleanStateTransition - Setting active:', next.active);\n      result.active = next.active;\n\n      // If setting to active\n      if (next.active === true) {\n        // Clear any existing state when setting to active\n        result.state = undefined;\n      }\n    }\n\n    // Then handle state changes\n    if (next.state !== undefined) {\n      logger.debug('cleanStateTransition - Processing state:', next.state);\n      const state = this.getCanonicalState(next.state);\n      logger.debug('cleanStateTransition - Canonical state:', state);\n      result.state = state;\n      \n      // If transitioning to an inactive reason, always set active to false\n      if (this.isInactiveReason(state)) {\n        logger.debug('cleanStateTransition - State is inactive reason, setting active to false');\n        result.active = false;\n      } else if (this.isActiveState(state)) {\n        logger.debug('cleanStateTransition - State is active state, setting active to true');\n        result.active = true;\n      }\n    }\n\n    // Then process other required fields to ensure they're normalized\n    if (next.type !== undefined) {\n      logger.debug('cleanStateTransition - Setting type:', next.type);\n      result.type = next.type?.toLowerCase();\n    }\n    if (next.id !== undefined) {\n      logger.debug('cleanStateTransition - Setting id:', next.id);\n      result.id = next.id;\n    }\n\n    logger.debug('cleanStateTransition - Final result:', result);\n    return result;\n  }\n\n  /**\n   * Interprets metadata and infers active state\n   */\n  interpretMetadata(metadata: Partial<FrontmatterMetadata>): FrontmatterMetadata {\n    // Create a copy to avoid modifying input\n    const result = { ...metadata } as FrontmatterMetadata;\n\n    // Handle state interpretation\n    if (result.state) {\n      const { canonicalState, isActive } = this.interpretState(result.state);\n      result.state = canonicalState;\n      result.active = isActive;\n    }\n\n    // Handle type interpretation\n    if (!result.type) {\n      // If no type is provided, use 'issue' as default\n      result.type = 'issue';\n    } else {\n      // Normalize type to lowercase\n      result.type = result.type.toLowerCase();\n    }\n\n    // Validate type\n    if (!this.isValidType(result.type)) {\n      throw new Error(`Invalid type: ${result.type}`);\n    }\n\n    return result;\n  }\n\n  /**\n   * Interprets a state transition and returns the necessary metadata updates\n   */\n  interpretStateTransition(targetState: string, options: { reason?: string } = {}): Partial<FrontmatterMetadata> {\n    const stateInfo = this.interpretState(targetState);\n    \n    return {\n      active: stateInfo.isActive,\n      state: stateInfo.canonicalState\n    };\n  }\n\n  // Add a method to get the valid types\n  getValidTypes(): string[] {\n    return this.validTypes;\n  }\n}"]}