diff --git a/src/plugin-handlers/agent-key-remapper.test.ts b/src/plugin-handlers/agent-key-remapper.test.ts index 7640fbbf8..2153890c7 100644 --- a/src/plugin-handlers/agent-key-remapper.test.ts +++ b/src/plugin-handlers/agent-key-remapper.test.ts @@ -108,7 +108,7 @@ describe("remapAgentKeysToDisplayNames", () => { const agents = { sisyphus: { name: "sisyphus", prompt: "test", mode: "primary" }, hephaestus: { name: "hephaestus", prompt: "test", mode: "primary" }, - prometheus: { name: "prometheus", prompt: "test", mode: "all" }, + prometheus: { name: "prometheus", prompt: "test", mode: "primary" }, atlas: { name: "atlas", prompt: "test", mode: "primary" }, oracle: { name: "oracle", prompt: "test", mode: "subagent" }, } @@ -136,7 +136,7 @@ describe("remapAgentKeysToDisplayNames", () => { expect(result[getAgentListDisplayName("prometheus")]).toEqual({ name: getAgentRuntimeName("prometheus"), prompt: "test", - mode: "all", + mode: "primary", }) expect(result[getAgentListDisplayName("atlas")]).toEqual({ name: getAgentRuntimeName("atlas"), @@ -151,7 +151,7 @@ describe("remapAgentKeysToDisplayNames", () => { const agents = { sisyphus: { prompt: "test", mode: "primary" }, hephaestus: { prompt: "test", mode: "primary" }, - prometheus: { prompt: "test", mode: "all" }, + prometheus: { prompt: "test", mode: "primary" }, atlas: { prompt: "test", mode: "primary" }, } @@ -172,7 +172,7 @@ describe("remapAgentKeysToDisplayNames", () => { expect(result[getAgentListDisplayName("prometheus")]).toEqual({ name: getAgentRuntimeName("prometheus"), prompt: "test", - mode: "all", + mode: "primary", }) expect(result[getAgentListDisplayName("atlas")]).toEqual({ name: getAgentRuntimeName("atlas"), diff --git a/src/plugin-handlers/agent-priority-order.test.ts b/src/plugin-handlers/agent-priority-order.test.ts index 10890c3b0..d1af68a61 100644 --- a/src/plugin-handlers/agent-priority-order.test.ts +++ b/src/plugin-handlers/agent-priority-order.test.ts @@ -185,7 +185,7 @@ describe("agent-priority-order", () => { const agents: Record = { [sisyphus]: { name: "sisyphus", mode: "primary" }, [hephaestus]: { name: "hephaestus", mode: "primary" }, - [prometheus]: { name: "prometheus", mode: "all" }, + [prometheus]: { name: "prometheus", mode: "primary" }, [atlas]: { name: "atlas", mode: "primary" }, } @@ -195,7 +195,7 @@ describe("agent-priority-order", () => { // then expect(result[sisyphus]).toEqual({ name: "sisyphus", mode: "primary", order: 1 }) expect(result[hephaestus]).toEqual({ name: "hephaestus", mode: "primary", order: 2 }) - expect(result[prometheus]).toEqual({ name: "prometheus", mode: "all", order: 3 }) + expect(result[prometheus]).toEqual({ name: "prometheus", mode: "primary", order: 3 }) expect(result[atlas]).toEqual({ name: "atlas", mode: "primary", order: 4 }) }) diff --git a/src/plugin-handlers/config-handler.test.ts b/src/plugin-handlers/config-handler.test.ts index e6ac62c9e..5e68eeede 100644 --- a/src/plugin-handlers/config-handler.test.ts +++ b/src/plugin-handlers/config-handler.test.ts @@ -447,7 +447,7 @@ describe("Plan agent demote behavior", () => { expect(agents.plan.prompt).toBe("original plan prompt") }) - test("prometheus should have mode 'all' to be callable via task", async () => { + test("prometheus should have mode 'primary' like the other core agents", async () => { // given const pluginConfig = createPluginConfig({ sisyphus_agent: { @@ -474,7 +474,7 @@ describe("Plan agent demote behavior", () => { const agents = config.agent as Record const prometheusKey = getAgentListDisplayName("prometheus") expect(agents[prometheusKey]).toBeDefined() - expect(agents[prometheusKey].mode).toBe("all") + expect(agents[prometheusKey].mode).toBe("primary") }) }) @@ -1007,7 +1007,7 @@ describe("Plan agent model inheritance from prometheus", () => { spyOn(prometheusAgentConfigBuilder, "buildPrometheusAgentConfig").mockResolvedValue({ model: "anthropic/claude-opus-4-6", variant: "max", - mode: "all", + mode: "primary", prompt: "prometheus prompt", }) const pluginConfig = createPluginConfig({ diff --git a/src/plugin-handlers/plan-model-inheritance.test.ts b/src/plugin-handlers/plan-model-inheritance.test.ts index 0c6cc77e8..58d0e68dd 100644 --- a/src/plugin-handlers/plan-model-inheritance.test.ts +++ b/src/plugin-handlers/plan-model-inheritance.test.ts @@ -20,7 +20,7 @@ describe("buildPlanDemoteConfig", () => { name: "prometheus", model: "anthropic/claude-opus-4-6", variant: "max", - mode: "all", + mode: "primary", prompt: "You are Prometheus...", permission: { edit: "allow" }, description: "Plan agent (Prometheus)", diff --git a/src/plugin-handlers/prometheus-agent-config-builder.test.ts b/src/plugin-handlers/prometheus-agent-config-builder.test.ts index 90fe578fe..be19047f4 100644 --- a/src/plugin-handlers/prometheus-agent-config-builder.test.ts +++ b/src/plugin-handlers/prometheus-agent-config-builder.test.ts @@ -267,4 +267,19 @@ describe("buildPrometheusAgentConfig", () => { expect(result.model).toBe("anthropic/claude-opus-4-6"); }); }); + + test("returns Prometheus as a primary agent", async () => { + // given + + // when + const result = await buildPrometheusAgentConfig({ + configAgentPlan: undefined, + pluginPrometheusOverride: undefined, + userCategories: undefined, + currentModel: undefined, + }); + + // then + expect(result.mode).toBe("primary"); + }); }); diff --git a/src/plugin-handlers/prometheus-agent-config-builder.ts b/src/plugin-handlers/prometheus-agent-config-builder.ts index 620e9d721..640847b94 100644 --- a/src/plugin-handlers/prometheus-agent-config-builder.ts +++ b/src/plugin-handlers/prometheus-agent-config-builder.ts @@ -97,7 +97,7 @@ export async function buildPrometheusAgentConfig(params: { const base: Record = { ...(resolvedModel ? { model: resolvedModel } : {}), ...(variantToUse ? { variant: variantToUse } : {}), - mode: "all", + mode: "primary", prompt: getPrometheusPrompt(resolvedModel, params.disabledTools), permission: PROMETHEUS_PERMISSION, description: `${(params.configAgentPlan?.description as string) ?? "Plan agent"} (Prometheus - OhMyOpenCode)`, diff --git a/src/tools/delegate-task/tools.test.ts b/src/tools/delegate-task/tools.test.ts index 3e7c242b2..0508fc5cf 100644 --- a/src/tools/delegate-task/tools.test.ts +++ b/src/tools/delegate-task/tools.test.ts @@ -3657,11 +3657,11 @@ describe("sisyphus-task", () => { expect(result).toContain("plan-family") }) - test("plan cannot delegate to prometheus (cross-blocking)", async () => { + test("plan cannot delegate to prometheus even when it is exposed as a primary agent", async () => { //#given const { createDelegateTask } = require("./tools") const mockClient = { - app: { agents: async () => ({ data: [{ name: "prometheus", mode: "subagent" }] }) }, + app: { agents: async () => ({ data: [{ name: "prometheus", mode: "primary" }] }) }, config: { get: async () => ({ data: { model: SYSTEM_DEFAULT_MODEL } }) }, session: { get: async () => ({ data: { directory: "/project" } }), create: async () => ({ data: { id: "s" } }), prompt: async () => ({ data: {} }), promptAsync: async () => ({ data: {} }), messages: async () => ({ data: [] }), status: async () => ({ data: {} }) }, } @@ -4154,19 +4154,17 @@ describe("sisyphus-task", () => { expect(promptBody.tools.task).toBe(true) }, { timeout: 20000 }) - test("prometheus subagent should have task permission as part of the plan family", async () => { + test("prometheus primary agent should not be callable via task", async () => { //#given const { createDelegateTask } = require("./tools") - let promptBody: any - const promptMock = async (input: any) => { promptBody = input.body; return { data: {} } } const mockClient = { - app: { agents: async () => ({ data: [{ name: "prometheus", mode: "subagent" }] }) }, + app: { agents: async () => ({ data: [{ name: "prometheus", mode: "primary" }] }) }, config: { get: async () => ({ data: { model: SYSTEM_DEFAULT_MODEL } }) }, session: { get: async () => ({ data: { directory: "/project" } }), create: async () => ({ data: { id: "ses_prometheus_task" } }), - prompt: promptMock, - promptAsync: promptMock, + prompt: async () => ({ data: {} }), + promptAsync: async () => ({ data: {} }), messages: async () => ({ data: [{ info: { role: "assistant" }, parts: [{ type: "text", text: "Plan created" }] }] }), status: async () => ({ data: { "ses_prometheus_task": { type: "idle" } } }), }, @@ -4174,13 +4172,13 @@ describe("sisyphus-task", () => { const tool = createDelegateTask({ manager: { launch: async () => ({}) }, client: mockClient }) //#when - await tool.execute( + const result = await tool.execute( { description: "Test prometheus task permission", prompt: "Create a plan", subagent_type: "prometheus", run_in_background: false, load_skills: [] }, { sessionID: "p", messageID: "m", agent: "sisyphus", abort: new AbortController().signal } ) - //#then - prometheus shares task permission with the plan family - expect(promptBody.tools.task).toBe(true) + //#then + expect(result).toContain('Unknown agent: "prometheus"') }, { timeout: 20000 }) test("non-plan subagent should NOT have task permission", async () => {