"use strict";
// vibe-signals.ts — 80 signal definitions across 10 groups (v2 Supreme)
// Each signal: id, group, label, detect rule, vibe multiplier
Object.defineProperty(exports, "__esModule", { value: true });
exports.VIBE_SIGNALS = void 0;
exports.getSignal = getSignal;
exports.getSignalsByGroup = getSignalsByGroup;
exports.getSignalsByCategory = getSignalsByCategory;
exports.getAllGroups = getAllGroups;
exports.getAllCategories = getAllCategories;
exports.getDeepSignals = getDeepSignals;
exports.getShallowSignals = getShallowSignals;
exports.VIBE_SIGNALS = [
    // ============ GROUP A: Communication (10) ============
    { id: 'language_hindi', group: 'communication', label: 'Hinglish/Hindi', category: 'Communication Style',
        detect: 'Hindi words + Devanagari characters > 30% of message content', multiplier: 1.2 },
    { id: 'language_english', group: 'communication', label: 'English only', category: 'Communication Style',
        detect: 'Pure English messages > 90% of total', multiplier: 1.0 },
    { id: 'language_mix_ratio', group: 'communication', label: 'Mixed language ratio', category: 'Communication Style',
        detect: 'Hinglish:English word frequency ratio from session text', multiplier: 1.2, deep: true },
    { id: 'structure_bullets', group: 'communication', label: 'Bullet points', category: 'Communication Style',
        detect: 'Bullet/list markers in > 40% of messages', multiplier: 1.2 },
    { id: 'structure_paragraphs', group: 'communication', label: 'Paragraphs/long text', category: 'Communication Style',
        detect: 'Average paragraph length > 200 words', multiplier: 1.0 },
    { id: 'tone_direct', group: 'communication', label: 'Direct/imperative tone', category: 'Communication Style',
        detect: 'Imperative verbs: kar, de, bata, fix, add, remove, create, delete', multiplier: 1.2 },
    { id: 'tone_formal', group: 'communication', label: 'Formal/polite tone', category: 'Communication Style',
        detect: 'Please/could/would/may I frequency > 20%', multiplier: 1.0 },
    { id: 'verbosity_low', group: 'communication', label: 'Short messages', category: 'Communication Style',
        detect: 'Average message < 50 words per session', multiplier: 1.2 },
    { id: 'verbosity_high', group: 'communication', label: 'Verbose/detailed', category: 'Communication Style',
        detect: 'Average message > 200 words per session', multiplier: 1.0 },
    { id: 'communication_cadence', group: 'communication', label: 'Response cadence', category: 'Communication Style',
        detect: 'Message frequency and length evolution across sessions', multiplier: 1.1, deep: true },
    // ============ GROUP B: Code Philosophy (14) ============
    { id: 'changes_minimal', group: 'code_philosophy', label: 'Minimal changes', category: 'Coding Philosophy',
        detect: 'Rejected diffs > 200 lines, accepted patches < 50 lines', multiplier: 1.3 },
    { id: 'changes_thorough', group: 'code_philosophy', label: 'Thorough rewrites', category: 'Coding Philosophy',
        detect: 'Accepted full-file rewrites (> 300 lines)', multiplier: 1.0 },
    { id: 'change_size_from_diffs', group: 'code_philosophy', label: 'Code diff size tracked', category: 'Coding Philosophy',
        detect: 'Actual git diff sizes from session files_touched — average patch size', multiplier: 1.4, deep: true },
    { id: 'abstraction_low', group: 'code_philosophy', label: 'Low abstraction', category: 'Coding Philosophy',
        detect: 'Avoids creating util/helper files, keeps code flat', multiplier: 1.2 },
    { id: 'abstraction_high', group: 'code_philosophy', label: 'High abstraction', category: 'Coding Philosophy',
        detect: 'Creates 3+ layers, base classes, generic utils', multiplier: 1.0 },
    { id: 'abstraction_threshold', group: 'code_philosophy', label: 'Abstraction trigger point', category: 'Coding Philosophy',
        detect: 'How many duplications before creating abstraction — analysable from code pattern history', multiplier: 1.3, deep: true },
    { id: 'testing_after', group: 'code_philosophy', label: 'Test after code', category: 'Coding Philosophy',
        detect: 'Code commits before test commits in same feature', multiplier: 1.2 },
    { id: 'testing_first', group: 'code_philosophy', label: 'TDD/test-first', category: 'Coding Philosophy',
        detect: 'Test commits before implementation commits', multiplier: 1.3 },
    { id: 'test_priority', group: 'code_philosophy', label: 'Test coverage philosophy', category: 'Coding Philosophy',
        detect: 'Integration vs unit test ratio, coverage targets from session decisions', multiplier: 1.2, deep: true },
    { id: 'typescript_strict', group: 'code_philosophy', label: 'Strict TypeScript', category: 'Coding Philosophy',
        detect: 'strict:true, any usage < 1%, explicit types', multiplier: 1.2 },
    { id: 'typescript_loose', group: 'code_philosophy', label: 'Loose TypeScript', category: 'Coding Philosophy',
        detect: 'any usage > 5%, frequent as casts, skipped checks', multiplier: 1.0 },
    { id: 'functional_style', group: 'code_philosophy', label: 'Functional style', category: 'Coding Philosophy',
        detect: 'map/filter/reduce > 60% of iteration operations', multiplier: 1.1 },
    { id: 'oop_style', group: 'code_philosophy', label: 'OOP style', category: 'Coding Philosophy',
        detect: 'Class usage, inheritance, decorators, private/public', multiplier: 1.0 },
    { id: 'naming_philosophy', group: 'code_philosophy', label: 'Naming style', category: 'Coding Philosophy',
        detect: 'Short vs descriptive names — average identifier length from git history', multiplier: 1.2, deep: true },
    // ============ GROUP C: Workflow & Planning (12) ============
    { id: 'audit_first', group: 'workflow', label: 'Audit before code', category: 'Workflow & Execution',
        detect: 'Audit/analyze/scan/review requests at session start', multiplier: 1.3 },
    { id: 'code_first', group: 'workflow', label: 'Code immediately', category: 'Workflow & Execution',
        detect: 'Direct implementation requests without analysis phase', multiplier: 1.0 },
    { id: 'workflow_sequence', group: 'workflow', label: 'Workflow chain detected', category: 'Workflow & Execution',
        detect: 'Session pattern: audit→plan→code vs code→fix→code — sequential behavior tracking', multiplier: 1.4, deep: true },
    { id: 'plan_phased', group: 'workflow', label: 'Phased planning', category: 'Workflow & Execution',
        detect: 'Phase-wise, step-by-step, roadmap-style planning', multiplier: 1.2 },
    { id: 'plan_single_shot', group: 'workflow', label: 'Single-shot', category: 'Workflow & Execution',
        detect: 'One big request, everything at once', multiplier: 1.0 },
    { id: 'task_list_mode', group: 'workflow', label: 'Task list mode', category: 'Workflow & Execution',
        detect: 'Phrases: list banao, sab khatam karo, get them all DONE', multiplier: 1.3 },
    { id: 'focus_mode', group: 'workflow', label: 'Single focus', category: 'Workflow & Execution',
        detect: 'Phrases: sirf ye, just that ONE thing, ek hi kaam', multiplier: 1.2 },
    { id: 'overnight_mode', group: 'workflow', label: 'Overnight auto-work', category: 'Workflow & Execution',
        detect: 'Phrases: raat bhar, subah tak, overnight, crack on going to bed', multiplier: 1.3 },
    { id: 'ship_fast', group: 'workflow', label: 'Ship fast', category: 'Workflow & Execution',
        detect: 'Phrases: good enough, launch kar, ship it, MVP, 80%', multiplier: 1.2 },
    { id: 'session_time_pattern', group: 'workflow', label: 'Session timing', category: 'Workflow & Execution',
        detect: 'Active hours analysis from session start_time — morning vs night coder', multiplier: 1.2, deep: true },
    { id: 'deadline_behavior', group: 'workflow', label: 'Deadline response', category: 'Workflow & Execution',
        detect: 'Speed vs quality shift when deadline mentioned — compare sessions with/without urgency', multiplier: 1.3, deep: true },
    { id: 'completion_discipline', group: 'workflow', label: 'Finish what you start', category: 'Workflow & Execution',
        detect: 'Ratio of closed vs open sessions, resolved vs unresolved questions', multiplier: 1.3, deep: true },
    // ============ GROUP D: Decision Making (11) ============
    { id: 'roi_first', group: 'decisions', label: 'ROI-driven', category: 'Decision Making',
        detect: 'Revenue/monetize/paisa/customer pays in decisions', multiplier: 1.3 },
    { id: 'ux_first', group: 'decisions', label: 'UX-driven', category: 'Decision Making',
        detect: 'User experience/design/flow/UX priority in decisions', multiplier: 1.2 },
    { id: 'tech_first', group: 'decisions', label: 'Tech-driven', category: 'Decision Making',
        detect: 'Architecture/performance/scale/clean code as priority', multiplier: 1.1 },
    { id: 'decision_argument_type', group: 'decisions', label: 'Argument style', category: 'Decision Making',
        detect: 'What arguments given when making decisions — revenue, UX, perf, simplicity patterns', multiplier: 1.3, deep: true },
    { id: 'speed_over_quality', group: 'decisions', label: 'Speed > quality', category: 'Decision Making',
        detect: 'Deadline-driven with accepted technical debt', multiplier: 1.2 },
    { id: 'quality_over_speed', group: 'decisions', label: 'Quality > speed', category: 'Decision Making',
        detect: 'Properly/production-ready/thoroughly language', multiplier: 1.1 },
    { id: 'stick_to_known', group: 'decisions', label: 'Stick to known stack', category: 'Decision Making',
        detect: 'Same tech choices repeated 3+ times across projects', multiplier: 1.2 },
    { id: 'explore_new', group: 'decisions', label: 'Explore new tech', category: 'Decision Making',
        detect: 'New framework/library each project', multiplier: 1.1 },
    { id: 'monetization_thinking', group: 'decisions', label: 'Business-first mindset', category: 'Decision Making',
        detect: 'Revenue/monetization/business model mentions in session decisions', multiplier: 1.3, deep: true },
    { id: 'growth_strategy', group: 'decisions', label: 'Growth approach', category: 'Decision Making',
        detect: 'Organic vs paid growth mentions — community, ads, viral patterns in decisions', multiplier: 1.2, deep: true },
    { id: 'user_focus', group: 'decisions', label: 'User segment focus', category: 'Decision Making',
        detect: 'Power users vs casual vs enterprise mentions in feature decisions', multiplier: 1.2, deep: true },
    // ============ GROUP E: AI & Tool Interaction (12) ============
    { id: 'trust_high', group: 'ai_interaction', label: 'High AI trust', category: 'AI & Tool Interaction',
        detect: 'Accept rate > 80%, rarely modifies AI output', multiplier: 1.1 },
    { id: 'trust_low', group: 'ai_interaction', label: 'Verify everything', category: 'AI & Tool Interaction',
        detect: 'Reject rate > 50%, always modifies/retests AI output', multiplier: 1.3 },
    { id: 'acceptance_pattern', group: 'ai_interaction', label: 'Accept/reject ratio', category: 'AI & Tool Interaction',
        detect: 'Actual accept/reject ratio from session_approaches table', multiplier: 1.4, deep: true },
    { id: 'iterative_prompter', group: 'ai_interaction', label: 'Iterative prompter', category: 'AI & Tool Interaction',
        detect: '3+ prompt edits per task, refining until exact', multiplier: 1.2 },
    { id: 'prompt_iteration_count', group: 'ai_interaction', label: 'Prompt iterations tracked', category: 'AI & Tool Interaction',
        detect: 'Actual prompt edit count per task from session history — real iteration tracking', multiplier: 1.4, deep: true },
    { id: 'one_shot_user', group: 'ai_interaction', label: 'One-shot user', category: 'AI & Tool Interaction',
        detect: 'Single prompt, accepts or rejects, no iteration', multiplier: 1.0 },
    { id: 'verify_always', group: 'ai_interaction', label: 'Always verifies', category: 'AI & Tool Interaction',
        detect: 'verify/test karo/check/make sure in most requests', multiplier: 1.3 },
    { id: 'edit_accepted_code', group: 'ai_interaction', label: 'Edits accepted code', category: 'AI & Tool Interaction',
        detect: 'Tweaks AI output 80%+ of time after accepting', multiplier: 1.1 },
    { id: 'output_modification_pattern', group: 'ai_interaction', label: 'Output edit patterns', category: 'AI & Tool Interaction',
        detect: 'What kind of edits after acceptance — formatting, logic, structure changes', multiplier: 1.3, deep: true },
    { id: 'model_switcher', group: 'ai_interaction', label: 'Multi-model user', category: 'AI & Tool Interaction',
        detect: 'Uses 3+ different AI models per project', multiplier: 1.1 },
    { id: 'feedback_specificity', group: 'ai_interaction', label: 'Detailed feedback', category: 'AI & Tool Interaction',
        detect: 'Vague vs specific rejection reasons — "no" vs "remove the cache, keep the async"', multiplier: 1.3, deep: true },
    { id: 'prompt_complexity', group: 'ai_interaction', label: 'Prompt structure', category: 'AI & Tool Interaction',
        detect: 'Multi-step instructions vs single requests — task breakdown depth', multiplier: 1.2, deep: true },
    // ============ GROUP F: Project Behavior (8) ============
    { id: 'exploration_bias', group: 'project_behavior', label: 'Exploration bias', category: 'Project Behavior',
        detect: 'Projects started > 3x projects completed', multiplier: 1.3 },
    { id: 'completion_focused', group: 'project_behavior', label: 'Completion focused', category: 'Project Behavior',
        detect: 'Finishes projects before starting new ones', multiplier: 1.3 },
    { id: 'completion_rate', group: 'project_behavior', label: 'Completion tracking', category: 'Project Behavior',
        detect: 'Actual open vs closed sessions, resolved vs open questions ratio', multiplier: 1.4, deep: true },
    { id: 'scope_creep', group: 'project_behavior', label: 'Scope creep', category: 'Project Behavior',
        detect: '5+ topic jumps per session, feature expansion', multiplier: 1.2 },
    { id: 'scope_disciplined', group: 'project_behavior', label: 'Scope disciplined', category: 'Project Behavior',
        detect: 'Single topic per session, stays on task', multiplier: 1.2 },
    { id: 'solo_developer', group: 'project_behavior', label: 'Solo developer', category: 'Project Behavior',
        detect: 'Single contributor, no PR reviews from others', multiplier: 1.1 },
    { id: 'team_player', group: 'project_behavior', label: 'Team player', category: 'Project Behavior',
        detect: 'PR reviews, pair programming, collaboration mentions', multiplier: 1.1 },
    { id: 'refactor_trigger', group: 'project_behavior', label: 'Refactor motivation', category: 'Project Behavior',
        detect: 'Bug-forced vs proactive refactors — analyze session decisions for trigger patterns', multiplier: 1.3, deep: true },
    // ============ GROUP G: Git & Output (10) ============
    { id: 'commit_small', group: 'git_output', label: 'Small atomic commits', category: 'Git & Collaboration',
        detect: 'Average commit < 100 lines changed', multiplier: 1.2 },
    { id: 'commit_large', group: 'git_output', label: 'Large commits', category: 'Git & Collaboration',
        detect: 'Average commit > 500 lines, squash merges', multiplier: 1.0 },
    { id: 'docs_writer', group: 'git_output', label: 'Documentation writer', category: 'Git & Collaboration',
        detect: 'README/comment/wiki/doc contributions > 10% of changes', multiplier: 1.1 },
    { id: 'docs_skipper', group: 'git_output', label: 'Documentation skipper', category: 'Git & Collaboration',
        detect: 'Code-only commits, minimal docs, no README updates', multiplier: 1.0 },
    { id: 'documentation_style', group: 'git_output', label: 'Doc approach', category: 'Git & Collaboration',
        detect: 'JSDoc vs README vs inline comments vs self-documenting code preference', multiplier: 1.2, deep: true },
    { id: 'review_style', group: 'git_output', label: 'Code review approach', category: 'Git & Collaboration',
        detect: 'Nitpick vs approve-fast pattern from PR review assistant data', multiplier: 1.2, deep: true },
    { id: 'error_response_pattern', group: 'git_output', label: 'Error handling', category: 'Git & Collaboration',
        detect: 'Fix immediately vs log-and-continue — analysis of error_log timing patterns', multiplier: 1.3, deep: true },
    { id: 'dependency_attitude', group: 'git_output', label: 'Dependency philosophy', category: 'Git & Collaboration',
        detect: 'Zero-dependency vs embrace-ecosystem — new dep additions per project', multiplier: 1.2, deep: true },
    { id: 'stack_loyalty', group: 'git_output', label: 'Stack consistency', category: 'Git & Collaboration',
        detect: 'Same stack across projects vs exploring new stacks — from project DNA history', multiplier: 1.2, deep: true },
    { id: 'learning_approach', group: 'git_output', label: 'Learning style', category: 'Git & Collaboration',
        detect: 'Deep-dive vs tutorial-based — from session questions and tech_proficiency growth', multiplier: 1.2, deep: true },
    // ============ GROUP H: UI/UX Preferences (3) ============
    { id: 'ui_preference_dark', group: 'ui_preferences', label: 'Dark mode preference', category: 'UI/UX Preferences',
        detect: 'Dark mode mentions in UI-related session decisions', multiplier: 1.3, deep: true },
    { id: 'ui_preference_minimal', group: 'ui_preferences', label: 'Minimalist UI', category: 'UI/UX Preferences',
        detect: 'Minimalist/simple/clean UI mentions in session decisions', multiplier: 1.2, deep: true },
    { id: 'design_philosophy', group: 'ui_preferences', label: 'Design approach', category: 'UI/UX Preferences',
        detect: 'Function over form vs form over function — analysis of UI decision arguments', multiplier: 1.2, deep: true },
    // ============ GROUP I: Emotional & Communication Nuance (6) — SUPREME ============
    { id: 'frustration_signal', group: 'emotional', label: 'Frustration level', category: 'Communication Style',
        detect: 'Profanity + urgency words + are yaar/dammit frequency — emotional state tracking', multiplier: 1.3, deep: true },
    { id: 'correction_style', group: 'emotional', label: 'Correction approach', category: 'Communication Style',
        detect: 'ye galat hai vs this could be improved — directness in negative feedback', multiplier: 1.3, deep: true },
    { id: 'satisfaction_signal', group: 'emotional', label: 'Satisfaction level', category: 'Communication Style',
        detect: 'sahi hai, perfect, bas yahi chahiye tha, exactly — positive signal tracking', multiplier: 1.2, deep: true },
    { id: 'urgency_detection', group: 'emotional', label: 'Urgency level', category: 'Communication Style',
        detect: 'jaldi kar, fast, abhi, time nahi hai, ASAP — time pressure signals', multiplier: 1.3, deep: true },
    { id: 'patience_level', group: 'emotional', label: 'Patience indicator', category: 'Communication Style',
        detect: 'Prompt edits vs immediate rejections — willingness to iterate before rejecting', multiplier: 1.2, deep: true },
    { id: 'appreciation_style', group: 'emotional', label: 'Appreciation style', category: 'Communication Style',
        detect: 'Says thanks/good/great vs silent acceptance — praise frequency analysis', multiplier: 1.1, deep: true },
    // ============ GROUP J: Prompt & Thinking Depth (5) — SUPREME ============
    { id: 'thinking_aloud', group: 'thinking', label: 'Visible thought process', category: 'AI & Tool Interaction',
        detect: 'soch raha hu, let me think, hmm, wait, actually — thinking-out-loud patterns', multiplier: 1.2, deep: true },
    { id: 'example_request_style', group: 'thinking', label: 'Example seeking', category: 'AI & Tool Interaction',
        detect: 'example de, dikha, samjha, show me — learning by example preference', multiplier: 1.2, deep: true },
    { id: 'comparison_style', group: 'thinking', label: 'Comparison seeking', category: 'AI & Tool Interaction',
        detect: 'X vs Y, which is better, faster way, alternative — comparison-driven', multiplier: 1.1, deep: true },
    { id: 'certainty_language', group: 'thinking', label: 'Certainty level', category: 'Communication Style',
        detect: 'pakka, definitely, 100%, sure vs shayad, maybe, ho sakta hai — confidence ratio', multiplier: 1.2, deep: true },
    { id: 'ownership_language', group: 'thinking', label: 'Ownership style', category: 'Communication Style',
        detect: 'maine, main, mera (individual) vs hum, we, hamara (collaborative) — voice detection', multiplier: 1.2, deep: true },
    // ============ GROUP K: Code & Architecture Depth (5) — SUPREME ============
    { id: 'pattern_recognition_skill', group: 'architecture', label: 'Pattern memory', category: 'Coding Philosophy',
        detect: 'References past patterns — pichli baar, last time, remember when — experience reuse', multiplier: 1.3, deep: true },
    { id: 'architecture_question_depth', group: 'architecture', label: 'Question depth', category: 'Coding Philosophy',
        detect: 'kaise (how/surface) vs kyun (why/deep) vs what if — question quality analysis', multiplier: 1.3, deep: true },
    { id: 'refactoring_motivation', group: 'architecture', label: 'Refactor driver', category: 'Coding Philosophy',
        detect: 'clean code vs performance vs bug-fix — motivation behind structural changes', multiplier: 1.2, deep: true },
    { id: 'tech_curiosity', group: 'architecture', label: 'Tech curiosity', category: 'Coding Philosophy',
        detect: 'try karte hain, explore, naya, latest, what about — technology exploration desire', multiplier: 1.2, deep: true },
    { id: 'simplicity_bias', group: 'architecture', label: 'Simplicity bias', category: 'Coding Philosophy',
        detect: 'simple, easy, seedha, straightforward, minimal — complexity avoidance language', multiplier: 1.2, deep: true },
    // ============ GROUP L: Session Rhythm & Context Switching (4) — SUPREME ============
    { id: 'context_switch_frequency', group: 'rhythm', label: 'Context switching', category: 'Workflow & Execution',
        detect: 'Topics per session count — focus depth vs breadth measurement from session data', multiplier: 1.3, deep: true },
    { id: 'deep_work_detection', group: 'rhythm', label: 'Deep work mode', category: 'Workflow & Execution',
        detect: 'Long single-topic session without interruption — flow state detection from duration', multiplier: 1.3, deep: true },
    { id: 'break_pattern', group: 'rhythm', label: 'Session gap pattern', category: 'Workflow & Execution',
        detect: 'Time between consecutive sessions — continuous work vs scattered schedule', multiplier: 1.1, deep: true },
    { id: 'task_chaining', group: 'rhythm', label: 'Sequential planning', category: 'Workflow & Execution',
        detect: 'ab ye, next, after this, fir, then — sequential task planning language pattern', multiplier: 1.2, deep: true },
];
// Lookup helpers
const signalMap = new Map();
exports.VIBE_SIGNALS.forEach(s => signalMap.set(s.id, s));
function getSignal(id) {
    return signalMap.get(id);
}
function getSignalsByGroup(group) {
    return exports.VIBE_SIGNALS.filter(s => s.group === group);
}
function getSignalsByCategory(category) {
    return exports.VIBE_SIGNALS.filter(s => s.category === category);
}
function getAllGroups() {
    return [...new Set(exports.VIBE_SIGNALS.map(s => s.group))];
}
function getAllCategories() {
    return [...new Set(exports.VIBE_SIGNALS.map(s => s.category))];
}
function getDeepSignals() {
    return exports.VIBE_SIGNALS.filter(s => s.deep);
}
function getShallowSignals() {
    return exports.VIBE_SIGNALS.filter(s => !s.deep);
}
//# sourceMappingURL=vibe-signals.js.map