feat: enable d518 kafka shadow producers

This commit is contained in:
Codex
2026-06-28 11:51:34 +00:00
parent 83f898b11f
commit fb7bbc1b63
8 changed files with 75 additions and 5 deletions
+30
View File
@@ -322,6 +322,16 @@ export interface HwlabRuntimeCodeAgentProviderSpec {
readonly opencodeSourceKey?: string;
}
export interface HwlabRuntimeKafkaShadowProducerSpec {
readonly enabled: boolean;
readonly mode: "shadow-produce-only";
readonly consumeEnabled: false;
readonly configRef: string;
readonly bootstrapServers: string;
readonly commandTopic: string;
readonly clientId: string;
}
export interface HwlabRuntimeCodeAgentRuntimeSpec {
readonly enabled: boolean;
readonly adapter: string;
@@ -334,6 +344,7 @@ export interface HwlabRuntimeCodeAgentRuntimeSpec {
readonly providerIdFrom: "runtimeNodeId";
readonly defaultProviderProfile: string;
readonly codexStdioSupervisor: "repo-owned";
readonly kafkaShadowProducer?: HwlabRuntimeKafkaShadowProducerSpec;
}
export interface HwlabRuntimeSourceWorkspaceSpec {
@@ -795,6 +806,25 @@ function codeAgentRuntimeConfig(value: unknown, path: string): HwlabRuntimeCodeA
providerIdFrom: enumStringField(raw, "providerIdFrom", path, ["runtimeNodeId"]),
defaultProviderProfile: stringField(raw, "defaultProviderProfile", path),
codexStdioSupervisor: enumStringField(raw, "codexStdioSupervisor", path, ["repo-owned"]),
...(raw.kafkaShadowProducer === undefined
? {}
: { kafkaShadowProducer: codeAgentKafkaShadowProducerConfig(raw.kafkaShadowProducer, `${path}.kafkaShadowProducer`) }),
};
}
function codeAgentKafkaShadowProducerConfig(value: unknown, path: string): HwlabRuntimeKafkaShadowProducerSpec {
const raw = asRecord(value, path);
const mode = enumStringField(raw, "mode", path, ["shadow-produce-only"]);
const consumeEnabled = booleanField(raw, "consumeEnabled", path);
if (consumeEnabled !== false) throw new Error(`${path}.consumeEnabled must be false during shadow-produce-only stage`);
return {
enabled: booleanField(raw, "enabled", path),
mode,
consumeEnabled,
configRef: stringField(raw, "configRef", path),
bootstrapServers: stringField(raw, "bootstrapServers", path),
commandTopic: stringField(raw, "commandTopic", path),
clientId: stringField(raw, "clientId", path),
};
}