d9f9349117
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>
33 lines
1.3 KiB
C#
33 lines
1.3 KiB
C#
using Microsoft.AspNetCore.Routing;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
using TeamUp.Modules.OrgBoard.Endpoints;
|
|
using TeamUp.Modules.OrgBoard.Persistence;
|
|
using TeamUp.Modules.OrgBoard.Runtime;
|
|
using TeamUp.SharedKernel.Ai;
|
|
using TeamUp.SharedKernel.Modularity;
|
|
using TeamUp.SharedKernel.Persistence;
|
|
|
|
namespace TeamUp.Modules.OrgBoard;
|
|
|
|
/// <summary>Org, products, teams, seats, and the task/board model (M1).</summary>
|
|
public sealed class OrgBoardModule : IModule
|
|
{
|
|
public string Name => "orgboard";
|
|
|
|
public void Register(IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
var connectionString = configuration.GetConnectionString("Postgres")
|
|
?? throw new InvalidOperationException("Missing connection string 'ConnectionStrings:Postgres'.");
|
|
|
|
services.AddDbContext<OrgBoardDbContext>(options => options.UseNpgsql(connectionString));
|
|
services.AddScoped<IModuleDbContext>(sp => sp.GetRequiredService<OrgBoardDbContext>());
|
|
services.AddScoped<IAgentRunContextProvider, AgentRunContextProvider>();
|
|
services.TryAddSingleton(TimeProvider.System);
|
|
}
|
|
|
|
public void MapEndpoints(IEndpointRouteBuilder endpoints) => OrgBoardEndpoints.Map(endpoints);
|
|
}
|