Webchat: auto-start server and simplify config

This commit is contained in:
Peter Steinberger
2025-12-08 13:12:20 +00:00
parent d833de793d
commit 17a6d716ad
6 changed files with 56 additions and 20 deletions

View File

@@ -7,7 +7,8 @@ const monitorWebProvider = vi.fn();
const logWebSelfId = vi.fn();
const waitForever = vi.fn();
const monitorTelegramProvider = vi.fn();
const startWebChatServer = vi.fn(async () => ({ port: 18788, token: null }));
const startWebChatServer = vi.fn(async () => ({ port: 18788 }));
const ensureWebChatServerFromConfig = vi.fn(async () => ({ port: 18788 }));
const runtime = {
log: vi.fn(),
@@ -29,6 +30,7 @@ vi.mock("../telegram/monitor.js", () => ({
}));
vi.mock("../webchat/server.js", () => ({
startWebChatServer,
ensureWebChatServerFromConfig,
getWebChatServer: () => null,
}));
vi.mock("./deps.js", () => ({
@@ -104,7 +106,7 @@ describe("cli program", () => {
await program.parseAsync(["webchat", "--json"], { from: "user" });
expect(startWebChatServer).toHaveBeenCalled();
expect(runtime.log).toHaveBeenCalledWith(
JSON.stringify({ port: 18788, token: null, basePath: "/webchat/", host: "127.0.0.1" }),
JSON.stringify({ port: 18788, basePath: "/webchat/", host: "127.0.0.1" }),
);
});
});

View File

@@ -17,7 +17,11 @@ import {
setHeartbeatsEnabled,
type WebMonitorTuning,
} from "../provider-web.js";
import { startWebChatServer, getWebChatServer } from "../webchat/server.js";
import {
startWebChatServer,
getWebChatServer,
ensureWebChatServerFromConfig,
} from "../webchat/server.js";
import { defaultRuntime, type RuntimeEnv } from "../runtime.js";
import { VERSION } from "../version.js";
import {
@@ -509,6 +513,16 @@ Examples:
),
);
try {
// Start loopback web chat server unless disabled.
const webchatServer = await ensureWebChatServerFromConfig();
if (webchatServer) {
defaultRuntime.log(
info(
`webchat listening on http://127.0.0.1:${webchatServer.port}/webchat/`,
),
);
}
await monitorWebProvider(
Boolean(opts.verbose),
undefined,
@@ -748,7 +762,6 @@ Shows token usage per session when the agent reports it; set inbound.reply.agent
const server = await startWebChatServer(port);
const payload = {
port: server.port,
token: server.token ?? null,
basePath: "/webchat/",
host: "127.0.0.1",
};