Config/config.json

{
  "schemaVersion": 1,
  "settings": {
    "oneTimeReboot": {
      "at": "01:00",
      "selfDelete": false,
      "taskNamePrefix": "TT_OneTimeReboot",
      "defaultDescription": "Scheduled one-time reboot created by TechToolbox",
      "deleteExpiredTaskAfterMinutes": 10
    },
    "ad": {
      "allowMultipleMatches": false,
      "defaultAttributes": [
        "displayName",
        "userPrincipalName",
        "samAccountName",
        "mail",
        "mailNickname",
        "proxyAddresses",
        "enabled",
        "whenCreated",
        "lastLogonTimestamp",
        "department",
        "title",
        "manager",
        "memberOf",
        "distinguishedName",
        "objectGuid"
      ],
      "resolveGroups": true,
      "resolveManager": true,
      "enableProxyAddressSearch": true,
      "domainController": "dc-1.example.com",
      "searchBase": "DC=example,DC=com",
      "enableMailSearch": true,
      "searchScope": "Subtree"
    },
    "resetPassword": {
      "passwordFunctionPath": "%TT_ModuleRoot%\\Private\\System\\Utilities\\PasswordRelated",
      "initialPasswordLength": 12,
      "showPassword": true
    },
    "systemUptime": {
      "logFileNameFormat": "SystemUptime_{yyyyMMdd}.log",
      "exportPath": "%TT_Home%\\LogsAndExports\\Exports\\SystemUptime",
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\SystemUptime"
    },
    "workerPath": {
      "default": "%TT_ModuleRoot%\\Workers"
    },
    "trustWorkerHelpersRoot": {
      "default": "%TT_ModuleRoot%\\Private\\System"
    },
    "largeFileSearch": {
      "defaultSearchDirectory": ["C:\\", "D:\\"],
      "exportFileNamePattern": "LargeFiles_{yyyyMMdd_HHmmss}.csv",
      "defaultMinSizeMB": 256,
      "exportDirectory": "%TT_Home%\\LogsAndExports\\Exports\\LargeFileSearch"
    },
    "errorEvents": {
      "exportPath": "%TT_Home%\\LogsAndExports\\Exports\\ErrorEvents"
    },
    "fileSearch": {
      "exportDirectory": "%TT_Home%\\LogsAndExports\\Exports\\FilesSearches",
      "exportFileNamePattern": "Get-FilesUsingKeywords-{computer}-{yyyyMMdd_HHmmss}.csv",
      "singleFileNamePattern": "Get-FilesUsingKeywords-{computer}.csv",
      "appendToSingleFile": true
    },
    "systemRepair": {
      "logFileNameFormat": "SystemRepair_{yyyyMMdd}.log",
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\SystemRepair",
      "defaultRepairSource": "\\\\utility-1\\OS-Files\\25H2\\sources\\sxs",
      "defaultRepairSourceIndex": 6,
      "retryWithoutSourceOnNotFound": true,
      "useCredSSPByDefault": true,
      "defaultComputerName": null,
      "logDir": "%TT_Home%\\LogsAndExports\\Logs\\SystemRepair",
      "runRemote": true
    },
    "remoting": {
      "credSSPDelegateComputers": "*.example.com"
    },
    "secureCrimp": {
      "server": "securecrimp-1.example.com",
      "stackTasks": ["Secure Crimp - Run Server", "Secure Crimp - Nginx"],
      "auxTasks": ["Secure Crimp - Monitor TCP", "Secure Crimp - Run Schedule"]
    },
    "passwords": {
      "domainAdminCred": {
        "username": "ddadmin"
      },
      "wordListPath": "%TT_ModuleRoot%\\Config\\wordlist.txt",
      "default": {
        "separator": "-",
        "style": "Readable",
        "length": 12,
        "digits": 2
      }
    },
    "batteryReport": {
      "waitTimeoutSeconds": 10,
      "debugInfo": "%TT_Home%\\LogsAndExports\\Exports\\BatteryReports\\",
      "reportPath": "%TT_Home%\\LogsAndExports\\Exports\\BatteryReports\\",
      "outputJson": "%TT_Home%\\LogsAndExports\\Exports\\BatteryReports\\",
      "reportFileNamePattern": "BatteryReport.html",
      "jsonFileNamePattern": "InstalledBatteries.json",
      "debugFileNamePattern": "BatteryReportDebug.log"
    },
    "exchangeOnline": {
      "autoDisconnectPrompt": true,
      "includeInOffboarding": true,
      "showProgress": true,
      "autoConnect": true
    },
    "sharedMailboxAudit": {
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\SharedMailboxAudit",
      "exportPath": "%TT_Home%\\LogsAndExports\\Exports\\SharedMailboxAudit",
      "workerPath": "%TT_ModuleRoot%\\Workers\\Get-SharedMailboxDeletions.worker.ps1",
      "logFileNameFormat": "SharedMailboxAudit_{yyyyMMdd}.log",
      "exportPathFileNameFormat": "SharedMailboxDeletions_{yyyyMMdd_HHmmss}.csv"
    },
    "remoteSoftwareInventory": {
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\RemoteSoftwareInventory",
      "outDir": "%TT_Home%\\LogsAndExports\\Exports\\RemoteSoftwareInventory",
      "throttleLimit": 32,
      "includeAppx": false,
      "logFile": "RemoteSoftwareInventory.log",
      "logFileNameFormat": "RemoteSoftwareInventory_{yyyyMMdd}.log",
      "promptForCredentials": true,
      "consolidated": false
    },
    "agent": {
      "model": "qwen3.6:35b",
      "promptPackPath": "%TT_ModuleRoot%\\AI\\prompts.json",
      "defaultPromptFile": "AI\\Agent\\prompt.txt",
      "transcript": {
        "enabled": true,
        "outputRoot": "%TT_LogsRoot%\\TechAgentTranscripts"
      },
      "wait": {
        "timeoutSeconds": 2700,
        "pollSeconds": 5,
        "heartbeatSeconds": 60
      }
    },
    "messageTrace": {
      "autoExport": true,
      "promptForMissingInputs": true,
      "defaultLookbackHours": 48,
      "timestampFormat": "yyyyMMdd-HHmmss",
      "defaultExportFolder": "%TT_Home%\\LogsAndExports\\Exports\\MessageTraces",
      "summaryFileNamePattern": "MessageTraceSummary_{0}.csv",
      "detailsFileNamePattern": "MessageTraceDetails_{0}.csv"
    },
    "compliance": {
      "maxRetryAttempts": 3,
      "purgeBatchSize": 25,
      "searchBatchSize": 50
    },
    "pagefile": {
      "minSizeMB": 16,
      "defaultPath": "C:\\pagefile.sys",
      "maxSizeMB": 2097152
    },
    "tenant": {
      "authorityUrl": "https://login.microsoftonline.com",
      "organizationName": "example.onmicrosoft.com",
      "clientId": "9c0e43db-f3fc-4bba-9530-10b5d063730b",
      "upnSuffix": "example.com",
      "defaultMailboxLanguage": "en-US",
      "defaultUsageLocation": "US",
      "tenantId": "00000000-0000-0000-0000-000000000000"
    },
    "purview": {
      "purge": {
        "pollSeconds": 20,
        "requireConfirmation": false,
        "requireTextConfirmation": true,
        "timeoutSeconds": 2400
      },
      "defaultAllMailboxes": true,
      "registrationPollSeconds": 5,
      "registrationWaitSeconds": 90,
      "search": {
        "maxAttempts": 40,
        "delaySeconds": 10
      },
      "ticket": {
        "pattern": "^(?<prefix>[A-Za-z]+-)?(?<id>\\d+)$",
        "normalizePrefix": "INC-",
        "requireHash": true,
        "forceUpper": true
      },
      "autoConnect": true,
      "promptForContentMatchQuery": true
    },
    "browserCleanup": {
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\BrowserCleanup",
      "killProcesses": true,
      "includeCookies": true,
      "includeCache": true,
      "logFile": "BrowserCleanup.log",
      "sleepAfterKillMs": 1500,
      "skipLocalStorage": false,
      "defaultBrowser": "All",
      "defaultProfiles": null
    },
    "logging": {
      "includeTimestamps": true,
      "logPath": "%TT_Home%\\LogsAndExports\\Logs",
      "enableConsole": true,
      "enableFileLogging": true,
      "logFile": "TechToolbox.log",
      "logFileNameFormat": "TechToolbox_{yyyyMMdd}.log",
      "minimumLevel": "Info",
      "minimumLevelInt": 2,
      "useAnsi": true
    },
    "defaults": {
      "promptForCaseName": true,
      "promptForSearchName": true,
      "promptForKqlQuery": true,
      "promptForHostname": true,
      "promptForCredentials": true,
      "showProgress": true,
      "promptForDateRanges": true,
      "promptForContentMatchQuery": true,
      "configPath": "%TT_ModuleRoot%\\Config\\config.json"
    },
    "output": {
      "encoding": "UTF8",
      "writeTable": true
    },
    "dnsLogging": {
      "autoEnableDiagnostics": true,
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\DNS",
      "enabled": true,
      "parseMode": "simple",
      "maxLogSizeMB": 50
    },
    "aadSync": {
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\AADSync",
      "defaultPolicyType": "Delta",
      "defaultPort": 5985,
      "logFile": "AADSync.log",
      "logDir": "%TT_Home%\\LogsAndExports\\Logs\\AADSync",
      "allowKerberos": true
    },
    "systemSnapshot": {
      "helperPath": "%TT_ModuleRoot%\\Private\\System\\Snapshot",
      "workerPath": "%TT_ModuleRoot%\\Workers\\Get-SystemSnapshot.Worker.ps1",
      "includeRoles": false,
      "includeServices": true,
      "helperFiles": [
        "Convert-CimDate.ps1",
        "Get-SnapshotCPU.ps1",
        "Get-SnapshotDisk.ps1",
        "Get-SnapshotIdentity.ps1",
        "Get-SnapshotMemory.ps1",
        "Get-SnapshotNetwork.ps1",
        "Get-SnapshotOS.ps1",
        "Get-SnapshotServices.ps1"
      ],
      "exportPath": "%TT_Home%\\LogsAndExports\\Exports\\SystemSnapshot"
    },
    "offboarding": {
      "log": {
        "dir": "%TT_Home%\\LogsAndExports\\Logs\\Offboarding",
        "fileNameFormat": "Offboarding_{yyyyMMdd}.log",
        "retentionDays": 90
      },
      "includeEXO": false,
      "useHybridAutoDisable": true,
      "disabledOU": "",
      "cleanupADGroups": false
    },
    "subnetScan": {
      "resolveNames": true,
      "pingTimeoutMs": 250,
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\SubnetScan",
      "exportDir": "%TT_Home%\\LogsAndExports\\Exports\\SubnetScan",
      "httpTimeoutMs": 1000,
      "defaultPort": 80,
      "httpBanner": true,
      "exportCsv": true,
      "tcpTimeoutMs": 500,
      "logFile": "SubnetScan.log",
      "displayAlpha": 0.1,
      "ewmaAlpha": 0.15
    },
    "userSearch": {
      "licenseMap": {
        "53818b1b-4a27-454b-8896-0dba576410e6": "Project Plan 3",
        "06ebc4ee-1bb5-47dd-8120-11324bc54e06": "Office 365 E5",
        "4b9405b0-7788-4568-add1-99614e613b69": "Microsoft 365 F3",
        "a4585165-0533-458a-bf7c-5e2d8c699c13": "Project Plan 1",
        "9c0dab89-a30c-4117-86e7-97bda240acd2": "Visio Plan 1",
        "6fd2c87f-b296-42f0-b197-1e91e994b900": "Microsoft 365 E3",
        "e7bfbdf0-0a0b-4d8b-bd3d-7c6f0f2b5c3a": "Visio Plan 2",
        "4b585984-651b-448a-9e53-3b10f069cf7f": "Exchange Online Plan 1",
        "94763226-9b3c-4e75-a931-5c89701abe66": "Teams Phone Standard",
        "f30db892-07e9-47e9-837c-80727f46fd3d": "Microsoft 365 Business Premium",
        "18181a46-0d4e-45cd-891e-60aabd171b4e": "Microsoft 365 F1",
        "c2273bd0-dff7-4215-9ef5-2c7bcfb06425": "Microsoft 365 Business Standard",
        "05e9a617-0261-4cee-bb44-138d3ef5d965": "Office 365 E3",
        "e6778190-713e-4e4f-9119-8b8238de25df": "Microsoft 365 Business Basic",
        "c7df2760-2c81-4ef7-b578-5b5392b571df": "Microsoft 365 E5",
        "c42b9cae-ea4f-4ab7-9717-81576235ccac": "Exchange Online Plan 2"
      },
      "includeEXO": true,
      "includeTeams": true,
      "props": [
        "displayName",
        "userPrincipalName",
        "samAccountName",
        "mail",
        "proxyAddresses",
        "enabled",
        "whenCreated",
        "lastLogonTimestamp",
        "department",
        "title",
        "manager",
        "memberOf",
        "distinguishedName",
        "objectSid",
        "msDS-UserPasswordExpiryTimeComputed",
        "pwdLastSet"
      ]
    },
    "windowsUpdate": {
      "logFileNameFormat": "WindowsUpdate_{yyyyMMdd}.log",
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\WindowsUpdate",
      "logDir": "%TT_Home%\\LogsAndExports\\Logs\\WindowsUpdate"
    },
    "naming": {
      "copyAttributes": [
        "description",
        "department",
        "company",
        "office",
        "manager"
      ],
      "samPattern": "flast",
      "upnPattern": "flast"
    },
    "ai": {
      "models": {
        "code": "qwen2.5-coder:32b",
        "review": "qwen3:30b-instruct"
      },
      "routing": {
        "General": "code",
        "Static": "code",
        "Security": "code",
        "Refactor": "code",
        "Tests": "code",
        "Combined": "code",
        "ModuleReview": "review",
        "ExplainDesign": "review"
      },
      "promptPackPath": "%TT_ModuleRoot%\\AI\\prompts.json"
    },
    "graph": {
      "scopes": [
        "User.Read.All",
        "Group.ReadWrite.All",
        "Directory.ReadWrite.All",
        "AuditLog.Read.All"
      ],
      "tenantId": "00000000-0000-0000-0000-000000000000",
      "environment": "Global",
      "profile": "v1.0",
      "appOnly": {
        "clientId": "",
        "enabled": false,
        "certThumbprint": "",
        "clientSecret": ""
      }
    },
    "copyDirectory": {
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\Robocopy",
      "waitSeconds": 5,
      "retryCount": 2,
      "mirror": false,
      "runRemote": true,
      "logDir": "%TT_Home%\\LogsAndExports\\Logs\\Robocopy",
      "defaultComputerName": null,
      "logFileNameFormat": "Robocopy_{yyyyMMdd}.log",
      "copyFlags": ["/E", "/COPYALL"]
    },
    "downloadsCleanup": {
      "dryRun": false,
      "cutoffYear": 2024,
      "excludeExtensions": [".pst", ".ost"],
      "includeExtensions": null
    },
    "teams": {
      "includeInOffboarding": true
    },
    "ispConnection": {
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\ISPConnection"
    },
    "windowsActivation": {
      "logFileNameFormat": "ActivationInfo_{computer}_{yyyyMMdd-HHmmss}.txt",
      "logPath": "%TT_Home%\\LogsAndExports\\Logs\\WindowsActivation",
      "logDir": "%TT_Home%\\LogsAndExports\\Logs\\WindowsActivation"
    }
  },
  "paths": {
    "logs": "%TT_Home%\\LogsAndExports\\Logs"
  }
}