feat: enable HWLAB Kafka event bridge env

This commit is contained in:
Codex
2026-07-09 19:59:32 +02:00
parent 56fa170782
commit 63320e2f80
5 changed files with 71 additions and 1 deletions
+29
View File
@@ -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;