From 63320e2f80fccf3b054c446a1cc109b248454d2e Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 9 Jul 2026 19:59:32 +0200 Subject: [PATCH] feat: enable HWLAB Kafka event bridge env --- config/hwlab-node-lanes.yaml | 9 +++++++++ scripts/src/hwlab-node-lanes.ts | 29 +++++++++++++++++++++++++++++ scripts/src/hwlab-node/plan.ts | 1 + scripts/src/hwlab-node/render.ts | 20 ++++++++++++++++++++ scripts/src/hwlab-node/web-probe.ts | 13 ++++++++++++- 5 files changed, 71 insertions(+), 1 deletion(-) diff --git a/config/hwlab-node-lanes.yaml b/config/hwlab-node-lanes.yaml index 9375010f..08d386bf 100644 --- a/config/hwlab-node-lanes.yaml +++ b/config/hwlab-node-lanes.yaml @@ -195,6 +195,15 @@ lanes: providerIdFrom: runtimeNodeId defaultProviderProfile: gpt.pika codexStdioSupervisor: repo-owned + kafkaEventBridge: + enabled: true + mode: agentrun-event-to-hwlab-event + configRef: config/platform-infra/kafka.yaml#clients.hwlab-v03-cloud-api + bootstrapServers: platform-infra-kafka-kafka-bootstrap.platform-infra.svc.cluster.local:9092 + agentRunEventTopic: agentrun.event.v1 + hwlabEventTopic: hwlab.event.v1 + clientId: hwlab-v03-cloud-api + consumerGroupId: hwlab-v03-agentrun-event-bridge publicExposure: extends: templates.hwlabV03.publicExposurePk01 frpc: diff --git a/scripts/src/hwlab-node-lanes.ts b/scripts/src/hwlab-node-lanes.ts index 9297b86a..643860bc 100644 --- a/scripts/src/hwlab-node-lanes.ts +++ b/scripts/src/hwlab-node-lanes.ts @@ -416,6 +416,17 @@ export interface HwlabRuntimeKafkaShadowProducerSpec { readonly clientId: string; } +export interface HwlabRuntimeKafkaEventBridgeSpec { + readonly enabled: boolean; + readonly mode: "agentrun-event-to-hwlab-event"; + readonly configRef: string; + readonly bootstrapServers: string; + readonly agentRunEventTopic: string; + readonly hwlabEventTopic: string; + readonly clientId: string; + readonly consumerGroupId: string; +} + export interface HwlabRuntimeCodeAgentRuntimeSpec { readonly enabled: boolean; readonly adapter: string; @@ -429,6 +440,7 @@ export interface HwlabRuntimeCodeAgentRuntimeSpec { readonly defaultProviderProfile: string; readonly codexStdioSupervisor: "repo-owned"; readonly kafkaShadowProducer?: HwlabRuntimeKafkaShadowProducerSpec; + readonly kafkaEventBridge?: HwlabRuntimeKafkaEventBridgeSpec; } export interface HwlabRuntimeSourceWorkspaceSpec { @@ -988,6 +1000,9 @@ function codeAgentRuntimeConfig(value: unknown, path: string): HwlabRuntimeCodeA ...(raw.kafkaShadowProducer === undefined ? {} : { kafkaShadowProducer: codeAgentKafkaShadowProducerConfig(raw.kafkaShadowProducer, `${path}.kafkaShadowProducer`) }), + ...(raw.kafkaEventBridge === undefined + ? {} + : { kafkaEventBridge: codeAgentKafkaEventBridgeConfig(raw.kafkaEventBridge, `${path}.kafkaEventBridge`) }), }; } @@ -1007,6 +1022,20 @@ function codeAgentKafkaShadowProducerConfig(value: unknown, path: string): Hwlab }; } +function codeAgentKafkaEventBridgeConfig(value: unknown, path: string): HwlabRuntimeKafkaEventBridgeSpec { + const raw = asRecord(value, path); + return { + enabled: booleanField(raw, "enabled", path), + mode: enumStringField(raw, "mode", path, ["agentrun-event-to-hwlab-event"]), + configRef: stringField(raw, "configRef", path), + bootstrapServers: stringField(raw, "bootstrapServers", path), + agentRunEventTopic: stringField(raw, "agentRunEventTopic", path), + hwlabEventTopic: stringField(raw, "hwlabEventTopic", path), + clientId: stringField(raw, "clientId", path), + consumerGroupId: stringField(raw, "consumerGroupId", path), + }; +} + function commandNameField(value: string, path: string): string { if (!/^[A-Za-z0-9._+-]+$/u.test(value)) throw new Error(`${path} must be a simple command name`); return value; diff --git a/scripts/src/hwlab-node/plan.ts b/scripts/src/hwlab-node/plan.ts index 3c9a0747..8e3a1bbe 100644 --- a/scripts/src/hwlab-node/plan.ts +++ b/scripts/src/hwlab-node/plan.ts @@ -162,6 +162,7 @@ export function nodeRuntimeExpected(spec: HwlabRuntimeLaneSpec): Record volume && volume.name === 'hwlab-metrics-sidecar')) metricsRefs.push(workloadRef(item, file, { name: 'volume/hwlab-metrics-sidecar' }));", diff --git a/scripts/src/hwlab-node/web-probe.ts b/scripts/src/hwlab-node/web-probe.ts index 107171fe..6590c716 100644 --- a/scripts/src/hwlab-node/web-probe.ts +++ b/scripts/src/hwlab-node/web-probe.ts @@ -127,6 +127,7 @@ export function nodeRuntimeRenderOverlay(spec: HwlabRuntimeLaneSpec): Record