From 9acccffe8c63088532407415eca7cc95bd2a2829 Mon Sep 17 00:00:00 2001 From: gnezim Date: Tue, 14 Apr 2026 22:02:41 +0300 Subject: [PATCH] Seed type-only Logger surface for HostContract dependency --- src/observability/logger/types.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/observability/logger/types.ts diff --git a/src/observability/logger/types.ts b/src/observability/logger/types.ts new file mode 100644 index 00000000..2ae64628 --- /dev/null +++ b/src/observability/logger/types.ts @@ -0,0 +1,27 @@ +// Ownership: src/observability/logger/ is owned by Phase 1 sub-plan 1G-logger. +// This type-only seed exists because Phase 1A-1's HostContract depends on Logger. +// Sub-plan 1G-logger extends this file with runtime transports. + +export type LogLevel = "debug" | "info" | "warn" | "error"; + +export type LogFields = Record; + +export interface Logger { + debug(msg: string, fields?: LogFields): void; + info(msg: string, fields?: LogFields): void; + warn(msg: string, fields?: LogFields): void; + error(msg: string, fields?: LogFields & { err?: Error }): void; + child(context: LogFields): Logger; +} + +export interface LogRecord { + ts: string; + level: LogLevel; + msg: string; + fields: LogFields; +} + +export interface LogTransport { + write(record: LogRecord): void; + flush(): Promise; +}