last pass before testing

This commit is contained in:
Jacob Dubin
2026-04-12 09:08:32 -05:00
parent 8e060a1ded
commit 5bc6413ebb
5 changed files with 138 additions and 0 deletions

View File

@@ -59,3 +59,9 @@ Artifacts:
4. Inspect the captured websocket events and exported fixtures.
5. Convert the best captures into sanitized checked-in fixtures and tests.
6. Keep Node available to compare any surprising turn behavior before changing infrastructure.
Useful helper scripts:
- [scripts/cloud/Invoke-LiveJiboPrep.ps1](C:/Projects/JiboExperiments/OpenJibo/scripts/cloud/Invoke-LiveJiboPrep.ps1)
- [scripts/cloud/Get-WebSocketCaptureSummary.ps1](C:/Projects/JiboExperiments/OpenJibo/scripts/cloud/Get-WebSocketCaptureSummary.ps1)
- [scripts/cloud/Import-WebSocketCaptureFixture.ps1](C:/Projects/JiboExperiments/OpenJibo/scripts/cloud/Import-WebSocketCaptureFixture.ps1)

View File

@@ -0,0 +1,75 @@
param(
[Parameter(Mandatory = $true)]
[string]$SourcePath,
[Parameter(Mandatory = $true)]
[string]$FixtureName,
[string]$DestinationDirectory = "..\..\src\Jibo.Cloud\node\fixtures\websocket",
[switch]$Overwrite
)
$ErrorActionPreference = "Stop"
function Redact-Object {
param(
[Parameter(Mandatory = $true)]
$Value
)
if ($null -eq $Value) {
return $null
}
if ($Value -is [string]) {
if ($Value -match "token" -or $Value -match "bearer" -or $Value -match "session") {
return "[redacted]"
}
return $Value
}
if ($Value -is [System.Collections.IEnumerable] -and -not ($Value -is [string])) {
$items = @()
foreach ($item in $Value) {
$items += ,(Redact-Object -Value $item)
}
return $items
}
if ($Value.PSObject -and $Value.PSObject.Properties.Count -gt 0) {
$result = [ordered]@{}
foreach ($property in $Value.PSObject.Properties) {
if ($property.Name -match "token" -or $property.Name -match "authorization") {
$result[$property.Name] = "[redacted]"
continue
}
$result[$property.Name] = Redact-Object -Value $property.Value
}
return [pscustomobject]$result
}
return $Value
}
$resolvedSourcePath = Resolve-Path -LiteralPath $SourcePath -ErrorAction Stop
$resolvedDestinationDirectory = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot $DestinationDirectory))
New-Item -ItemType Directory -Force -Path $resolvedDestinationDirectory | Out-Null
$fixture = Get-Content -LiteralPath $resolvedSourcePath -Raw | ConvertFrom-Json -Depth 50
$sanitized = Redact-Object -Value $fixture
$sanitized.name = $FixtureName
$sanitized.session.token = "[redacted]"
$destinationPath = Join-Path $resolvedDestinationDirectory ($FixtureName + ".flow.json")
if ((Test-Path -LiteralPath $destinationPath) -and -not $Overwrite) {
throw "Destination fixture already exists: $destinationPath. Use -Overwrite to replace it."
}
$json = $sanitized | ConvertTo-Json -Depth 50
[System.IO.File]::WriteAllText($destinationPath, $json + [Environment]::NewLine)
Write-Host "Imported sanitized websocket fixture:"
Write-Host " - source: $resolvedSourcePath"
Write-Host " - destination: $destinationPath"

View File

@@ -0,0 +1,44 @@
param(
[string]$BaseUrl = "https://localhost:5001",
[string[]]$ExpectedHosts = @(
"api.jibo.com",
"api-socket.jibo.com",
"neo-hub.jibo.com"
),
[string]$CaptureDirectory = "..\..\src\Jibo.Cloud\dotnet\src\Jibo.Cloud.Api\bin\Debug\net10.0\captures\websocket"
)
$ErrorActionPreference = "Stop"
Write-Host "OpenJibo live Jibo prep"
Write-Host ""
Write-Host "1. HTTP health check"
try {
$health = Invoke-RestMethod -Uri ($BaseUrl.TrimEnd("/") + "/health") -Method Get
$health | ConvertTo-Json -Depth 5
} catch {
Write-Error "Health check failed against $BaseUrl. Start the .NET cloud and verify TLS/routing before continuing. $_"
}
Write-Host ""
Write-Host "2. Expected robot-facing hosts"
$ExpectedHosts | ForEach-Object { Write-Host " - $_" }
Write-Host ""
Write-Host "3. Capture directory"
$resolvedCaptureDirectory = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot $CaptureDirectory))
Write-Host " - $resolvedCaptureDirectory"
if (-not (Test-Path -LiteralPath $resolvedCaptureDirectory)) {
New-Item -ItemType Directory -Force -Path $resolvedCaptureDirectory | Out-Null
Write-Host " - created"
}
Write-Host ""
Write-Host "4. Live-run checklist"
Write-Host " - keep the Ubuntu/Jibo routing setup in place"
Write-Host " - keep the Node server available as a fallback"
Write-Host " - point Jibo at the .NET server using the same controlled network settings"
Write-Host " - perform one startup check, one chat turn, and one joke turn"
Write-Host " - after the run, inspect capture output with scripts/cloud/Get-WebSocketCaptureSummary.ps1"
Write-Host " - import the best exported fixture with scripts/cloud/Import-WebSocketCaptureFixture.ps1"

View File

@@ -8,3 +8,7 @@ These scripts help exercise the new .NET hosted cloud locally.
Replays a sanitized HTTP fixture against a running local instance.
- `Get-WebSocketCaptureSummary.ps1`
Summarizes captured websocket telemetry events and exported live-run fixtures from the .NET cloud.
- `Invoke-LiveJiboPrep.ps1`
Runs a small readiness checklist before the first physical Jibo test against the .NET cloud.
- `Import-WebSocketCaptureFixture.ps1`
Sanitizes an exported websocket capture fixture and copies it into the checked-in websocket fixture set.

View File

@@ -0,0 +1,9 @@
{
"OpenJibo": {
"Telemetry": {
"Enabled": true,
"ExportFixtures": true,
"DirectoryPath": "captures/websocket"
}
}
}