TerminalTracker.psm1

#Requires -Version 5.1
<#
.SYNOPSIS
    TerminalTracker - Monitor, save, and restore terminal sessions on Windows.
.DESCRIPTION
    Tracks open CLI windows (Windows Terminal, PowerShell, CMD, Git Bash),
    their working directories, and session metadata. Supports save-and-close,
    restore, hide/show, archive, sync, and auto-start with Windows.
#>


# ---------------------------------------------------------------------------
# Configuration & paths
# ---------------------------------------------------------------------------

$script:DataRoot = Join-Path $env:APPDATA 'TerminalTracker'
$script:SessionsFile = Join-Path $script:DataRoot 'sessions.json'
$script:ArchiveFile = Join-Path $script:DataRoot 'archive.json'
$script:ConfigFile = Join-Path $script:DataRoot 'config.json'
$script:SuspendedFile = Join-Path $script:DataRoot 'suspended.json'
$script:LockFile = Join-Path $script:DataRoot '.lock'
$script:NativeHelperLoaded = $false

# ---------------------------------------------------------------------------
# Dot-source module files in dependency order
# ---------------------------------------------------------------------------

. (Join-Path $PSScriptRoot 'Private/NativeHelper.ps1')
. (Join-Path $PSScriptRoot 'Private/DataStore.ps1')
. (Join-Path $PSScriptRoot 'Private/ArchiveHelper.ps1')
. (Join-Path $PSScriptRoot 'Public/Config.ps1')
. (Join-Path $PSScriptRoot 'Public/Session.ps1')
. (Join-Path $PSScriptRoot 'Public/Archive.ps1')
. (Join-Path $PSScriptRoot 'Public/WindowControl.ps1')
. (Join-Path $PSScriptRoot 'Public/SuspendResume.ps1')
. (Join-Path $PSScriptRoot 'Public/Discovery.ps1')
. (Join-Path $PSScriptRoot 'Public/Monitor.ps1')
. (Join-Path $PSScriptRoot 'Public/AutoStart.ps1')
. (Join-Path $PSScriptRoot 'Public/Sync.ps1')
. (Join-Path $PSScriptRoot 'Public/ProfileHook.ps1')
. (Join-Path $PSScriptRoot 'Public/Dashboard.ps1')
. (Join-Path $PSScriptRoot 'Public/Doctor.ps1')
. (Join-Path $PSScriptRoot 'Public/Tray.ps1')

# ---------------------------------------------------------------------------
# Module initialization
# ---------------------------------------------------------------------------

Initialize-TTDataStore
Initialize-NativeHelper

# Export all public functions
Export-ModuleMember -Function @(
    # Config
    'Get-TTConfig'
    'Set-TTConfig'
    # Session tracking
    'Update-TTSession'
    'Get-TTSession'
    'Set-TTNote'
    'Set-TTTag'
    'Remove-TTSession'
    # Archive
    'Get-TTArchive'
    'Clear-TTArchive'
    # Window control
    'Hide-TTWindow'
    'Show-TTWindow'
    # Suspend / Resume
    'Suspend-TTSession'
    'Get-TTSuspended'
    'Resume-TTSession'
    'Open-TerminalAt'
    # Monitor
    'Start-TTMonitor'
    'Stop-TTMonitor'
    'Invoke-TTMonitorCycle'
    # Auto-start
    'Install-TTAutoStart'
    'Remove-TTAutoStart'
    # Sync
    'Export-TTState'
    'Import-TTState'
    # Profile
    'Install-TTProfileHook'
    'Remove-TTProfileHook'
    'Repair-TTProfileHook'
    # Doctor
    'Invoke-TTDoctor'
    # Discovery
    'Get-InteractiveTerminal'
    'Find-TTTerminal'
    # Dashboard
    'Show-TTDashboard'
    # Tray
    'Start-TTTray'
    'Stop-TTTray'
    'Get-TTTrayStatus'
)