sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-12 17:13:53
Author: Mike Swanson Machine: DESKTOP-0O8A1RL Timestamp: 2026-05-12 17:13:53
This commit is contained in:
1
.claude/scheduled_tasks.lock
Normal file
1
.claude/scheduled_tasks.lock
Normal file
@@ -0,0 +1 @@
|
||||
{"sessionId":"bb6994f9-af09-43bb-878c-0461b669706b","pid":28492,"acquiredAt":1778626705410}
|
||||
163
clients/grabb-durando/collect-rmm-install-diag.ps1
Normal file
163
clients/grabb-durando/collect-rmm-install-diag.ps1
Normal file
@@ -0,0 +1,163 @@
|
||||
#Requires -RunAsAdministrator
|
||||
# GuruRMM Agent Install Diagnostic
|
||||
# Run on GND-SERVER after MSI install attempt
|
||||
|
||||
$out = [System.Collections.Generic.List[string]]::new()
|
||||
function Log($msg) { $out.Add($msg); Write-Host $msg }
|
||||
function Section($title) { Log ""; Log ("=" * 60); Log " $title"; Log ("=" * 60) }
|
||||
|
||||
Section "SYSTEM INFO"
|
||||
Log "Hostname: $env:COMPUTERNAME"
|
||||
Log "Date/Time: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')"
|
||||
Log "OS: $((Get-CimInstance Win32_OperatingSystem).Caption)"
|
||||
Log "Arch: $env:PROCESSOR_ARCHITECTURE"
|
||||
|
||||
Section "SERVICE STATUS"
|
||||
$svc = Get-Service -Name "gururmm*" -ErrorAction SilentlyContinue
|
||||
if ($svc) {
|
||||
foreach ($s in $svc) {
|
||||
Log "Name: $($s.Name)"
|
||||
Log "DisplayName: $($s.DisplayName)"
|
||||
Log "Status: $($s.Status)"
|
||||
Log "StartType: $($s.StartType)"
|
||||
}
|
||||
} else {
|
||||
Log "[NOT FOUND] No service matching 'gururmm*'"
|
||||
}
|
||||
|
||||
Section "SERVICE BINARY"
|
||||
$svcWmi = Get-WmiObject Win32_Service -Filter "Name LIKE 'gururmm%'" -ErrorAction SilentlyContinue
|
||||
if ($svcWmi) {
|
||||
Log "PathName: $($svcWmi.PathName)"
|
||||
Log "StartName: $($svcWmi.StartName)"
|
||||
$binPath = $svcWmi.PathName -replace '"',''
|
||||
if (Test-Path $binPath) {
|
||||
$bin = Get-Item $binPath
|
||||
Log "Binary: $($bin.FullName)"
|
||||
Log "Size: $($bin.Length) bytes"
|
||||
Log "Modified: $($bin.LastWriteTime)"
|
||||
$ver = (Get-Item $binPath).VersionInfo
|
||||
Log "FileVersion: $($ver.FileVersion)"
|
||||
} else {
|
||||
Log "[NOT FOUND] Binary path does not exist: $binPath"
|
||||
}
|
||||
} else {
|
||||
Log "[NOT FOUND] No WMI service entry for gururmm"
|
||||
}
|
||||
|
||||
Section "REGISTRY"
|
||||
$regPath = "HKLM:\SOFTWARE\GuruRMM"
|
||||
if (Test-Path $regPath) {
|
||||
Log "Key exists: $regPath"
|
||||
Get-ItemProperty $regPath -ErrorAction SilentlyContinue | ForEach-Object {
|
||||
$_.PSObject.Properties | Where-Object { $_.Name -notmatch '^PS' } | ForEach-Object {
|
||||
Log " $($_.Name) = $($_.Value)"
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log "[NOT FOUND] $regPath does not exist"
|
||||
}
|
||||
|
||||
Section "INSTALLED PROGRAMS (MSI)"
|
||||
$rmm = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" `
|
||||
-ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.DisplayName -match "GuruRMM|gururmm" }
|
||||
if ($rmm) {
|
||||
foreach ($r in $rmm) {
|
||||
Log "DisplayName: $($r.DisplayName)"
|
||||
Log "DisplayVersion: $($r.DisplayVersion)"
|
||||
Log "InstallDate: $($r.InstallDate)"
|
||||
Log "InstallLocation:$($r.InstallLocation)"
|
||||
Log "Publisher: $($r.Publisher)"
|
||||
}
|
||||
} else {
|
||||
Log "[NOT FOUND] No GuruRMM entry in Add/Remove Programs"
|
||||
}
|
||||
|
||||
Section "MSI EVENT LOG (last 20 MsiInstaller events)"
|
||||
Get-WinEvent -FilterHashtable @{
|
||||
LogName = 'Application'
|
||||
ProviderName = 'MsiInstaller'
|
||||
} -MaxEvents 20 -ErrorAction SilentlyContinue | ForEach-Object {
|
||||
Log "$($_.TimeCreated) [$($_.Id)] $($_.Message -replace '\r?\n',' ' | Select-Object -First 1)"
|
||||
}
|
||||
|
||||
Section "APPLICATION EVENT LOG (gururmm, last 30 entries)"
|
||||
Get-WinEvent -FilterHashtable @{
|
||||
LogName = 'Application'
|
||||
StartTime = (Get-Date).AddHours(-4)
|
||||
} -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.Message -match "gururmm|GuruRMM" -or $_.ProviderName -match "gururmm" } |
|
||||
Select-Object -Last 30 | ForEach-Object {
|
||||
Log "$($_.TimeCreated) [$($_.LevelDisplayName)] $($_.ProviderName): $($_.Message -replace '\r?\n',' ')"
|
||||
}
|
||||
|
||||
Section "SYSTEM EVENT LOG (service control, last 20)"
|
||||
Get-WinEvent -FilterHashtable @{
|
||||
LogName = 'System'
|
||||
StartTime = (Get-Date).AddHours(-4)
|
||||
Id = @(7000,7001,7009,7023,7031,7034,7036,7040,7045)
|
||||
} -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.Message -match "gururmm|GuruRMM" } |
|
||||
Select-Object -Last 20 | ForEach-Object {
|
||||
Log "$($_.TimeCreated) [ID $($_.Id)] $($_.Message -replace '\r?\n',' ')"
|
||||
}
|
||||
|
||||
Section "AGENT LOG FILES"
|
||||
$searchPaths = @(
|
||||
"$env:ProgramData\GuruRMM",
|
||||
"$env:ProgramFiles\GuruRMM",
|
||||
"$env:ProgramFiles\gururmm-agent",
|
||||
"C:\Program Files\GuruRMM",
|
||||
"C:\ProgramData\GuruRMM"
|
||||
)
|
||||
$foundAny = $false
|
||||
foreach ($p in $searchPaths) {
|
||||
if (Test-Path $p) {
|
||||
$foundAny = $true
|
||||
Log "Found: $p"
|
||||
Get-ChildItem $p -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
|
||||
Log " $($_.FullName) ($($_.Length) bytes)"
|
||||
}
|
||||
# Print last 50 lines of any .log files
|
||||
Get-ChildItem $p -Recurse -Filter "*.log" -ErrorAction SilentlyContinue | ForEach-Object {
|
||||
Log ""
|
||||
Log "--- $($_.FullName) (last 50 lines) ---"
|
||||
Get-Content $_.FullName -Tail 50 -ErrorAction SilentlyContinue | ForEach-Object { Log $_ }
|
||||
}
|
||||
}
|
||||
}
|
||||
if (-not $foundAny) { Log "[NOT FOUND] No agent data directories found" }
|
||||
|
||||
Section "NETWORK CONNECTIVITY"
|
||||
$targets = @(
|
||||
@{Host="rmm.azcomputerguru.com"; Port=443; Label="RMM HTTPS"},
|
||||
@{Host="172.16.3.30"; Port=3001; Label="RMM API (internal)"},
|
||||
@{Host="8.8.8.8"; Port=53; Label="DNS (Google)"}
|
||||
)
|
||||
foreach ($t in $targets) {
|
||||
$hp = "$($t.Host):$($t.Port)"
|
||||
try {
|
||||
$tcp = [System.Net.Sockets.TcpClient]::new()
|
||||
$r = $tcp.BeginConnect($t.Host, $t.Port, $null, $null)
|
||||
$ok = $r.AsyncWaitHandle.WaitOne(3000)
|
||||
$tcp.Close()
|
||||
if ($ok) { Log "[OK] $($t.Label) ($hp)" }
|
||||
else { Log "[FAIL] $($t.Label) ($hp) -- timeout" }
|
||||
} catch {
|
||||
Log "[FAIL] $($t.Label) ($hp) -- $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
|
||||
Section "FIREWALL (outbound rules for gururmm)"
|
||||
Get-NetFirewallRule -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.DisplayName -match "gururmm|GuruRMM" } |
|
||||
ForEach-Object { Log "$($_.DisplayName) [$($_.Direction)] [$($_.Action)] [$($_.Enabled)]" }
|
||||
|
||||
# Write output file
|
||||
$outFile = "$env:TEMP\gururmm-diag-$env:COMPUTERNAME-$(Get-Date -Format 'yyyyMMdd-HHmmss').txt"
|
||||
$out | Set-Content $outFile -Encoding UTF8
|
||||
Write-Host ""
|
||||
Write-Host "Diagnostic saved to: $outFile"
|
||||
Write-Host "Copy it back with: type `"$outFile`""
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
This folder is for: 01 Intake and Client Facts
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 02 Liability Documents
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 03 Photos and Videos
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 04 Insurance and Claim Info
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 05 Medical Records
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 06 Medical Bills
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 07 Liens and LOPs
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 08 Wage Loss
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 09 Adjuster Correspondence
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 10 Prior Offers and Demands
|
||||
Delete this placeholder after adding case documents.
|
||||
@@ -0,0 +1,2 @@
|
||||
This folder is for: 11 AI Output
|
||||
Delete this placeholder after adding case documents.
|
||||
Binary file not shown.
@@ -0,0 +1,54 @@
|
||||
AI DEMAND REVIEW CHECKLIST
|
||||
|
||||
Client Name: _______________________________
|
||||
Date of Loss: _______________________________
|
||||
Staff Member: ______________________________
|
||||
Attorney Reviewer: __________________________
|
||||
|
||||
Before using AI, confirm that the AI Demand Review folder contains, if available:
|
||||
|
||||
[ ] Intake/client facts
|
||||
[ ] Police report or incident report
|
||||
[ ] Photos/videos
|
||||
[ ] Insurance/claim information
|
||||
[ ] Medical records
|
||||
[ ] Medical bills
|
||||
[ ] Liens/LOPs
|
||||
[ ] Wage loss documents
|
||||
[ ] Adjuster correspondence
|
||||
[ ] Prior offers/demands
|
||||
|
||||
Before uploading to AI:
|
||||
|
||||
[ ] Confirm we are using the firm-approved AI account only
|
||||
[ ] Confirm no personal AI account is being used
|
||||
[ ] Confirm documents are in the correct AI Demand Review folder
|
||||
[ ] Confirm obvious duplicate/junk documents are removed
|
||||
[ ] Confirm highly sensitive unnecessary documents are excluded
|
||||
|
||||
After AI produces output:
|
||||
|
||||
[ ] Save AI case snapshot to 11 AI Output
|
||||
[ ] Save AI medical chronology to 11 AI Output
|
||||
[ ] Save AI specials summary to 11 AI Output
|
||||
[ ] Save AI missing-items list to 11 AI Output
|
||||
[ ] Save AI demand draft to 11 AI Output
|
||||
|
||||
Before demand is sent, verify:
|
||||
|
||||
[ ] Client name
|
||||
[ ] Date of loss
|
||||
[ ] Defendant/tortfeasor name
|
||||
[ ] Insurance carrier
|
||||
[ ] Claim number
|
||||
[ ] Policy limits, if known
|
||||
[ ] Treatment dates
|
||||
[ ] Provider names
|
||||
[ ] Diagnoses/injuries
|
||||
[ ] Medical bill totals
|
||||
[ ] Liens/LOPs
|
||||
[ ] Wage loss
|
||||
[ ] Prior offers
|
||||
[ ] Demand amount
|
||||
[ ] Response deadline
|
||||
[ ] Attorney approval
|
||||
@@ -0,0 +1,38 @@
|
||||
AI DEMAND REVIEW OFFICE PROCEDURE
|
||||
|
||||
Purpose
|
||||
This procedure creates a repeatable process for using the firm-approved AI account to prepare pre-suit personal injury demand packages.
|
||||
|
||||
1. When to use this procedure
|
||||
Use this procedure when a case is ready for demand preparation or when the attorney asks staff to prepare an AI demand review.
|
||||
|
||||
2. Create the case AI folder
|
||||
Copy the folder named "AI Demand Review - TEMPLATE" into the client's case file. Rename it using this format:
|
||||
|
||||
[Client Last Name], [Client First Name] - AI Demand Review
|
||||
|
||||
Example:
|
||||
Smith, Mary - AI Demand Review
|
||||
|
||||
3. Add documents to the correct folders
|
||||
Place the relevant documents into the matching subfolders. Do not place unrelated documents, duplicate scans, or obvious junk documents into the AI review folder.
|
||||
|
||||
4. Use only firm-approved AI
|
||||
Client materials may be uploaded only to the firm-approved AI account/workspace. Do not use personal ChatGPT accounts, random AI websites, browser extensions, free PDF summarizers, or unapproved AI tools.
|
||||
|
||||
5. Run the standard prompt
|
||||
Upload the documents or selected folder contents to the firm-approved AI account. Copy and paste the "Standard AI Demand Prompt" into the AI chat.
|
||||
|
||||
6. Save AI output
|
||||
Save the AI output in the "11 AI Output" folder, using clear filenames such as:
|
||||
- AI Case Snapshot.docx
|
||||
- AI Medical Chronology.docx
|
||||
- AI Specials Summary.docx
|
||||
- AI Missing Items List.docx
|
||||
- AI Demand Draft.docx
|
||||
|
||||
7. Required review
|
||||
The demand letter may not be sent until staff verifies the key facts and the attorney approves the final demand.
|
||||
|
||||
8. Attorney approval
|
||||
AI is a drafting and organization tool. It does not replace attorney judgment. No AI output may be sent to an adjuster, opposing counsel, court, or client unless reviewed and approved under firm procedure.
|
||||
@@ -0,0 +1,39 @@
|
||||
You are assisting a plaintiff personal injury law firm in Arizona with a pre-suit demand package.
|
||||
|
||||
Review the uploaded materials for this case. Prepare the following:
|
||||
|
||||
1. One-page case snapshot
|
||||
2. Liability summary
|
||||
3. Medical chronology by date and provider
|
||||
4. Medical specials summary by provider
|
||||
5. Summary of liens, LOPs, MedPay, or reimbursement issues if shown in the documents
|
||||
6. Missing records, missing bills, or missing information
|
||||
7. Case strengths
|
||||
8. Case weaknesses or defense arguments
|
||||
9. Questions for staff or attorney review
|
||||
10. Draft settlement demand letter
|
||||
|
||||
Important instructions:
|
||||
|
||||
Do not invent facts.
|
||||
Do not assume facts not shown in the documents.
|
||||
If something is unclear, say "unclear from the materials provided."
|
||||
If documents are missing, identify what is missing.
|
||||
Separate confirmed facts from assumptions.
|
||||
Use a professional plaintiff personal injury tone.
|
||||
Do not include legal citations unless specifically requested.
|
||||
Do not send anything. This is a draft for attorney review.
|
||||
|
||||
After preparing the demand letter, create a short checklist of facts that staff or attorney must verify before the demand is sent, including:
|
||||
- client name
|
||||
- date of loss
|
||||
- defendant name
|
||||
- insurance carrier
|
||||
- claim number
|
||||
- treatment dates
|
||||
- providers
|
||||
- bill totals
|
||||
- liens
|
||||
- policy limits, if known
|
||||
- demand amount
|
||||
- response deadline
|
||||
BIN
clients/grabb-durando/gururmm-agent-grabb-main-office.msi
Normal file
BIN
clients/grabb-durando/gururmm-agent-grabb-main-office.msi
Normal file
Binary file not shown.
@@ -0,0 +1,88 @@
|
||||
|
||||
============================================================
|
||||
SYSTEM INFO
|
||||
============================================================
|
||||
Hostname: GND-SERVER
|
||||
Date/Time: 2026-05-12 15:52:21
|
||||
OS: Microsoft Windows Server 2019 Standard
|
||||
Arch: AMD64
|
||||
|
||||
============================================================
|
||||
SERVICE STATUS
|
||||
============================================================
|
||||
Name: GuruRMMAgent
|
||||
DisplayName: GuruRMM Agent
|
||||
Status: Running
|
||||
StartType: Automatic
|
||||
|
||||
============================================================
|
||||
SERVICE BINARY
|
||||
============================================================
|
||||
PathName: "C:\Program Files\GuruRMM\gururmm-agent.exe" service
|
||||
StartName: LocalSystem
|
||||
[NOT FOUND] Binary path does not exist: C:\Program Files\GuruRMM\gururmm-agent.exe service
|
||||
|
||||
============================================================
|
||||
REGISTRY
|
||||
============================================================
|
||||
Key exists: HKLM:\SOFTWARE\GuruRMM
|
||||
InstallDir = C:\Program Files\GuruRMM\
|
||||
SiteId = d526d700-7210-48b1-94a9-40c87a29dc25
|
||||
Version = 0.6.2
|
||||
AgentKey = agk_NEzx7sRA9JdDSL2xr2ukAYK2L427G4G0
|
||||
|
||||
============================================================
|
||||
INSTALLED PROGRAMS (MSI)
|
||||
============================================================
|
||||
DisplayName: GuruRMM Agent
|
||||
DisplayVersion: 0.6.2
|
||||
InstallDate: 20260512
|
||||
InstallLocation:
|
||||
Publisher: Arizona Computer Guru LLC
|
||||
|
||||
============================================================
|
||||
MSI EVENT LOG (last 20 MsiInstaller events)
|
||||
============================================================
|
||||
05/12/2026 15:44:22 [1033] Windows Installer installed the product. Product Name: GuruRMM Agent. Product Version: 0.6.2. Product Language: 1033. Manufacturer: Arizona Computer Guru LLC. Installation success or error status: 0.
|
||||
05/12/2026 15:44:22 [11707] Product: GuruRMM Agent -- Installation completed successfully.
|
||||
05/12/2026 15:44:22 [1042] Ending a Windows Installer transaction: C:\Users\sysadmin.gd\Desktop\gururmm-agent-grabb-main-office.msi. Client Process Id: 12280.
|
||||
05/12/2026 15:44:18 [1040] Beginning a Windows Installer transaction: C:\Users\sysadmin.gd\Desktop\gururmm-agent-grabb-main-office.msi. Client Process Id: 12280.
|
||||
|
||||
============================================================
|
||||
APPLICATION EVENT LOG (gururmm, last 30 entries)
|
||||
============================================================
|
||||
05/12/2026 15:44:22 [Information] MsiInstaller: Windows Installer installed the product. Product Name: GuruRMM Agent. Product Version: 0.6.2. Product Language: 1033. Manufacturer: Arizona Computer Guru LLC. Installation success or error status: 0.
|
||||
05/12/2026 15:44:22 [Information] MsiInstaller: Product: GuruRMM Agent -- Installation completed successfully.
|
||||
05/12/2026 15:44:22 [Information] MsiInstaller: Ending a Windows Installer transaction: C:\Users\sysadmin.gd\Desktop\gururmm-agent-grabb-main-office.msi. Client Process Id: 12280.
|
||||
05/12/2026 15:44:18 [Information] MsiInstaller: Beginning a Windows Installer transaction: C:\Users\sysadmin.gd\Desktop\gururmm-agent-grabb-main-office.msi. Client Process Id: 12280.
|
||||
|
||||
============================================================
|
||||
SYSTEM EVENT LOG (service control, last 20)
|
||||
============================================================
|
||||
05/12/2026 15:44:22 [ID 7036] The GuruRMM Agent service entered the running state.
|
||||
05/12/2026 15:44:21 [ID 7045] A service was installed in the system. Service Name: GuruRMM Agent Service File Name: "C:\Program Files\GuruRMM\gururmm-agent.exe" service Service Type: user mode service Service Start Type: auto start Service Account: LocalSystem
|
||||
|
||||
============================================================
|
||||
AGENT LOG FILES
|
||||
============================================================
|
||||
Found: C:\ProgramData\GuruRMM
|
||||
C:\ProgramData\GuruRMM\agent.log.2026-05-12 (0 bytes)
|
||||
C:\ProgramData\GuruRMM\install-report.ps1 (15766 bytes)
|
||||
Found: C:\Program Files\GuruRMM
|
||||
C:\Program Files\GuruRMM\gururmm-agent.exe (4235264 bytes)
|
||||
Found: C:\Program Files\GuruRMM
|
||||
C:\Program Files\GuruRMM\gururmm-agent.exe (4235264 bytes)
|
||||
Found: C:\ProgramData\GuruRMM
|
||||
C:\ProgramData\GuruRMM\agent.log.2026-05-12 (0 bytes)
|
||||
C:\ProgramData\GuruRMM\install-report.ps1 (15766 bytes)
|
||||
|
||||
============================================================
|
||||
NETWORK CONNECTIVITY
|
||||
============================================================
|
||||
[OK] RMM HTTPS (rmm.azcomputerguru.com:443)
|
||||
[FAIL] RMM API (internal) (172.16.3.30:3001) -- timeout
|
||||
[OK] DNS (Google) (8.8.8.8:53)
|
||||
|
||||
============================================================
|
||||
FIREWALL (outbound rules for gururmm)
|
||||
============================================================
|
||||
Submodule projects/msp-tools/guru-rmm updated: 0191481b30...90e8ae60bf
Reference in New Issue
Block a user