fix: 收敛受控 CLI 调用与诊断
This commit is contained in:
@@ -123,16 +123,33 @@ describe("diagnose-code-agent warm-session terminal classification", () => {
|
||||
expect(first.payload.diagnosticTrace.traceId).not.toBe(second.payload.diagnosticTrace.traceId);
|
||||
expect(first.payload.diagnosticTrace.traceparent).not.toBe(second.payload.diagnosticTrace.traceparent);
|
||||
});
|
||||
|
||||
test("keeps durable completion authoritative while projection lag stays a nonblocking warning", () => {
|
||||
const diagnosis = runFixture({ authorityAvailable: true, terminalSpan: false, projectionStale: true });
|
||||
expect(diagnosis.status).toBe(0);
|
||||
expect(diagnosis.payload.outcome).toEqual({
|
||||
typed: "completed-with-projection-warning",
|
||||
effectiveStatus: "completed",
|
||||
authority: { kind: "agentrun-durable-command", status: "completed", source: "agentrun-authority" },
|
||||
projection: { kind: "hwlab-read-model", status: "running", lag: "confirmed", warning: true, blocking: false },
|
||||
mutation: false,
|
||||
});
|
||||
const compact = compactDiagnoseCodeAgentResult(diagnosis.payload);
|
||||
const rendered = renderDiagnoseCodeAgentTable({ ok: true, target, options, query: {}, result: compact });
|
||||
expect(rendered.renderedText).toContain("outcome=completed-with-projection-warning effectiveStatus=completed mutation=false");
|
||||
expect(rendered.renderedText).toContain("durableAuthority kind=agentrun-durable-command status=completed");
|
||||
expect(rendered.renderedText).toContain("projection kind=hwlab-read-model status=running lag=confirmed warning=true blocking=false");
|
||||
});
|
||||
});
|
||||
|
||||
function runFixture(input: { authorityAvailable: boolean; terminalSpan: boolean }): {
|
||||
function runFixture(input: { authorityAvailable: boolean; terminalSpan: boolean; projectionStale?: boolean }): {
|
||||
status: number | null;
|
||||
payload: Record<string, any>;
|
||||
calls: string;
|
||||
} {
|
||||
const directory = mkdtempSync(join(tmpdir(), "unidesk-otel-diagnose-"));
|
||||
temporaryDirectories.push(directory);
|
||||
writeFileSync(join(directory, "trace.json"), JSON.stringify(traceFixture(input.terminalSpan)));
|
||||
writeFileSync(join(directory, "trace.json"), JSON.stringify(traceFixture(input.terminalSpan, input.projectionStale === true)));
|
||||
writeFileSync(join(directory, "command.json"), JSON.stringify({ id: "cmd_second", state: "completed" }));
|
||||
writeFileSync(join(directory, "result.json"), JSON.stringify({ ok: true, commandId: "cmd_second", status: "completed", commandState: "completed", terminalStatus: "completed" }));
|
||||
writeFileSync(join(directory, "run-result.json"), JSON.stringify({ ok: true, commandId: "cmd_second", commandState: "completed", terminalStatus: "completed" }));
|
||||
@@ -235,7 +252,7 @@ function callLines(calls: string): string[] {
|
||||
return calls.split("\n").map((line) => line.trim()).filter(Boolean);
|
||||
}
|
||||
|
||||
function traceFixture(terminalSpan: boolean): Record<string, unknown> {
|
||||
function traceFixture(terminalSpan: boolean, projectionStale = false): Record<string, unknown> {
|
||||
const common = [
|
||||
attribute("traceId", "trc_warm_second"),
|
||||
attribute("runId", "run_warm"),
|
||||
@@ -244,11 +261,17 @@ function traceFixture(terminalSpan: boolean): Record<string, unknown> {
|
||||
];
|
||||
return {
|
||||
batches: [
|
||||
batch("hwlab-cloud-api", [span("provider_decision", [
|
||||
...common,
|
||||
attribute("agent.chat.provider_profile", "gpt.pika"),
|
||||
attribute("agentRunRunnerNamespace", "agentrun-v02"),
|
||||
])]),
|
||||
batch("hwlab-cloud-api", [
|
||||
span("provider_decision", [
|
||||
...common,
|
||||
attribute("agent.chat.provider_profile", "gpt.pika"),
|
||||
attribute("agentRunRunnerNamespace", "agentrun-v02"),
|
||||
]),
|
||||
...(projectionStale ? [
|
||||
span("trace_events_read", [...common, attribute("sourceEventCount", "6"), attribute("sinceSeq", "7")]),
|
||||
span("turn_status_read", [...common, attribute("turnStatus", "running")]),
|
||||
] : []),
|
||||
]),
|
||||
batch("agentrun-manager", [
|
||||
span("command_created", common),
|
||||
...(terminalSpan ? [span("runner_terminal.completed", [...common, attribute("terminalStatus", "completed"), attribute("eventType", "terminal_status")])] : []),
|
||||
|
||||
Reference in New Issue
Block a user