feat(core): improve runtime observability
This commit is contained in:
parent
a9b7bd9e2f
commit
c3d26c4912
6 changed files with 112 additions and 40 deletions
24
packages/core/src/event-logger.ts
Normal file
24
packages/core/src/event-logger.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
export * as EventLogger from "./event-logger"
|
||||
|
||||
import { Effect, Layer } from "effect"
|
||||
import { makeGlobalNode } from "./effect/app-node"
|
||||
import { EventV2 } from "./event"
|
||||
|
||||
const Types = new Set([
|
||||
"agent.updated",
|
||||
"catalog.updated",
|
||||
"command.updated",
|
||||
"config.updated",
|
||||
])
|
||||
|
||||
export const layer = Layer.effectDiscard(
|
||||
Effect.gen(function* () {
|
||||
const events = yield* EventV2.Service
|
||||
const unsubscribe = yield* events.listen((event) =>
|
||||
Types.has(event.type) ? Effect.logInfo("event", { event }) : Effect.void,
|
||||
)
|
||||
yield* Effect.addFinalizer(() => unsubscribe)
|
||||
}),
|
||||
)
|
||||
|
||||
export const node = makeGlobalNode({ name: "event-logger", layer, deps: [EventV2.node] })
|
||||
Loading…
Add table
Add a link
Reference in a new issue