From 30a1a6deb052c7ac302715dd72b6e9c5df3d12d7 Mon Sep 17 00:00:00 2001 From: Hoang Snowy Date: Sat, 24 Oct 2026 01:08:32 +0700 Subject: [PATCH 1/2] feat(agents): every Board agent is configured from Agent profiles and Prompts One agent registry (AgentRoles): every agent has one stable role key used for its profile (Agents::*), its prompt (Settings -> Prompts), the AgentRole of its LLM calls (Insights "by agent") and its run label. - Reviewer, Testing (tickets) = Acceptance, Autopilot lead = AutopilotOrchestrator and Retrospective no longer hard-code factory.Create("RemoteAgent") + "claude-sonnet-4-6": they resolve their profile per call (seeds keep RemoteAgent + claude-sonnet-4-6). - Agent profiles shows the Board agents and the Workflow pipeline in two tables; pipeline labels say "(Workflow pipeline)". Discovery replaces the Decomposer profile/prompt and also drives New idea's requirement step (AgentRunScope). - Settings -> Prompts lists every Board agent; Board prompts are templates with {placeholders} filled per run (PromptTemplate); the untrusted-text rule stays code-appended. - Budget gate on every Board agent, decided from the EFFECTIVE provider (client.Provider after force-provider); only real member's-computer runs are exempt. IssueWork now derives CLI mode from it too. - Testing (tickets) and the Autopilot lead read the project practices (ProjectPractices, IBoardRepos from Workspaces). - The paired runner passes the profile model to the CLI: claude --model, codex -m (CliModel), only when that CLI can serve it. - Insights groups by AgentRoles.Canonical and shows the Agent profiles label. - Guard: AgentRegistryGuardTests parses Agents/ and Decomposition/ with Roslyn and fails on a literal provider to ILlmClientFactory.Create or a literal LlmRequest Model. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018WAdQ7Rm24xss5QDSvXtJB --- Directory.Packages.props | 3 + README.md | 25 +- docs/CONFIG.md | 53 ++- src/AgentOs.Domain/Workspaces/IBoardRepos.cs | 17 + .../Agents/AcceptanceAgent.cs | 69 ++- .../Agents/AgentBudgetGate.cs | 71 +++ .../Agents/AgentRoles.cs | 123 ++++++ .../Agents/AgentRunScope.cs | 56 +++ .../Agents/AgentSettings.cs | 27 +- .../Agents/AgentsOptions.cs | 66 ++- .../Agents/AutopilotOrchestratorAgent.cs | 45 +- .../Agents/BoardAgent.cs | 44 ++ .../Agents/IssueWorkAgent.cs | 103 ++--- .../Agents/LlmAgentBase.cs | 23 +- .../Agents/ProjectPractices.cs | 46 ++ .../Agents/RetrospectiveAgent.cs | 27 +- .../Agents/ReviewAgent.cs | 67 +-- .../Decomposition/IdeaBootstrapService.cs | 15 +- .../Decomposition/TicketDecomposerAgent.cs | 30 +- .../Prompts/IssueWorkPrompt.cs | 96 +++-- .../Prompts/PromptCatalog.cs | 64 ++- .../Prompts/PromptTemplate.cs | 26 ++ .../WorkspaceBoardRepos.cs | 22 + .../WorkspacesModule.cs | 2 + src/AgentOs.RemoteAgent/CliModel.cs | 52 +++ src/AgentOs.RemoteAgent/Program.cs | 5 +- .../Components/Pages/AgentProfilesApp.razor | 51 ++- .../Components/Pages/BoardApp.razor | 4 +- .../Components/Pages/InsightsApp.razor | 12 +- .../Components/Pages/KnowledgeTab.razor | 2 +- .../Components/Pages/PromptsApp.razor | 39 +- .../Components/UI/AgentMascot.razor | 9 +- .../Services/BoardTasks/BoardTaskService.cs | 9 +- .../Orchestration/RetrospectiveService.cs | 3 +- src/AgentOs.Web/wwwroot/app.css | 4 + .../AgentOsUi/AgentProfilesTests.cs | 18 +- tests/AgentOs.Tests/AgentOs.Tests.csproj | 2 + .../Agents/AgentRegistryGuardTests.cs | 121 ++++++ .../Agents/BoardAgentRegistryTests.cs | 404 ++++++++++++++++++ .../AgentOs.Tests/Pipeline/PromptsV2Tests.cs | 5 +- tests/AgentOs.Tests/Sessions/CliModelTests.cs | 56 +++ 41 files changed, 1634 insertions(+), 282 deletions(-) create mode 100644 src/AgentOs.Domain/Workspaces/IBoardRepos.cs create mode 100644 src/AgentOs.Modules.Pipeline/Agents/AgentBudgetGate.cs create mode 100644 src/AgentOs.Modules.Pipeline/Agents/AgentRoles.cs create mode 100644 src/AgentOs.Modules.Pipeline/Agents/AgentRunScope.cs create mode 100644 src/AgentOs.Modules.Pipeline/Agents/BoardAgent.cs create mode 100644 src/AgentOs.Modules.Pipeline/Agents/ProjectPractices.cs create mode 100644 src/AgentOs.Modules.Pipeline/Prompts/PromptTemplate.cs create mode 100644 src/AgentOs.Modules.Workspaces/WorkspaceBoardRepos.cs create mode 100644 src/AgentOs.RemoteAgent/CliModel.cs create mode 100644 tests/AgentOs.Tests/Agents/AgentRegistryGuardTests.cs create mode 100644 tests/AgentOs.Tests/Agents/BoardAgentRegistryTests.cs create mode 100644 tests/AgentOs.Tests/Sessions/CliModelTests.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 6d962492..2a613c1f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -126,6 +126,9 @@ + +