mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-05 16:52:52 +00:00
perf(agent): lazy load embedded agent cli path
This commit is contained in:
@@ -12,7 +12,6 @@ const mocks = vi.hoisted(() => ({
|
||||
agentsSetIdentityCommandMock: vi.fn(),
|
||||
agentsUnbindCommandMock: vi.fn(),
|
||||
setVerboseMock: vi.fn(),
|
||||
createDefaultDepsMock: vi.fn(() => ({ deps: true })),
|
||||
runtime: {
|
||||
log: vi.fn(),
|
||||
error: vi.fn(),
|
||||
@@ -29,7 +28,6 @@ const agentsListCommandMock = mocks.agentsListCommandMock;
|
||||
const agentsSetIdentityCommandMock = mocks.agentsSetIdentityCommandMock;
|
||||
const agentsUnbindCommandMock = mocks.agentsUnbindCommandMock;
|
||||
const setVerboseMock = mocks.setVerboseMock;
|
||||
const createDefaultDepsMock = mocks.createDefaultDepsMock;
|
||||
const runtime = mocks.runtime;
|
||||
|
||||
vi.mock("../../commands/agent-via-gateway.js", () => ({
|
||||
@@ -62,10 +60,6 @@ vi.mock("../../global-state.js", () => ({
|
||||
setVerbose: mocks.setVerboseMock,
|
||||
}));
|
||||
|
||||
vi.mock("../deps.js", () => ({
|
||||
createDefaultDeps: mocks.createDefaultDepsMock,
|
||||
}));
|
||||
|
||||
vi.mock("../../runtime.js", () => ({
|
||||
defaultRuntime: mocks.runtime,
|
||||
}));
|
||||
@@ -88,7 +82,6 @@ describe("registerAgentCommands", () => {
|
||||
agentsListCommandMock.mockResolvedValue(undefined);
|
||||
agentsSetIdentityCommandMock.mockResolvedValue(undefined);
|
||||
agentsUnbindCommandMock.mockResolvedValue(undefined);
|
||||
createDefaultDepsMock.mockReturnValue({ deps: true });
|
||||
});
|
||||
|
||||
function commandCall(mock: { mock: { calls: unknown[][] } }, index = 0): unknown[] {
|
||||
@@ -99,17 +92,16 @@ describe("registerAgentCommands", () => {
|
||||
return call;
|
||||
}
|
||||
|
||||
it("runs agent command with deps and verbose enabled for --verbose on", async () => {
|
||||
it("runs agent command with verbose enabled for --verbose on", async () => {
|
||||
await runCli(["agent", "--message", "hi", "--verbose", "ON", "--json"]);
|
||||
|
||||
expect(setVerboseMock).toHaveBeenCalledWith(true);
|
||||
expect(createDefaultDepsMock).toHaveBeenCalledTimes(1);
|
||||
const [options, callRuntime, deps] = commandCall(agentCliCommandMock);
|
||||
expect((options as { message?: string }).message).toBe("hi");
|
||||
expect((options as { verbose?: string }).verbose).toBe("ON");
|
||||
expect((options as { json?: boolean }).json).toBe(true);
|
||||
expect(callRuntime).toBe(runtime);
|
||||
expect(deps).toEqual({ deps: true });
|
||||
expect(deps).toBeUndefined();
|
||||
});
|
||||
|
||||
it("runs agent command with verbose disabled for --verbose off", async () => {
|
||||
@@ -120,7 +112,7 @@ describe("registerAgentCommands", () => {
|
||||
expect((options as { message?: string }).message).toBe("hi");
|
||||
expect((options as { verbose?: string }).verbose).toBe("off");
|
||||
expect(callRuntime).toBe(runtime);
|
||||
expect(deps).toEqual({ deps: true });
|
||||
expect(deps).toBeUndefined();
|
||||
});
|
||||
|
||||
it("accepts a model override for one-shot agent runs", async () => {
|
||||
@@ -131,7 +123,7 @@ describe("registerAgentCommands", () => {
|
||||
expect((options as { agent?: string }).agent).toBe("ops");
|
||||
expect((options as { model?: string }).model).toBe("openai/gpt-5.4");
|
||||
expect(callRuntime).toBe(runtime);
|
||||
expect(deps).toEqual({ deps: true });
|
||||
expect(deps).toBeUndefined();
|
||||
});
|
||||
|
||||
it("forwards an explicit session key to the agent command", async () => {
|
||||
@@ -141,7 +133,7 @@ describe("registerAgentCommands", () => {
|
||||
expect((options as { message?: string }).message).toBe("hi");
|
||||
expect((options as { sessionKey?: string }).sessionKey).toBe("agent:ops:incident-42");
|
||||
expect(callRuntime).toBe(runtime);
|
||||
expect(deps).toEqual({ deps: true });
|
||||
expect(deps).toBeUndefined();
|
||||
});
|
||||
|
||||
it("runs agents add and computes hasFlags based on explicit options", async () => {
|
||||
|
||||
@@ -14,7 +14,6 @@ type AgentsBindModule = typeof import("../../commands/agents.commands.bind.js");
|
||||
type AgentsDeleteModule = typeof import("../../commands/agents.commands.delete.js");
|
||||
type AgentsIdentityModule = typeof import("../../commands/agents.commands.identity.js");
|
||||
type AgentsListModule = typeof import("../../commands/agents.commands.list.js");
|
||||
type CliDepsModule = typeof import("../deps.js");
|
||||
type GlobalStateModule = typeof import("../../global-state.js");
|
||||
|
||||
async function loadAgentCliCommand(): Promise<AgentViaGatewayModule["agentCliCommand"]> {
|
||||
@@ -51,10 +50,6 @@ async function loadAgentsListCommand(): Promise<AgentsListModule["agentsListComm
|
||||
return (await import("../../commands/agents.commands.list.js")).agentsListCommand;
|
||||
}
|
||||
|
||||
async function loadCreateDefaultDeps(): Promise<CliDepsModule["createDefaultDeps"]> {
|
||||
return (await import("../deps.js")).createDefaultDeps;
|
||||
}
|
||||
|
||||
async function loadSetVerbose(): Promise<GlobalStateModule["setVerbose"]> {
|
||||
return (await import("../../global-state.js")).setVerbose;
|
||||
}
|
||||
@@ -130,11 +125,8 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/agent", "docs.openclaw.ai/cli/age
|
||||
await runCommandWithRuntime(defaultRuntime, async () => {
|
||||
const setVerbose = await loadSetVerbose();
|
||||
setVerbose(verboseLevel === "on");
|
||||
// Build default deps (keeps parity with other commands; future-proofing).
|
||||
const createDefaultDeps = await loadCreateDefaultDeps();
|
||||
const deps = createDefaultDeps();
|
||||
const agentCliCommand = await loadAgentCliCommand();
|
||||
await agentCliCommand(opts, defaultRuntime, deps);
|
||||
await agentCliCommand(opts, defaultRuntime);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user