#!/usr/bin/env python3
"""
Context Packet Generator — creates structured escalation packets
for paid model usage.

Usage:
  python3 context-packet.py full <goal> [key=value ...]
  python3 context-packet.py sql <goal> <query> [key=value ...]

Output: Formatted context packet for user review before paid model usage.
"""

import sys
from datetime import datetime

def full_packet(goal, urgency="today", deadline="", risk_level="low",
                task_size="small", cost_priority="balanced",
                files="", error="", what_tried="", constraints="",
                expected_output="", why_escalation="", model_recommended="",
                recommended_path="", why_this_path=""):
    return f"""
## CONTEXT PACKET — Paid Model Escalation
Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')}

GOAL: {goal}
URGENCY: {urgency}
DEADLINE: {deadline or 'Not specified'}
RISK LEVEL: {risk_level}
TASK SIZE: {task_size}
COST PRIORITY: {cost_priority}
FILES: {files or 'N/A'}
ERROR: {error or 'N/A'}
WHAT I TRIED: {what_tried or 'N/A'}
CONSTRAINTS: {constraints or 'N/A'}
EXPECTED OUTPUT: {expected_output or 'N/A'}
WHY ESCALATION IS NEEDED: {why_escalation or 'N/A'}
MODEL RECOMMENDED: {model_recommended or 'N/A'}
RECOMMENDED PATH: {recommended_path or 'N/A'}
WHY THIS PATH: {why_this_path or 'N/A'}

⚠️ This will use a paid model. Confirm before proceeding.
"""

def sql_packet(goal, query, error="", expected_output="", deadline="", model_path=""):
    return f"""
## CONTEXT PACKET — SQL/DAX/VBA Fast Path
Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')}

GOAL: {goal}
QUERY/CODE: {query}
ERROR OR ISSUE: {error or 'N/A'}
EXPECTED OUTPUT: {expected_output or 'N/A'}
DEADLINE: {deadline or 'Not specified'}
MODEL PATH: {model_path or 'ChatGPT Auth (fastest)'}

⚠️ This will use a paid model for speed. Confirm before proceeding.
"""

def main():
    if len(sys.argv) < 2:
        print("Usage:", file=sys.stderr)
        print("  context-packet.py full <goal> [options]", file=sys.stderr)
        print("  context-packet.py sql <goal> <query> [options]", file=sys.stderr)
        sys.exit(1)
    mode = sys.argv[1].lower()
    if mode == "full":
        if len(sys.argv) < 3:
            print("Error: full mode requires at least a GOAL", file=sys.stderr)
            sys.exit(1)
        goal = sys.argv[2]
        kwargs = {}
        for arg in sys.argv[3:]:
            if "=" in arg:
                key, val = arg.split("=", 1)
                kwargs[key.lower()] = val
        print(full_packet(goal=goal, **kwargs))
    elif mode == "sql":
        if len(sys.argv) < 4:
            print("Error: sql mode requires GOAL and QUERY", file=sys.stderr)
            sys.exit(1)
        goal = sys.argv[2]
        query = sys.argv[3]
        kwargs = {}
        for arg in sys.argv[4:]:
            if "=" in arg:
                key, val = arg.split("=", 1)
                kwargs[key.lower()] = val
        print(sql_packet(goal=goal, query=query, **kwargs))
    else:
        print(f"Unknown mode: {mode}", file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    main()
