M4: the assembler — assemble → model → parse (Increment 2)
SharedKernel contracts (so Assembler stays decoupled): IAgentRunContextProvider (agent + task) and ISkillCatalog (skill prompts by key). Implemented by OrgBoard (AgentRunContextProvider) and Skills (SkillCatalog). Assembler: - PromptAssembler builds house-style + identity + the agent's skill bodies + the task, and derives the primary action + risk from the agent's first skill. RAG/working-memory join at M6. - AgentRunExecutor (real): resolve context + skills → assemble → resolve BYOK config (with fallback) → call IModelClient → parse into action + risk → capture all on the AgentRun. Verified: build green; ArchitectureTests 8/8; IntegrationTests 29/29 — incl. the M4 acceptance: assigning a Spec task to Aria (PO, gated, stub BYOK) yields a Completed run with the assembled prompt (skill body + task title), action "write-spec", risk "Draft", and model output. Nothing executes — the gate is M5. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -67,8 +67,10 @@ public sealed class AgentRunQueueTests(PostgresFixture postgres) : IClassFixture
|
||||
Assert.Null(await queue.ClaimNextAsync("test-worker"));
|
||||
}
|
||||
|
||||
// With no agent configured for the random seat, the run reaches a terminal Failed state
|
||||
// (the full assemble→model→parse path is covered by AssemblerRunTests).
|
||||
var fetched = await client.GetFromJsonAsync<RunResponse>($"/api/assembler/runs/{run.Id}");
|
||||
Assert.Equal("Completed", fetched!.Status);
|
||||
Assert.Equal("pending", fetched.ActionType);
|
||||
Assert.Equal("Failed", fetched!.Status);
|
||||
Assert.Contains("not found", fetched.Error ?? string.Empty, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user