EntraTripwire.psd1

@{
    RootModule        = 'EntraTripwire.psm1'
    ModuleVersion     = '2.0.0'
    GUID              = 'b6f0d3a1-5c72-4e19-9a84-3d1e7c0b25af'

    Author            = 'Eduard Arbona'
    CompanyName       = 'ArrankaGo LLC'
    Copyright         = '(c) 2026 Eduard Arbona. Released under the MIT licence.'

    Description       = 'Detects an intruder who is already inside a Microsoft Entra ID tenant. Plants decoy users, application registrations and client secrets that no legitimate process should ever touch, watches the Microsoft Graph sign-in and directory audit logs for contact with them, and scores every touch through a calibrated false-positive suppression engine before it reaches a human, so a deception deployment does not page its operator into switching it off. Answers "is someone in here right now?", which is a different question from "how could someone get in". Runs with no dependency and no tenant in DEMO mode against fixtures shipped inside the module; Microsoft.Graph.Authentication is loaded lazily and is only needed to connect a real tenant. Optional containment is dry-run by default, requires a High and non-degraded confidence band, and never acts on a signal it could not fully evaluate.'

    PowerShellVersion = '7.2'

    # No RequiredModules on purpose. The module must import and run its whole detection
    # and scoring path in DEMO mode with zero dependencies installed; Microsoft Graph is
    # only needed the moment you connect a real tenant, so Microsoft.Graph.Authentication
    # is loaded lazily by Connect-EntraTripwire with an actionable error if it is absent.
    # A hard RequiredModules entry would make "try it against the fixtures" an install.

    FunctionsToExport = @(
        'Connect-EntraTripwire'
        'Disconnect-EntraTripwire'
        'Enable-TripwirePro'
        'Export-TripwireReport'
        'Get-TripwireBaseline'
        'Get-TripwireDecoy'
        'Get-TripwireLicense'
        'Get-TripwirePolicy'
        'Get-TripwireSummary'
        'Invoke-TripwireAnalysis'
        'Invoke-TripwireContainment'
        'Measure-TripwireConfidence'
        'New-TripwireDecoy'
        'Remove-TripwireDecoy'
        'Start-EntraTripwire'
        'Test-TripwireReadiness'
        'Watch-TripwireActivity'
    )
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    PrivateData = @{
        PSData = @{
            # Platform tags put the package into the Gallery's search filters. Only Windows
            # and Linux are claimed: both are proven by CI on every push. macOS is not
            # tested, so it is not tagged.
            Tags         = @('Entra', 'EntraID', 'AzureAD', 'MicrosoftGraph', 'Microsoft365', 'Security', 'Deception', 'Honeytoken', 'Honeypot', 'ThreatDetection', 'DetectionEngineering', 'IncidentResponse', 'BlueTeam', 'PSEdition_Core', 'Windows', 'Linux')
            LicenseUri   = 'https://github.com/earbona23/entra-tripwire/blob/main/LICENSE'
            ProjectUri   = 'https://github.com/earbona23/entra-tripwire'

            # The Gallery renders this field as the release notes themselves, not as a link,
            # so a bare URL here shows a reader a URL where they expected to read what
            # changed. Summary first, link second.
            ReleaseNotes = '1.0.0 - First release. Decoy planting (users, application registrations, client secrets), detection across the sign-in and directory audit logs, the four-signal confidence engine with suppression and withheld-signal tracking, tenant baselining with impossible-travel detection, the containment plan, the self-contained HTML report, and DEMO mode against shipped fixtures. Full history: https://github.com/earbona23/entra-tripwire/blob/main/CHANGELOG.md'
        }
    }
}