Files
pikasTech-HWLAB/internal/cloud/kafka-event-bridge.test.ts
T

102 lines
4.0 KiB
TypeScript

// SPEC: PJ2026-0104010803 Workbench事件流可见性 draft-2026-07-09-p0-kafka-authority.
// Responsibility: lock AgentRun Kafka event -> HWLAB Kafka event projection contract without requiring a live Kafka broker.
import assert from "node:assert/strict";
import { test } from "bun:test";
import { projectAgentRunKafkaEventToHwlabEvent } from "./kafka-event-bridge.ts";
test("projects AgentRun assistant_message Kafka event into HWLAB trace event", () => {
const projected = projectAgentRunKafkaEventToHwlabEvent({
schema: "agentrun.event.v1",
eventType: "agentrun.run.event",
source: "agentrun-manager",
producedAt: "2026-07-09T10:00:00.000Z",
run: {
runId: "run_kafka_projection",
sessionId: "ses_kafka_projection",
conversationId: "cnv_kafka_projection",
threadId: "thread-kafka-projection",
projectId: "prj_kafka_projection",
backendProfile: "deepseek"
},
command: { commandId: "cmd_kafka_projection" },
event: {
seq: 7,
type: "assistant_message",
createdAt: "2026-07-09T10:00:01.000Z",
payload: {
traceId: "trc_kafka_projection",
commandId: "cmd_kafka_projection",
text: "partial answer",
itemId: "item_assistant_1",
final: false
}
}
}, { source: "hwlab-test", producedAt: "2026-07-09T10:00:02.000Z", sourceTopic: "agentrun.event.v1", sourceOffset: "42" });
assert.equal(projected.schema, "hwlab.event.v1");
assert.equal(projected.eventType, "hwlab.trace.event.projected");
assert.equal(projected.source, "hwlab-test");
assert.equal(projected.traceId, "trc_kafka_projection");
assert.equal(projected.sessionId, "ses_kafka_projection");
assert.equal(projected.context.runId, "run_kafka_projection");
assert.equal(projected.context.commandId, "cmd_kafka_projection");
assert.equal(projected.context.sourceSeq, 7);
assert.equal(projected.context.agentRunEventType, "assistant_message");
assert.equal(projected.event.type, "assistant");
assert.equal(projected.event.label, "agentrun:assistant:message");
assert.equal(projected.event.status, "running");
assert.equal(projected.event.text, "partial answer");
assert.equal(projected.event.terminal, false);
assert.equal(projected.sourceEvent.topic, "agentrun.event.v1");
assert.equal(projected.sourceEvent.offset, "42");
assert.equal(projected.valuesPrinted, false);
});
test("projects AgentRun terminal_status Kafka event into terminal HWLAB event", () => {
const projected = projectAgentRunKafkaEventToHwlabEvent({
schema: "agentrun.event.v1",
eventType: "agentrun.run.event",
run: { runId: "run_terminal", sessionId: "ses_terminal" },
command: { commandId: "cmd_terminal" },
event: {
seq: 12,
type: "terminal_status",
payload: {
traceId: "trc_terminal",
terminalStatus: "completed",
message: "AgentRun completed"
}
}
}, { source: "hwlab-test" });
assert.equal(projected.traceId, "trc_terminal");
assert.equal(projected.event.type, "result");
assert.equal(projected.event.eventType, "terminal");
assert.equal(projected.event.status, "completed");
assert.equal(projected.event.label, "agentrun:terminal:completed");
assert.equal(projected.event.terminal, true);
assert.equal(projected.event.message, "AgentRun completed");
});
test("projects AgentRun run-created envelope even when no source event is present", () => {
const projected = projectAgentRunKafkaEventToHwlabEvent({
schema: "agentrun.event.v1",
eventType: "agentrun.run.created",
run: {
runId: "run_created",
sessionId: "ses_created",
traceId: "trc_created",
backendProfile: "codex"
}
}, { source: "hwlab-test" });
assert.equal(projected.traceId, "trc_created");
assert.equal(projected.sessionId, "ses_created");
assert.equal(projected.context.runId, "run_created");
assert.equal(projected.context.sourceEventType, "agentrun.run.created");
assert.equal(projected.event.label, "agentrun:event:agentrun.run.created");
assert.equal(projected.event.status, "running");
});