feat: handle logging from the agent

This commit is contained in:
Aarnav Tale
2025-08-20 13:58:19 -04:00
parent bcd87453bd
commit 8fc657f86a
10 changed files with 63 additions and 235 deletions
+23 -3
View File
@@ -1,8 +1,8 @@
import { ChildProcessWithoutNullStreams, spawn } from 'node:child_process';
import EventEmitter from 'node:events';
import { constants, access, mkdir, open } from 'node:fs/promises';
import { access, constants, mkdir, open } from 'node:fs/promises';
import { getegid, geteuid } from 'node:process';
import { Interface, createInterface } from 'node:readline';
import { createInterface, Interface } from 'node:readline';
import { inArray } from 'drizzle-orm';
import { LibSQLDatabase } from 'drizzle-orm/libsql/driver-core';
import { HostInfo } from '~/types';
@@ -240,7 +240,6 @@ class HeadplaneAgent extends EventEmitter<AgentEvents> {
gid: getegid?.() ?? undefined,
env: {
HOME: process.env.HOME,
HEADPLANE_EMBEDDED: 'true',
HEADPLANE_AGENT_WORK_DIR: this.options.work_dir,
HEADPLANE_AGENT_DEBUG: log.debugEnabled ? 'true' : 'false',
HEADPLANE_AGENT_HOSTNAME: this.options.host_name,
@@ -396,5 +395,26 @@ class HeadplaneAgent extends EventEmitter<AgentEvents> {
this.emit('error', new Error(error));
return;
}
if (line.startsWith('LOG')) {
const logSnippet = line.slice(4).trim();
const [level, ...messageParts] = logSnippet.split(' ');
const message = messageParts.join(' ');
switch (level) {
case 'INFO':
log.info('agent', message);
break;
case 'WARN':
log.warn('agent', message);
break;
case 'ERROR':
log.error('agent', message);
break;
default:
log.debug('agent', message);
}
return;
}
}
}