refactor(agent): dedupe harness and command workflows

This commit is contained in:
Peter Steinberger
2026-02-16 14:52:09 +00:00
parent 04892ee230
commit f717a13039
204 changed files with 7366 additions and 11540 deletions

View File

@@ -30,31 +30,52 @@ vi.mock("../infra/outbound/targets.js", async () => {
});
describe("deliverAgentCommandResult", () => {
function createRuntime(): RuntimeEnv {
return {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
}
function createResult(text = "hi") {
return {
payloads: [{ text }],
meta: {},
};
}
async function runDelivery(params: {
opts: Record<string, unknown>;
sessionEntry?: SessionEntry;
runtime?: RuntimeEnv;
resultText?: string;
}) {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = params.runtime ?? createRuntime();
const result = createResult(params.resultText);
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
opts: params.opts as never,
sessionEntry: params.sessionEntry,
result,
payloads: result.payloads,
});
return { runtime };
}
beforeEach(() => {
mocks.deliverOutboundPayloads.mockClear();
mocks.resolveOutboundTarget.mockClear();
});
it("prefers explicit accountId for outbound delivery", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const sessionEntry = {
lastAccountId: "default",
} as SessionEntry;
const result = {
payloads: [{ text: "hi" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
await runDelivery({
opts: {
message: "hello",
deliver: true,
@@ -62,9 +83,9 @@ describe("deliverAgentCommandResult", () => {
accountId: "kev",
to: "+15551234567",
},
sessionEntry,
result,
payloads: result.payloads,
sessionEntry: {
lastAccountId: "default",
} as SessionEntry,
});
expect(mocks.deliverOutboundPayloads).toHaveBeenCalledWith(
@@ -73,34 +94,16 @@ describe("deliverAgentCommandResult", () => {
});
it("falls back to session accountId for implicit delivery", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const sessionEntry = {
lastAccountId: "legacy",
lastChannel: "whatsapp",
} as SessionEntry;
const result = {
payloads: [{ text: "hi" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
await runDelivery({
opts: {
message: "hello",
deliver: true,
channel: "whatsapp",
},
sessionEntry,
result,
payloads: result.payloads,
sessionEntry: {
lastAccountId: "legacy",
lastChannel: "whatsapp",
} as SessionEntry,
});
expect(mocks.deliverOutboundPayloads).toHaveBeenCalledWith(
@@ -109,25 +112,7 @@ describe("deliverAgentCommandResult", () => {
});
it("does not infer accountId for explicit delivery targets", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const sessionEntry = {
lastAccountId: "legacy",
} as SessionEntry;
const result = {
payloads: [{ text: "hi" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
await runDelivery({
opts: {
message: "hello",
deliver: true,
@@ -135,9 +120,9 @@ describe("deliverAgentCommandResult", () => {
to: "+15551234567",
deliveryTargetMode: "explicit",
},
sessionEntry,
result,
payloads: result.payloads,
sessionEntry: {
lastAccountId: "legacy",
} as SessionEntry,
});
expect(mocks.resolveOutboundTarget).toHaveBeenCalledWith(
@@ -149,34 +134,16 @@ describe("deliverAgentCommandResult", () => {
});
it("skips session accountId when channel differs", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const sessionEntry = {
lastAccountId: "legacy",
lastChannel: "telegram",
} as SessionEntry;
const result = {
payloads: [{ text: "hi" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
await runDelivery({
opts: {
message: "hello",
deliver: true,
channel: "whatsapp",
},
sessionEntry,
result,
payloads: result.payloads,
sessionEntry: {
lastAccountId: "legacy",
lastChannel: "telegram",
} as SessionEntry,
});
expect(mocks.resolveOutboundTarget).toHaveBeenCalledWith(
@@ -185,33 +152,15 @@ describe("deliverAgentCommandResult", () => {
});
it("uses session last channel when none is provided", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const sessionEntry = {
lastChannel: "telegram",
lastTo: "123",
} as SessionEntry;
const result = {
payloads: [{ text: "hi" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
await runDelivery({
opts: {
message: "hello",
deliver: true,
},
sessionEntry,
result,
payloads: result.payloads,
sessionEntry: {
lastChannel: "telegram",
lastTo: "123",
} as SessionEntry,
});
expect(mocks.resolveOutboundTarget).toHaveBeenCalledWith(
@@ -220,27 +169,7 @@ describe("deliverAgentCommandResult", () => {
});
it("uses reply overrides for delivery routing", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const sessionEntry = {
lastChannel: "telegram",
lastTo: "123",
lastAccountId: "legacy",
} as SessionEntry;
const result = {
payloads: [{ text: "hi" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
runtime,
await runDelivery({
opts: {
message: "hello",
deliver: true,
@@ -249,9 +178,11 @@ describe("deliverAgentCommandResult", () => {
replyChannel: "slack",
replyAccountId: "ops",
},
sessionEntry,
result,
payloads: result.payloads,
sessionEntry: {
lastChannel: "telegram",
lastTo: "123",
lastAccountId: "legacy",
} as SessionEntry,
});
expect(mocks.resolveOutboundTarget).toHaveBeenCalledWith(
@@ -260,22 +191,10 @@ describe("deliverAgentCommandResult", () => {
});
it("prefixes nested agent outputs with context", async () => {
const cfg = {} as OpenClawConfig;
const deps = {} as CliDeps;
const runtime = {
log: vi.fn(),
error: vi.fn(),
} as unknown as RuntimeEnv;
const result = {
payloads: [{ text: "ANNOUNCE_SKIP" }],
meta: {},
};
const { deliverAgentCommandResult } = await import("./agent/delivery.js");
await deliverAgentCommandResult({
cfg,
deps,
const runtime = createRuntime();
await runDelivery({
runtime,
resultText: "ANNOUNCE_SKIP",
opts: {
message: "hello",
deliver: false,
@@ -285,8 +204,6 @@ describe("deliverAgentCommandResult", () => {
messageChannel: "webchat",
},
sessionEntry: undefined,
result,
payloads: result.payloads,
});
expect(runtime.log).toHaveBeenCalledTimes(1);