{
  "dashboard": {
    "classes": [
      {
        "end_line": 141,
        "line": 19,
        "methods": [
          {
            "end_line": 61,
            "line": 22,
            "name": "__init__"
          },
          {
            "end_line": 72,
            "line": 63,
            "name": "background_for_state"
          },
          {
            "end_line": 119,
            "line": 74,
            "name": "apply_state"
          },
          {
            "end_line": 123,
            "line": 121,
            "name": "set_value"
          },
          {
            "end_line": 128,
            "line": 125,
            "name": "mousePressEvent"
          },
          {
            "end_line": 141,
            "line": 130,
            "name": "mouseReleaseEvent"
          }
        ],
        "name": "MissionStatusTile"
      },
      {
        "end_line": 903,
        "line": 144,
        "methods": [
          {
            "end_line": 348,
            "line": 145,
            "name": "__init__"
          },
          {
            "end_line": 354,
            "line": 350,
            "name": "paintEvent"
          },
          {
            "end_line": 365,
            "line": 356,
            "name": "temp_state"
          },
          {
            "end_line": 372,
            "line": 367,
            "name": "update_log"
          },
          {
            "end_line": 383,
            "line": 374,
            "name": "set_smart_detail"
          },
          {
            "end_line": 390,
            "line": 385,
            "name": "clear_quick_actions"
          },
          {
            "end_line": 399,
            "line": 392,
            "name": "add_quick_action"
          },
          {
            "end_line": 411,
            "line": 401,
            "name": "set_quick_actions"
          },
          {
            "end_line": 418,
            "line": 413,
            "name": "open_station"
          },
          {
            "end_line": 428,
            "line": 420,
            "name": "open_view_stls_launcher"
          },
          {
            "end_line": 443,
            "line": 430,
            "name": "show_default_actions"
          },
          {
            "end_line": 450,
            "line": 445,
            "name": "show_heart_oath"
          },
          {
            "end_line": 466,
            "line": 452,
            "name": "refresh_caretaker"
          },
          {
            "end_line": 499,
            "line": 468,
            "name": "show_memory_detail"
          },
          {
            "end_line": 536,
            "line": 501,
            "name": "show_cooling_detail"
          },
          {
            "end_line": 564,
            "line": 538,
            "name": "auto_cool_quick"
          },
          {
            "end_line": 573,
            "line": 566,
            "name": "auto_cooling_on_quick"
          },
          {
            "end_line": 582,
            "line": 575,
            "name": "auto_cooling_off_quick"
          },
          {
            "end_line": 605,
            "line": 584,
            "name": "set_fan_quick"
          },
          {
            "end_line": 627,
            "line": 607,
            "name": "start_night_forge_quick"
          },
          {
            "end_line": 634,
            "line": 629,
            "name": "standby_agents_quick"
          },
          {
            "end_line": 745,
            "line": 636,
            "name": "handle_status_tile"
          },
          {
            "end_line": 752,
            "line": 747,
            "name": "health_colour"
          },
          {
            "end_line": 857,
            "line": 754,
            "name": "update_health_summary"
          },
          {
            "end_line": 903,
            "line": 859,
            "name": "update_status"
          }
        ],
        "name": "Dashboard"
      }
    ],
    "functions": [],
    "imports": [
      "PyQt5.QtWidgets.*",
      "PyQt5.QtCore.*",
      "PyQt5.QtGui.*",
      "services.system_monitor.get_system_snapshot",
      "services.caretaker_service.caretaker",
      "core.version.get_display_name",
      "core.version.get_footer",
      "core.event_bus.event_bus",
      "core.service_manager.service_manager",
      "core.task_manager.task_manager",
      "core.agent_manager.agent_manager",
      "core.shire_runtime.shire_runtime",
      "framework.warden_theme.*",
      "framework.warden_widgets.*",
      "framework.warden_scroll.WardenTouchScrollArea",
      "time",
      "core.cooling_manager.cooling_manager"
    ],
    "lines": 903,
    "path": "/home/shire3d/ARMOR/modules/dashboard.py"
  },
  "laptop_dashboard": {
    "classes": [
      {
        "end_line": 146,
        "line": 54,
        "methods": [
          {
            "end_line": 91,
            "line": 57,
            "name": "__init__"
          },
          {
            "end_line": 146,
            "line": 93,
            "name": "refresh"
          }
        ],
        "name": "VoicePrivacyBanner"
      },
      {
        "end_line": 206,
        "line": 149,
        "methods": [
          {
            "end_line": 202,
            "line": 152,
            "name": "__init__"
          },
          {
            "end_line": 206,
            "line": 204,
            "name": "open_target"
          }
        ],
        "name": "LaptopRuneButton"
      },
      {
        "end_line": 235,
        "line": 209,
        "methods": [
          {
            "end_line": 235,
            "line": 210,
            "name": "__init__"
          }
        ],
        "name": "PresenceCard"
      },
      {
        "end_line": 785,
        "line": 238,
        "methods": [
          {
            "end_line": 348,
            "line": 265,
            "name": "__init__"
          },
          {
            "end_line": 368,
            "line": 350,
            "name": "pulse"
          },
          {
            "end_line": 373,
            "line": 370,
            "name": "_finish_blink"
          },
          {
            "end_line": 384,
            "line": 375,
            "name": "_schedule_next_blink"
          },
          {
            "end_line": 404,
            "line": 386,
            "name": "set_expression_state"
          },
          {
            "end_line": 415,
            "line": 406,
            "name": "current_expression_state"
          },
          {
            "end_line": 423,
            "line": 417,
            "name": "_current_face"
          },
          {
            "end_line": 433,
            "line": 425,
            "name": "showEvent"
          },
          {
            "end_line": 445,
            "line": 435,
            "name": "hideEvent"
          },
          {
            "end_line": 449,
            "line": 447,
            "name": "resizeEvent"
          },
          {
            "end_line": 501,
            "line": 451,
            "name": "_scaled_face_for"
          },
          {
            "end_line": 785,
            "line": 503,
            "name": "paintEvent"
          }
        ],
        "name": "ShireCenterCore"
      },
      {
        "end_line": 926,
        "line": 788,
        "methods": [
          {
            "end_line": 803,
            "line": 791,
            "name": "__init__"
          },
          {
            "end_line": 926,
            "line": 805,
            "name": "paintEvent"
          }
        ],
        "name": "VoiceOrb"
      },
      {
        "end_line": 1355,
        "line": 929,
        "methods": [
          {
            "end_line": 937,
            "line": 932,
            "name": "__init__"
          },
          {
            "end_line": 943,
            "line": 939,
            "name": "_open_station"
          },
          {
            "end_line": 967,
            "line": 945,
            "name": "_make_nav_button"
          },
          {
            "end_line": 971,
            "line": 969,
            "name": "_toggle_stations"
          },
          {
            "end_line": 1000,
            "line": 973,
            "name": "_build_greeting_card"
          },
          {
            "end_line": 1036,
            "line": 1002,
            "name": "_build_status_card"
          },
          {
            "end_line": 1076,
            "line": 1038,
            "name": "_build_thought_card"
          },
          {
            "end_line": 1099,
            "line": 1078,
            "name": "_build_next_card"
          },
          {
            "end_line": 1144,
            "line": 1101,
            "name": "_build_station_drawer"
          },
          {
            "end_line": 1294,
            "line": 1146,
            "name": "build_ui"
          },
          {
            "end_line": 1355,
            "line": 1296,
            "name": "paintEvent"
          }
        ],
        "name": "LaptopDashboard"
      }
    ],
    "functions": [
      {
        "end_line": 51,
        "line": 42,
        "name": "_greeting"
      }
    ],
    "imports": [
      "datetime.datetime",
      "math",
      "pathlib.Path",
      "PyQt5.QtCore.Qt",
      "PyQt5.QtCore.QRectF",
      "PyQt5.QtCore.QTimer",
      "PyQt5.QtGui.QBrush",
      "PyQt5.QtGui.QColor",
      "PyQt5.QtGui.QFont",
      "PyQt5.QtGui.QLinearGradient",
      "PyQt5.QtGui.QPainter",
      "PyQt5.QtGui.QPainterPath",
      "PyQt5.QtGui.QPen",
      "PyQt5.QtGui.QPixmap",
      "PyQt5.QtGui.QRadialGradient",
      "PyQt5.QtWidgets.QFrame",
      "PyQt5.QtWidgets.QGridLayout",
      "PyQt5.QtWidgets.QHBoxLayout",
      "PyQt5.QtWidgets.QLabel",
      "PyQt5.QtWidgets.QPushButton",
      "PyQt5.QtWidgets.QSizePolicy",
      "PyQt5.QtWidgets.QVBoxLayout",
      "PyQt5.QtWidgets.QWidget",
      "core.voice_privacy.voice_privacy_foundation"
    ],
    "lines": 1355,
    "path": "/home/shire3d/ARMOR/modules/laptop_dashboard.py"
  },
  "main": {
    "classes": [
      {
        "end_line": 141,
        "line": 73,
        "methods": [
          {
            "end_line": 80,
            "line": 76,
            "name": "__init__"
          },
          {
            "end_line": 93,
            "line": 82,
            "name": "keyPressEvent"
          },
          {
            "end_line": 99,
            "line": 95,
            "name": "mousePressEvent"
          },
          {
            "end_line": 125,
            "line": 101,
            "name": "mouseReleaseEvent"
          },
          {
            "end_line": 133,
            "line": 127,
            "name": "next_station"
          },
          {
            "end_line": 141,
            "line": 135,
            "name": "previous_station"
          }
        ],
        "name": "ArmorStationStack"
      },
      {
        "end_line": 217,
        "line": 144,
        "methods": [
          {
            "end_line": 217,
            "line": 147,
            "name": "__init__"
          }
        ],
        "name": "ArmorOS"
      }
    ],
    "functions": [
      {
        "end_line": 29,
        "line": 7,
        "name": "armor_display_profile"
      },
      {
        "end_line": 233,
        "line": 220,
        "name": "main"
      }
    ],
    "imports": [
      "os",
      "socket",
      "sys",
      "PyQt5.QtCore.Qt",
      "PyQt5.QtWidgets.QApplication",
      "PyQt5.QtWidgets.QStackedWidget",
      "PyQt5.QtWidgets.QVBoxLayout",
      "PyQt5.QtWidgets.QWidget",
      "core.version.get_window_title",
      "modules.dashboard.Dashboard",
      "modules.laptop_dashboard.LaptopDashboard",
      "modules.shire.ShirePage",
      "modules.forge.ForgePage",
      "modules.archive.ArchivePage",
      "modules.atlas.AtlasPage",
      "modules.media.MediaPage",
      "modules.system.SystemPage",
      "modules.sentinel.SentinelPage",
      "modules.education.EducationPage",
      "modules.agents.AgentsPage",
      "modules.tasks.TasksPage",
      "modules.settings.SettingsPage",
      "modules.global_prompt_bar.GlobalPromptBar"
    ],
    "lines": 237,
    "path": "/home/shire3d/ARMOR/main.py"
  },
  "shire": {
    "classes": [
      {
        "end_line": 506,
        "line": 247,
        "methods": [
          {
            "end_line": 277,
            "line": 248,
            "name": "__init__"
          },
          {
            "end_line": 292,
            "line": 279,
            "name": "mood_faces_enabled"
          },
          {
            "end_line": 306,
            "line": 294,
            "name": "portrait_path_for_mode"
          },
          {
            "end_line": 321,
            "line": 308,
            "name": "reload_portrait"
          },
          {
            "end_line": 326,
            "line": 323,
            "name": "set_mode"
          },
          {
            "end_line": 330,
            "line": 328,
            "name": "animate"
          },
          {
            "end_line": 339,
            "line": 332,
            "name": "mode_color"
          },
          {
            "end_line": 347,
            "line": 341,
            "name": "draw_talking_bars"
          },
          {
            "end_line": 400,
            "line": 349,
            "name": "paint_fallback_visor"
          },
          {
            "end_line": 494,
            "line": 402,
            "name": "paint_portrait_mode"
          },
          {
            "end_line": 506,
            "line": 496,
            "name": "paintEvent"
          }
        ],
        "name": "ShireFaceWidget"
      },
      {
        "end_line": 560,
        "line": 510,
        "methods": [
          {
            "end_line": 516,
            "line": 514,
            "name": "__init__"
          },
          {
            "end_line": 533,
            "line": 518,
            "name": "brain_api_url"
          },
          {
            "end_line": 560,
            "line": 535,
            "name": "run"
          }
        ],
        "name": "ShireBrainAskWorker"
      },
      {
        "end_line": 3869,
        "line": 563,
        "methods": [
          {
            "end_line": 846,
            "line": 565,
            "name": "__init__"
          },
          {
            "end_line": 860,
            "line": 848,
            "name": "run_shell"
          },
          {
            "end_line": 863,
            "line": 862,
            "name": "yes_no"
          },
          {
            "end_line": 867,
            "line": 865,
            "name": "file_check"
          },
          {
            "end_line": 893,
            "line": 869,
            "name": "task_summary_counts"
          },
          {
            "end_line": 913,
            "line": 895,
            "name": "format_task_line"
          },
          {
            "end_line": 925,
            "line": 915,
            "name": "run_selected_action"
          },
          {
            "end_line": 940,
            "line": 927,
            "name": "action_git_status"
          },
          {
            "end_line": 950,
            "line": 942,
            "name": "action_auto_cool"
          },
          {
            "end_line": 957,
            "line": 952,
            "name": "action_auto_cooling_on"
          },
          {
            "end_line": 964,
            "line": 959,
            "name": "action_auto_cooling_off"
          },
          {
            "end_line": 969,
            "line": 966,
            "name": "action_fan_max"
          },
          {
            "end_line": 974,
            "line": 971,
            "name": "action_fan_off"
          },
          {
            "end_line": 1001,
            "line": 976,
            "name": "task_review"
          },
          {
            "end_line": 1022,
            "line": 1003,
            "name": "complete_night_forge_task"
          },
          {
            "end_line": 1060,
            "line": 1024,
            "name": "collect_setup_context"
          },
          {
            "end_line": 1134,
            "line": 1062,
            "name": "build_next_actions"
          },
          {
            "end_line": 1158,
            "line": 1136,
            "name": "setup_plan"
          },
          {
            "end_line": 1183,
            "line": 1160,
            "name": "create_setup_tasks"
          },
          {
            "end_line": 1348,
            "line": 1185,
            "name": "build_roadmap_items"
          },
          {
            "end_line": 1397,
            "line": 1350,
            "name": "daily_boot_briefing"
          },
          {
            "end_line": 1432,
            "line": 1399,
            "name": "build_guide"
          },
          {
            "end_line": 1449,
            "line": 1434,
            "name": "what_next"
          },
          {
            "end_line": 1583,
            "line": 1451,
            "name": "session_journal"
          },
          {
            "end_line": 1726,
            "line": 1585,
            "name": "setup_wizard_checks"
          },
          {
            "end_line": 1762,
            "line": 1728,
            "name": "setup_wizard"
          },
          {
            "end_line": 1786,
            "line": 1764,
            "name": "wizard_summary"
          },
          {
            "end_line": 1891,
            "line": 1788,
            "name": "smart_setup_check"
          },
          {
            "end_line": 1903,
            "line": 1893,
            "name": "system_status"
          },
          {
            "end_line": 1913,
            "line": 1905,
            "name": "daily_notes"
          },
          {
            "end_line": 1926,
            "line": 1918,
            "name": "shire_privacy_config"
          },
          {
            "end_line": 1930,
            "line": 1928,
            "name": "hide_network_details"
          },
          {
            "end_line": 1941,
            "line": 1932,
            "name": "redact_network_detail"
          },
          {
            "end_line": 1952,
            "line": 1943,
            "name": "is_laptop_command_node"
          },
          {
            "end_line": 1990,
            "line": 1955,
            "name": "shire_appliance_defaults"
          },
          {
            "end_line": 1994,
            "line": 1992,
            "name": "shire_appliance_config_path"
          },
          {
            "end_line": 2014,
            "line": 1996,
            "name": "merge_shire_appliance_config"
          },
          {
            "end_line": 2026,
            "line": 2016,
            "name": "load_shire_appliances"
          },
          {
            "end_line": 2033,
            "line": 2028,
            "name": "get_appliance"
          },
          {
            "end_line": 2041,
            "line": 2035,
            "name": "shire_brain_url"
          },
          {
            "end_line": 2063,
            "line": 2044,
            "name": "remote_power_targets"
          },
          {
            "end_line": 2094,
            "line": 2065,
            "name": "remote_power_warning"
          },
          {
            "end_line": 2140,
            "line": 2096,
            "name": "remote_powerdown_one"
          },
          {
            "end_line": 2166,
            "line": 2142,
            "name": "remote_powerdown_confirmed"
          },
          {
            "end_line": 2210,
            "line": 2170,
            "name": "safe_power_button_all"
          },
          {
            "end_line": 2396,
            "line": 2215,
            "name": "appliance_registry_status"
          },
          {
            "end_line": 2425,
            "line": 2398,
            "name": "set_node_badge_state"
          },
          {
            "end_line": 2483,
            "line": 2428,
            "name": "refresh_node_badge"
          },
          {
            "end_line": 2603,
            "line": 2486,
            "name": "utility_node_status"
          },
          {
            "end_line": 2632,
            "line": 2605,
            "name": "set_brain_badge_state"
          },
          {
            "end_line": 2648,
            "line": 2634,
            "name": "refresh_brain_badge"
          },
          {
            "end_line": 2675,
            "line": 2652,
            "name": "shire_brain_status"
          },
          {
            "end_line": 2718,
            "line": 2679,
            "name": "ask_laptop_brain"
          },
          {
            "end_line": 2728,
            "line": 2720,
            "name": "on_laptop_brain_done"
          },
          {
            "end_line": 2731,
            "line": 2730,
            "name": "on_laptop_brain_finished"
          },
          {
            "end_line": 2744,
            "line": 2734,
            "name": "set_face_mode"
          },
          {
            "end_line": 2750,
            "line": 2746,
            "name": "face_talking"
          },
          {
            "end_line": 2757,
            "line": 2752,
            "name": "toggle_command_mode"
          },
          {
            "end_line": 2761,
            "line": 2759,
            "name": "scroll_output"
          },
          {
            "end_line": 2765,
            "line": 2763,
            "name": "scroll_output_bottom"
          },
          {
            "end_line": 2784,
            "line": 2767,
            "name": "shire_append"
          },
          {
            "end_line": 2802,
            "line": 2786,
            "name": "shire_identity"
          },
          {
            "end_line": 2809,
            "line": 2804,
            "name": "shire_maker"
          },
          {
            "end_line": 2816,
            "line": 2811,
            "name": "shire_origin"
          },
          {
            "end_line": 2823,
            "line": 2818,
            "name": "shire_purpose"
          },
          {
            "end_line": 2832,
            "line": 2825,
            "name": "shire_favourite_comic"
          },
          {
            "end_line": 2859,
            "line": 2834,
            "name": "shire_wake_line"
          },
          {
            "end_line": 2867,
            "line": 2861,
            "name": "shire_lock_message"
          },
          {
            "end_line": 2918,
            "line": 2869,
            "name": "is_shire_locked_command"
          },
          {
            "end_line": 3126,
            "line": 2920,
            "name": "smart_command_alias"
          },
          {
            "end_line": 3869,
            "line": 3128,
            "name": "process_command"
          }
        ],
        "name": "ShirePage"
      }
    ],
    "functions": [
      {
        "end_line": 81,
        "line": 21,
        "name": "show_forge_learning_popup"
      },
      {
        "end_line": 173,
        "line": 99,
        "name": "show_forge_research_popup"
      },
      {
        "end_line": 243,
        "line": 176,
        "name": "show_shire_research_celebration"
      }
    ],
    "imports": [
      "json",
      "urllib.request",
      "urllib.error",
      "psutil",
      "PyQt5.QtWidgets.*",
      "PyQt5.QtCore.Qt",
      "PyQt5.QtCore.QTimer",
      "PyQt5.QtCore.QThread",
      "PyQt5.QtCore.pyqtSignal",
      "PyQt5.QtGui.QPainter",
      "PyQt5.QtGui.QColor",
      "PyQt5.QtGui.QPen",
      "PyQt5.QtGui.QBrush",
      "PyQt5.QtGui.QPixmap",
      "PyQt5.QtGui.QPainterPath",
      "PyQt5.QtGui.QLinearGradient",
      "framework.theme.*",
      "framework.buttons.ActionButton",
      "services.system_monitor.get_temp",
      "services.notifications.NotificationService",
      "services.memory.MemoryService",
      "services.tasks.TaskService",
      "services.security_service.security_service",
      "services.forge_learning_service.forge_learning_service",
      "services.blender_mastery_commands.blender_mastery_commands",
      "services.ai_service.AIService",
      "heart.heart.Heart",
      "heart.purpose.PurposeEngine",
      "sentinel.status.check_system",
      "sentinel.status.forge_score",
      "chronicle.journal.record_event",
      "chronicle.journal.session_report",
      "forge.tools.syntax_check",
      "forge.tools.backup_armor",
      "forge.tools.forge_console",
      "subprocess",
      "socket",
      "pathlib.Path",
      "datetime.datetime",
      "core.cooling_manager.cooling_manager",
      "core.task_manager.task_manager",
      "core.service_manager.service_manager",
      "framework.warden_scroll.WardenTouchScrollArea",
      "framework.warden_scroll.enable_touch_scroll",
      "framework.warden_scroll.enable_text_drag_scroll"
    ],
    "lines": 3869,
    "path": "/home/shire3d/ARMOR/modules/shire.py"
  }
}
