Remove temporary debug files

Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-01-31 07:51:09 +00:00
co-authored by thomasnordquist
parent 66515bd2ed
commit 20befcd6fd
3 changed files with 0 additions and 1036 deletions
-83
View File
@@ -1,83 +0,0 @@
#!/bin/bash
# Script to debug AI Assistant chat with Playwright
set -e
echo "=== Starting Chat Debug Test ==="
# Check for API key
if [ -z "$OPENAI_API_KEY" ] && [ -z "$GEMINI_API_KEY" ] && [ -z "$LLM_API_KEY" ]; then
echo "Error: No LLM API key found. Please set OPENAI_API_KEY, GEMINI_API_KEY, or LLM_API_KEY"
exit 1
fi
echo "✓ API key found"
# Start mosquitto if not running
if ! pgrep -x "mosquitto" > /dev/null; then
echo "Starting mosquitto..."
mosquitto -c /dev/null -p 1883 &
MOSQUITTO_PID=$!
sleep 2
else
echo "✓ Mosquitto already running"
fi
# Build the server
echo "Building server..."
yarn build:server
# Start the server in background
echo "Starting server..."
export MQTT_EXPLORER_USERNAME=test
export MQTT_EXPLORER_PASSWORD=test123
export PORT=3000
export TESTS_MQTT_BROKER_HOST=127.0.0.1
export TESTS_MQTT_BROKER_PORT=1883
node dist/src/server.js &
SERVER_PID=$!
echo "Server PID: $SERVER_PID"
# Wait for server to start
echo "Waiting for server to be ready..."
for i in {1..30}; do
if curl -s http://localhost:3000 > /dev/null 2>&1; then
echo "✓ Server is ready"
break
fi
if [ $i -eq 30 ]; then
echo "Error: Server failed to start"
kill $SERVER_PID 2>/dev/null || true
kill $MOSQUITTO_PID 2>/dev/null || true
exit 1
fi
sleep 1
done
# Run the test
echo ""
echo "=== Running Playwright Test ==="
echo ""
npx playwright test test-chat-debug.ts --headed || TEST_FAILED=1
# Cleanup
echo ""
echo "=== Cleanup ==="
kill $SERVER_PID 2>/dev/null || true
if [ ! -z "$MOSQUITTO_PID" ]; then
kill $MOSQUITTO_PID 2>/dev/null || true
fi
if [ "$TEST_FAILED" = "1" ]; then
echo ""
echo "Test failed. Check the screenshots:"
ls -lh screenshot-*.png 2>/dev/null || echo "No screenshots found"
exit 1
fi
echo ""
echo "✓ Test completed successfully"
-83
View File
@@ -1,83 +0,0 @@
import { test, expect } from '@playwright/test'
import * as path from 'path'
test.setTimeout(120000) // 2 minutes for LLM responses
test('Debug AI Assistant Chat', async ({ page }) => {
// Start server is handled by the script
// Go to the page
await page.goto('http://localhost:3000')
// Wait for page to load
await page.waitForLoadState('networkidle')
// Take screenshot of initial state
await page.screenshot({ path: 'screenshot-initial.png', fullPage: true })
// Check console for errors
const consoleMessages: string[] = []
const consoleErrors: string[] = []
page.on('console', msg => {
const text = msg.text()
consoleMessages.push(`[${msg.type()}] ${text}`)
if (msg.type() === 'error') {
consoleErrors.push(text)
}
})
// Look for the AI Assistant
const aiAssistant = page.getByTestId('ai-assistant')
await expect(aiAssistant).toBeVisible({ timeout: 10000 })
console.log('AI Assistant found')
// Expand the AI Assistant
const header = page.getByTestId('ai-assistant-header')
await header.click()
await page.waitForTimeout(1000)
// Take screenshot of expanded state
await page.screenshot({ path: 'screenshot-expanded.png', fullPage: true })
console.log('AI Assistant expanded')
// Try to send a message
const input = page.getByTestId('ai-assistant-input')
await expect(input).toBeVisible()
await input.fill('Test message')
const sendButton = page.getByTestId('ai-assistant-send')
await sendButton.click()
console.log('Message sent, waiting for response...')
// Wait for a response (up to 60 seconds)
try {
await page.waitForSelector('[data-testid="ai-message-assistant"]', { timeout: 60000 })
console.log('Response received!')
// Take screenshot of response
await page.screenshot({ path: 'screenshot-response.png', fullPage: true })
} catch (error) {
console.log('No response after 60 seconds')
console.log('Console messages:', consoleMessages)
console.log('Console errors:', consoleErrors)
// Take screenshot of error state
await page.screenshot({ path: 'screenshot-error.png', fullPage: true })
throw error
}
// Log console output
console.log('\n=== Console Messages ===')
consoleMessages.forEach(msg => console.log(msg))
if (consoleErrors.length > 0) {
console.log('\n=== Console Errors ===')
consoleErrors.forEach(err => console.log(err))
}
})
-870
View File
@@ -1,870 +0,0 @@
Using OpenAI API key (length: 167)
LLM Provider: openai
1769844756: mosquitto version 2.0.18 starting
1769844756: Using default config.
1769844756: Starting in local only mode. Connections will only be possible from clients running on this machine.
1769844756: Create a configuration file which defines a listener to allow remote access.
1769844756: For more details see https://mosquitto.org/documentation/authentication-methods/
1769844756: Opening ipv4 listen socket on port 1883.
1769844756: Error: Address already in use
1769844756: Opening ipv6 listen socket on port 1883.
1769844756: Error: Address already in use
Downloading Chromium 143.0.7499.4 (playwright build v1200) from https://cdn.playwright.dev/dbazure/download/playwright/builds/chromium/1200/chromium-linux.zip
| | 0% of 164.7 MiB
|■■■■■■■■ | 10% of 164.7 MiB
|■■■■■■■■■■■■■■■■ | 20% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■ | 30% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 40% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 50% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 60% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 70% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 80% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 164.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 164.7 MiB
Chromium 143.0.7499.4 (playwright build v1200) downloaded to /home/runner/.cache/ms-playwright/chromium-1200
Downloading Chromium Headless Shell 143.0.7499.4 (playwright build v1200) from https://cdn.playwright.dev/dbazure/download/playwright/builds/chromium/1200/chromium-headless-shell-linux.zip
| | 0% of 109.7 MiB
|■■■■■■■■ | 10% of 109.7 MiB
|■■■■■■■■■■■■■■■■ | 20% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■ | 30% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 40% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 50% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 60% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 70% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 80% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 109.7 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 109.7 MiB
Chromium Headless Shell 143.0.7499.4 (playwright build v1200) downloaded to /home/runner/.cache/ms-playwright/chromium_headless_shell-1200
Downloading Firefox 144.0.2 (playwright build v1497) from https://cdn.playwright.dev/dbazure/download/playwright/builds/firefox/1497/firefox-ubuntu-24.04.zip
| | 0% of 98.4 MiB
|■■■■■■■■ | 10% of 98.4 MiB
|■■■■■■■■■■■■■■■■ | 20% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■ | 30% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 40% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 50% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 60% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 70% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 80% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 98.4 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 98.4 MiB
Firefox 144.0.2 (playwright build v1497) downloaded to /home/runner/.cache/ms-playwright/firefox-1497
Downloading Webkit 26.0 (playwright build v2227) from https://cdn.playwright.dev/dbazure/download/playwright/builds/webkit/2227/webkit-ubuntu-24.04.zip
| | 0% of 95.9 MiB
|■■■■■■■■ | 10% of 95.9 MiB
|■■■■■■■■■■■■■■■■ | 20% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■ | 30% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 40% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 50% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 60% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 70% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 80% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 95.9 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 95.9 MiB
Webkit 26.0 (playwright build v2227) downloaded to /home/runner/.cache/ms-playwright/webkit-2227
Downloading FFMPEG playwright build v1011 from https://cdn.playwright.dev/dbazure/download/playwright/builds/ffmpeg/1011/ffmpeg-linux.zip
| | 0% of 2.3 MiB
|■■■■■■■■ | 10% of 2.3 MiB
|■■■■■■■■■■■■■■■■ | 20% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■ | 30% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 40% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 50% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 60% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 70% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 80% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ | 90% of 2.3 MiB
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100% of 2.3 MiB
FFMPEG playwright build v1011 downloaded to /home/runner/.cache/ms-playwright/ffmpeg-1011
Playwright Host validation warning:
╔══════════════════════════════════════════════════════╗
║ Host system is missing dependencies to run browsers. ║
║ Missing libraries: ║
║ libgtk-4.so.1 ║
║ libgraphene-1.0.so.0 ║
║ libwoff2dec.so.1.0.2 ║
║ libvpx.so.9 ║
║ libevent-2.1.so.7 ║
║ libopus.so.0 ║
║ libgstallocators-1.0.so.0 ║
║ libgstapp-1.0.so.0 ║
║ libgstpbutils-1.0.so.0 ║
║ libgstaudio-1.0.so.0 ║
║ libgsttag-1.0.so.0 ║
║ libgstvideo-1.0.so.0 ║
║ libgstgl-1.0.so.0 ║
║ libgstcodecparsers-1.0.so.0 ║
║ libgstfft-1.0.so.0 ║
║ libflite.so.1 ║
║ libflite_usenglish.so.1 ║
║ libflite_cmu_grapheme_lang.so.1 ║
║ libflite_cmu_grapheme_lex.so.1 ║
║ libflite_cmu_indic_lang.so.1 ║
║ libflite_cmu_indic_lex.so.1 ║
║ libflite_cmulex.so.1 ║
║ libflite_cmu_time_awb.so.1 ║
║ libflite_cmu_us_awb.so.1 ║
║ libflite_cmu_us_kal16.so.1 ║
║ libflite_cmu_us_kal.so.1 ║
║ libflite_cmu_us_rms.so.1 ║
║ libflite_cmu_us_slt.so.1 ║
║ libavif.so.16 ║
║ libharfbuzz-icu.so.0 ║
║ libsecret-1.so.0 ║
║ libhyphen.so.0 ║
║ libmanette-0.2.so.0 ║
║ libGLESv2.so.2 ║
║ libx264.so ║
╚══════════════════════════════════════════════════════╝
at validateDependenciesLinux (/home/runner/work/MQTT-Explorer/MQTT-Explorer/node_modules/playwright-core/lib/server/registry/dependencies.js:269:9)
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async Registry._validateHostRequirements (/home/runner/work/MQTT-Explorer/MQTT-Explorer/node_modules/playwright-core/lib/server/registry/index.js:990:14)
at async Registry._validateHostRequirementsForExecutableIfNeeded (/home/runner/work/MQTT-Explorer/MQTT-Explorer/node_modules/playwright-core/lib/server/registry/index.js:1112:7)
at async Registry.validateHostRequirementsForExecutablesIfNeeded (/home/runner/work/MQTT-Explorer/MQTT-Explorer/node_modules/playwright-core/lib/server/registry/index.js:1101:7)
at async r.<anonymous> (/home/runner/work/MQTT-Explorer/MQTT-Explorer/node_modules/playwright-core/lib/cli/program.js:176:7)
Starting server with LLM support...
Waiting for server to start...
Using credentials from environment variables
Username: test
============================================================
MQTT Explorer server running on http://localhost:3000
============================================================
Server started successfully after 2 seconds
Using MQTT broker at 127.0.0.1:1883
Mobile viewport: DISABLED (desktop 1280x720)
yarn run v1.22.22
$ tsc && mocha --require source-map-support/register dist/src/spec/ui-tests.spec.js
MQTT Explorer UI Tests
Creating test-specific MQTT mock (no timers)...
Connecting to MQTT broker at mqtt://127.0.0.1:1883
Successfully connected to MQTT broker
Connected to MQTT broker at mqtt://127.0.0.1:1883
Publishing test topics...
Launching browser in browser mode...
Browser URL: http://localhost:3000
Mobile viewport: false
Using desktop viewport: 1280x720
Browser console: info %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold
Browser console: error Socket connection error: Authentication required
Browser console: error Authentication error: Authentication required
Waiting for page to initialize and auth check...
Checking for login dialog...
Login dialog detected, authenticating...
Client authenticated: test
Client connected, auth disabled: false
LLM service is available on backend
Browser console: log Socket connected successfully
Browser console: log Authentication successful
Browser console: log subscribing storage/load/response/a32bdc96-665a-4417-979b-e24d769f31bd
Browser console: log Auth status received from server: {authDisabled: false}
Browser console: log LLM availability received from server: true
storage/load/response/a32bdc96-665a-4417-979b-e24d769f31bd { data: undefined, store: 'Settings' } undefined
Browser console: log received {id: a32bdc96-665a-4417-979b-e24d769f31bd, payload: Object}
Browser console: log subscribing getAppVersion/response/e8dfcb88-5dee-471b-b1a2-5bb39ac268b6
getAppVersion/response/e8dfcb88-5dee-471b-b1a2-5bb39ac268b6 0.4.0-beta.5 undefined
Browser console: log subscribing storage/load/response/4f229c5d-647b-4e20-9685-01803420b5c6
Browser console: log subscribing getAppVersion/response/2fddfe61-cc1c-4e10-9a0d-008bc26f2350
storage/load/response/4f229c5d-647b-4e20-9685-01803420b5c6 { data: undefined, store: 'ConnectionManager_connections' } undefined
getAppVersion/response/2fddfe61-cc1c-4e10-9a0d-008bc26f2350 0.4.0-beta.5 undefined
Browser console: log received {id: e8dfcb88-5dee-471b-b1a2-5bb39ac268b6, payload: 0.4.0-beta.5}
Browser console: error Connecting to 'https://api.github.com/repos/thomasnordquist/mqtt-explorer/releases' violates the following Content Security Policy directive: "connect-src 'self' ws: wss:". The action has been blocked.
Browser console: log received {id: 4f229c5d-647b-4e20-9685-01803420b5c6, payload: Object}
Browser console: log subscribing storage/store/response/3d2ddb0d-9e94-4c1d-b9e0-059091eee9c3
Browser console: log received {id: 2fddfe61-cc1c-4e10-9a0d-008bc26f2350, payload: 0.4.0-beta.5}
storage/store/response/3d2ddb0d-9e94-4c1d-b9e0-059091eee9c3 undefined undefined
Browser error: [Error [AxiosError]: AxiosError]
storage/load/response/5f1b3e00-8e6f-4813-9dda-387baf9f9a64 {
data: {
'mqtt.eclipseprojects.io': {
configVersion: 1,
certValidation: true,
clientId: 'mqtt-explorer-26e5f5c6',
id: 'mqtt.eclipseprojects.io',
name: 'mqtt.eclipseprojects.io',
encryption: false,
subscriptions: [Array],
type: 'mqtt',
host: 'mqtt.eclipseprojects.io',
port: 1883,
protocol: 'mqtt'
},
'test.mosquitto.org': {
configVersion: 1,
certValidation: true,
clientId: 'mqtt-explorer-d6d97851',
id: 'test.mosquitto.org',
name: 'test.mosquitto.org',
encryption: false,
subscriptions: [Array],
type: 'mqtt',
host: 'test.mosquitto.org',
port: 1883,
protocol: 'mqtt'
}
},
store: 'ConnectionManager_connections'
} undefined
Browser console: log received {id: 3d2ddb0d-9e94-4c1d-b9e0-059091eee9c3}
Browser console: log subscribing storage/load/response/5f1b3e00-8e6f-4813-9dda-387baf9f9a64
Browser console: log received {id: 5f1b3e00-8e6f-4813-9dda-387baf9f9a64, payload: Object}
Browser console: error Received `%s` for a non-boolean attribute `%s`.
If you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}. true button button true button
Browser console: warning MUI Grid: The `item` prop has been removed and is no longer necessary. You can safely remove it.
Browser console: warning MUI Grid: The `xs` prop has been removed. See https://mui.com/material-ui/migration/upgrade-to-grid-v2/ for migration instructions.
Browser console: error Received `%s` for a non-boolean attribute `%s`.
If you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}. true notched notched true notched
Browser console: warning componentWillReceiveProps has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state
* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.
Please update the following components: %s TreeComponent
Browser console: warning componentWillUpdate has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.
Please update the following components: %s TreeComponent
Browser console: warning MUI: You have provided an out-of-range value `en-US` for the select (name="time-locale") component.
Consider providing a value that matches one of the available options or ''.
The available values are `en`, `af`, `ar-dz`, `ar-kw`, `ar-ly`, `ar-ma`, `ar-ps`, `ar-sa`, `ar-tn`, `ar`, `az`, `be`, `bg`, `bm`, `bn-bd`, `bn`, `bo`, `br`, `bs`, `ca`, `cs`, `cv`, `cy`, `da`, `de-at`, `de-ch`, `de`, `dv`, `el`, `en-au`, `en-ca`, `en-gb`, `en-ie`, `en-il`, `en-in`, `en-nz`, `en-sg`, `eo`, `es-do`, `es-mx`, `es-us`, `es`, `et`, `eu`, `fa`, `fi`, `fil`, `fo`, `fr-ca`, `fr-ch`, `fr`, `fy`, `ga`, `gd`, `gl`, `gom-deva`, `gom-latn`, `gu`, `he`, `hi`, `hr`, `hu`, `hy-am`, `id`, `is`, `it-ch`, `it`, `ja`, `jv`, `ka`, `kk`, `km`, `kn`, `ko`, `ku-kmr`, `ku`, `ky`, `lb`, `lo`, `lt`, `lv`, `me`, `mi`, `mk`, `ml`, `mn`, `mr`, `ms-my`, `ms`, `mt`, `my`, `nb`, `ne`, `nl-be`, `nl`, `nn`, `oc-lnc`, `pa-in`, `pl`, `pt-br`, `pt`, `ro`, `ru`, `sd`, `se`, `si`, `sk`, `sl`, `sq`, `sr-cyrl`, `sr`, `ss`, `sv`, `sw`, `ta`, `te`, `tet`, `tg`, `th`, `tk`, `tl-ph`, `tlh`, `tr`, `tzl`, `tzm-latn`, `tzm`, `ug-cn`, `uk`, `ur`, `uz-latn`, `uz`, `vi`, `x-pseudo`, `yo`, `zh-cn`, `zh-hk`, `zh-mo`, `zh-tw`.
Browser console: warning MUI: You have provided an out-of-range value `en-US` for the select (name="time-locale") component.
Consider providing a value that matches one of the available options or ''.
The available values are `en`, `af`, `ar-dz`, `ar-kw`, `ar-ly`, `ar-ma`, `ar-ps`, `ar-sa`, `ar-tn`, `ar`, `az`, `be`, `bg`, `bm`, `bn-bd`, `bn`, `bo`, `br`, `bs`, `ca`, `cs`, `cv`, `cy`, `da`, `de-at`, `de-ch`, `de`, `dv`, `el`, `en-au`, `en-ca`, `en-gb`, `en-ie`, `en-il`, `en-in`, `en-nz`, `en-sg`, `eo`, `es-do`, `es-mx`, `es-us`, `es`, `et`, `eu`, `fa`, `fi`, `fil`, `fo`, `fr-ca`, `fr-ch`, `fr`, `fy`, `ga`, `gd`, `gl`, `gom-deva`, `gom-latn`, `gu`, `he`, `hi`, `hr`, `hu`, `hy-am`, `id`, `is`, `it-ch`, `it`, `ja`, `jv`, `ka`, `kk`, `km`, `kn`, `ko`, `ku-kmr`, `ku`, `ky`, `lb`, `lo`, `lt`, `lv`, `me`, `mi`, `mk`, `ml`, `mn`, `mr`, `ms-my`, `ms`, `mt`, `my`, `nb`, `ne`, `nl-be`, `nl`, `nn`, `oc-lnc`, `pa-in`, `pl`, `pt-br`, `pt`, `ro`, `ru`, `sd`, `se`, `si`, `sk`, `sl`, `sq`, `sr-cyrl`, `sr`, `ss`, `sv`, `sw`, `ta`, `te`, `tet`, `tg`, `th`, `tk`, `tl-ph`, `tlh`, `tr`, `tzl`, `tzm-latn`, `tzm`, `ug-cn`, `uk`, `ur`, `uz-latn`, `uz`, `vi`, `x-pseudo`, `yo`, `zh-cn`, `zh-hk`, `zh-mo`, `zh-tw`.
Browser console: error Creating a worker from 'blob:http://localhost:3000/81d1c8a2-e19c-40a6-bf56-ef9f878e45d2' violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval'". Note that 'worker-src' was not explicitly set, so 'script-src' is used as a fallback. The action has been blocked.
Browser console: warning ReactAce: editor option enableBasicAutocompletion was activated but not found. Did you need to import a related tool or did you possibly mispell the option?
Browser console: warning ReactAce: editor option enableLiveAutocompletion was activated but not found. Did you need to import a related tool or did you possibly mispell the option?
Browser console: warning ReactAce: editor option enableSnippets was activated but not found. Did you need to import a related tool or did you possibly mispell the option?
Authentication complete
Waiting for MQTT connection dialog...
Connecting to MQTT broker...
Browser console: log subscribing conn/state/mqtt.eclipseprojects.io
Browser console: log subscribing storage/load/response/92360798-5cab-4063-9c05-690b975e678b
storage/load/response/92360798-5cab-4063-9c05-690b975e678b { data: undefined, store: 'connection_view_state' } undefined
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: log received {id: 92360798-5cab-4063-9c05-690b975e678b, payload: Object}
Setup complete
Connection Management
expandTopic livingroom/lamp
Expanding level 1/2: livingroom
Using selector: span[data-test-topic='livingroom']
Found 1 elements matching 'livingroom'
Using match #0 for 'livingroom'
Clicking topic text to expand: livingroom
Topic livingroom is collapsed, clicking to expand
Waiting for children of 'livingroom' to render...
After expanding 'livingroom', found 1 elements for next topic 'lamp'
Expanding level 2/2: lamp
Using selector: span[data-test-topic='lamp']
Found 1 elements matching 'lamp'
Using match #0 for 'lamp'
Clicking topic text to expand: lamp
Topic lamp is collapsed, clicking to expand
✔ should connect and expand livingroom/lamp topic (4779ms)
Topic Tree Structure
expandTopic kitchen/coffee_maker
Expanding level 1/2: kitchen
Using selector: span[data-test-topic='kitchen']
Found 1 elements matching 'kitchen'
Using match #0 for 'kitchen'
Clicking topic text to expand: kitchen
Topic kitchen is collapsed, clicking to expand
Waiting for children of 'kitchen' to render...
After expanding 'kitchen', found 1 elements for next topic 'coffee_maker'
Expanding level 2/2: coffee_maker
Using selector: span[data-test-topic='coffee_maker']
Found 1 elements matching 'coffee_maker'
Using match #0 for 'coffee_maker'
Clicking topic text to expand: coffee_maker
Topic coffee_maker has no children, clicking to select
✔ should expand and display kitchen/coffee_maker with JSON payload (4252ms)
expandTopic livingroom/lamp/state
Expanding level 1/3: livingroom
Using selector: span[data-test-topic='livingroom']
Found 1 elements matching 'livingroom'
Using match #0 for 'livingroom'
Clicking topic text to expand: livingroom
Topic livingroom is already expanded, clicking to select
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Waiting for children of 'livingroom' to render...
After expanding 'livingroom', found 1 elements for next topic 'lamp'
Expanding level 2/3: lamp
Using selector: span[data-test-topic='lamp']
Found 1 elements matching 'lamp'
Using match #0 for 'lamp'
Clicking topic text to expand: lamp
Topic lamp is collapsed, clicking to expand
Waiting for children of 'lamp' to render...
After expanding 'lamp', found 1 elements for next topic 'state'
Expanding level 3/3: state
Using selector: span[data-test-topic='state']
Found 1 elements matching 'state'
Using match #0 for 'state'
Clicking topic text to expand: state
Topic state has no children, clicking to select
✔ should expand nested topic livingroom/lamp/state (6366ms)
Search Functionality
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: error A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://react.dev/link/controlled-components
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
expandTopic kitchen/temperature
Expanding level 1/2: kitchen
Using selector: span[data-test-topic='kitchen']
Found 1 elements matching 'kitchen'
Using match #0 for 'kitchen'
Clicking topic text to expand: kitchen
Topic kitchen is collapsed, clicking to expand
Browser console: log destroy 0
Waiting for children of 'kitchen' to render...
After expanding 'kitchen', found 1 elements for next topic 'temperature'
Expanding level 2/2: temperature
Using selector: span[data-test-topic='temperature']
Found 1 elements matching 'temperature'
Using match #0 for 'temperature'
Clicking topic text to expand: temperature
Topic temperature has no children, clicking to select
✔ should search for temperature and expand kitchen/temperature (9966ms)
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log subscribing conn/mqtt.eclipseprojects.io
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: warning destroy
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
Browser console: log destroy 2
expandTopic kitchen/lamp
Expanding level 1/2: kitchen
Using selector: span[data-test-topic='kitchen']
Found 1 elements matching 'kitchen'
Using match #0 for 'kitchen'
Clicking topic text to expand: kitchen
Topic kitchen is collapsed, clicking to expand
Waiting for children of 'kitchen' to render...
After expanding 'kitchen', found 1 elements for next topic 'lamp'
Expanding level 2/2: lamp
Using selector: span[data-test-topic='lamp']
Found 1 elements matching 'lamp'
Using match #0 for 'lamp'
Clicking topic text to expand: lamp
Topic lamp is collapsed, clicking to expand
✔ should search for lamp and expand kitchen/lamp (11597ms)
Clipboard Operations
expandTopic livingroom/lamp/state
Expanding level 1/3: livingroom
Using selector: span[data-test-topic='livingroom']
Found 1 elements matching 'livingroom'
Using match #0 for 'livingroom'
Clicking topic text to expand: livingroom
Topic livingroom is collapsed, clicking to expand
Waiting for children of 'livingroom' to render...
After expanding 'livingroom', found 2 elements for next topic 'lamp'
Expanding level 2/3: lamp
Using selector: span[data-test-topic='lamp']
Found 2 elements matching 'lamp'
Using match #0 for 'lamp'
Clicking topic text to expand: lamp
Topic lamp is collapsed, clicking to expand
Waiting for children of 'lamp' to render...
After expanding 'lamp', found 2 elements for next topic 'state'
Expanding level 3/3: state
Using selector: span[data-test-topic='state']
Found 2 elements matching 'state'
Using match #0 for 'state'
Clicking topic text to expand: state
Topic state has no children, clicking to select
✔ should copy topic path to clipboard in both Electron and browser modes (10520ms)
✔ should copy message value to clipboard in both Electron and browser modes (583ms)
File Save/Download Operations
Browser mode: File downloaded: mqtt-message-2026-01-31T07-33-59-282Z.bin
✔ should save/download message to file in both Electron and browser modes (583ms)
AI Assistant Chat
expandTopic livingroom/lamp
Expanding level 1/2: livingroom
Using selector: span[data-test-topic='livingroom']
Found 1 elements matching 'livingroom'
Using match #0 for 'livingroom'
Clicking topic text to expand: livingroom
Topic livingroom is already expanded, clicking to select
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Browser console: log destroy 0
Waiting for children of 'livingroom' to render...
After expanding 'livingroom', found 1 elements for next topic 'lamp'
Expanding level 2/2: lamp
Using selector: span[data-test-topic='lamp']
Found 1 elements matching 'lamp'
Using match #0 for 'lamp'
Clicking topic text to expand: lamp
Topic lamp is already expanded, clicking to select
Browser console: log destroy 0
Browser console: log subscribing llm/chat/response/492a97e2-bdc4-437b-aa1f-3c000b8db57b
================================================================================
LLM RPC HANDLER - Received Request
================================================================================
Messages count: 2
Topic context provided: false
Tool results provided: false
Last user message:
Content length: 260 characters
Content starts with "Context:"? false
Content preview: Based on this MQTT topic and its context, suggest 3-5 brief, relevant questions a user might want to ask. Return ONLY a JSON array of question strings, nothing else.
Context:
Topic: kitchen/lamp
Subtopics: 1
Format: ["question 1", "question 2", "question 3"]
================================================================================
LLM Provider: openai
LLM Model: gpt-5-mini
================================================================================
✔ should expand AI Assistant panel when clicked (5296ms)
Browser console: log LLM Service: Topic context added to message
Browser console: log Context length: 32 characters
Browser console: log Context preview: Topic: kitchen/lamp
Subtopics: 1...
================================================================================
LLM RPC HANDLER - Received Request
================================================================================
Browser console: log LLM Service: User message added to history
Messages count: 2
Topic context provided: true
Browser console: log Message content length: 78 characters
Tool results provided: false
Topic context length: 32 characters
Browser console: log Message preview: Context:
Topic: kitchen/lamp
Subtopics: 1
User Question: What is this device?...
Topic context preview: Topic: kitchen/lamp
Subtopics: 1...
Last user message:
Content length: 78 characters
Content starts with "Context:"? true
Browser console: log subscribing llm/chat/response/d3ce6696-1a83-48cd-ba62-b692cd8756b0
Content preview: Context:
Topic: kitchen/lamp
Subtopics: 1
User Question: What is this device?
================================================================================
LLM Provider: openai
LLM Model: gpt-5-mini
================================================================================
================================================================================
LLM RESPONSE
================================================================================
Duration: 1135 ms
Provider: openai
Model: gpt-5-mini-2025-08-07
Content length: 0
Usage: { promptTokens: 1378, completionTokens: 26, totalTokens: 1404 }
================================================================================
================================================================================
LLM RPC HANDLER - Returning response
================================================================================
Response length: 0
Has debugInfo: true
================================================================================
llm/chat/response/d3ce6696-1a83-48cd-ba62-b692cd8756b0 {
response: '',
toolCalls: [
{
id: 'call_rQKzguDNmzGTmXmbQJaviWNW',
type: 'function',
function: [Object]
}
],
debugInfo: {
provider: 'openai',
model: 'gpt-5-mini-2025-08-07',
request: {
url: 'https://api.openai.com/v1/chat/completions',
messageCount: 2
},
response: { contentLength: 0, usage: [Object] },
timing: { duration_ms: 1135, timestamp: '2026-01-31T07:34:06.338Z' }
}
} undefined
Browser console: log received {id: d3ce6696-1a83-48cd-ba62-b692cd8756b0, payload: Object}
Browser console: log LLM Service: Received result from backend: {response: , toolCalls: Array(1), debugInfo: Object}
Browser console: log LLM Service: Has response: false
Browser console: log LLM Service: Has toolCalls: true
Browser console: log LLM Service: Has debugInfo: true
Browser console: error LLM Service: Invalid result from backend: {response: , toolCalls: Array(1), debugInfo: Object}
Browser console: error LLM Service Error: Error: No response from AI assistant
at LLMService.sendMessage (webpack-internal:///24932:11047:23)
at async eval (webpack-internal:///24932:11330:33)
Browser console: error AI Assistant error: Error: No response from AI assistant
at LLMService.sendMessage (webpack-internal:///24932:11109:19)
at async eval (webpack-internal:///24932:11330:33)
Browser console: error Error details: Error: No response from AI assistant
at LLMService.sendMessage (webpack-internal:///24932:11109:19)
at async eval (webpack-internal:///24932:11330:33)
================================================================================
LLM RESPONSE
================================================================================
Duration: 2904 ms
Provider: openai
Model: gpt-5-mini-2025-08-07
Content length: 612
Usage: { promptTokens: 1424, completionTokens: 152, totalTokens: 1576 }
================================================================================
================================================================================
LLM RPC HANDLER - Returning response
================================================================================
Response length: 612
Has debugInfo: true
================================================================================
llm/chat/response/492a97e2-bdc4-437b-aa1f-3c000b8db57b {
response: '[\n' +
' "Is the kitchen/lamp topic a controllable device (can I publish to a /set or /cmd topic to switch it)?",\n' +
' "What payload format does the kitchen/lamp expect for turning on/off or setting brightness (e.g., \\"ON\\"/\\"OFF\\" or JSON)?",\n' +
' "Is the kitchen/lamp retained and does it publish a /state or /status subtopic I can subscribe to for current state?",\n' +
' "Are there any automation-friendly topics nearby (like kitchen/lamp/brightness or kitchen/lamp/color) to support dimming or color changes?",\n' +
' "Can you provide recent message history for kitchen/lamp to see usage patterns and confirm topic behaviour?"\n' +
']',
toolCalls: undefined,
debugInfo: {
provider: 'openai',
model: 'gpt-5-mini-2025-08-07',
request: {
url: 'https://api.openai.com/v1/chat/completions',
messageCount: 2
},
response: { contentLength: 612, usage: [Object] },
timing: { duration_ms: 2904, timestamp: '2026-01-31T07:34:06.995Z' }
}
} undefined
Browser console: log received {id: 492a97e2-bdc4-437b-aa1f-3c000b8db57b, payload: Object}