bcdbc7e941
Mirrors the agent-profile stack for products: ProductProfile entity (org-scoped, versioned by org+key+version; null org = free builtin), a PRODUCT.md parser + writer, and endpoints — upload, list, marketplace, get, publish/unpublish, fork, install, and apply-to-product (sets Product.Identity to the profile's PRODUCT.md). Reuses the shared ProfileOrigin/Status/Visibility enums; product profiles are gated owner-level (CreateProductsAndTeams). Adds the product_profiles table. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
128 lines
4.2 KiB
C#
128 lines
4.2 KiB
C#
using TeamUp.Modules.OrgBoard.Domain;
|
|
using TeamUp.SharedKernel.Access;
|
|
|
|
namespace TeamUp.Modules.OrgBoard.Endpoints;
|
|
|
|
internal sealed record CreateOrganizationRequest(Guid OrganizationId, string Name);
|
|
|
|
internal sealed record OrganizationResponse(Guid Id, string Name);
|
|
|
|
internal sealed record CreateTeamRequest(Guid OrganizationId, string Name, Guid? ProductId = null);
|
|
|
|
internal sealed record TeamResponse(Guid Id, Guid OrganizationId, string Name, Guid? ProductId = null);
|
|
|
|
internal sealed record CreateDivisionRequest(Guid OrganizationId, string Name);
|
|
|
|
internal sealed record DivisionResponse(Guid Id, Guid OrganizationId, string Name);
|
|
|
|
internal sealed record CreateProductRequest(Guid OrganizationId, string Name, ProductKind Kind, Guid? DivisionId = null);
|
|
|
|
internal sealed record ProductResponse(Guid Id, Guid OrganizationId, Guid? DivisionId, string Name, string Kind);
|
|
|
|
internal sealed record SetProductIdentityRequest(string? Identity);
|
|
|
|
internal sealed record ProductIdentityResponse(Guid ProductId, string Name, string? Identity);
|
|
|
|
internal sealed record CreateTaskRequest(Guid TeamId, string Title, string? Description, WorkItemType Type);
|
|
|
|
internal sealed record MoveTaskRequest(WorkItemStatus Status);
|
|
|
|
internal sealed record AssignTaskRequest(Guid MemberId);
|
|
|
|
internal sealed record TaskResponse(
|
|
Guid Id,
|
|
Guid TeamId,
|
|
string Title,
|
|
string? Description,
|
|
string Type,
|
|
string Status,
|
|
string AssigneeKind,
|
|
Guid? AssigneeId,
|
|
Guid? ParentId);
|
|
|
|
internal sealed record BoardColumn(string Status, IReadOnlyList<TaskResponse> Items);
|
|
|
|
internal sealed record BoardResponse(Guid TeamId, IReadOnlyList<BoardColumn> Columns);
|
|
|
|
internal sealed record CreateSeatRequest(Guid TeamId, string RoleName);
|
|
|
|
internal sealed record SeatResponse(Guid Id, Guid TeamId, string RoleName, string State, Guid? MemberId, Guid? AgentId);
|
|
|
|
internal sealed record ConfigureAgentRequest(
|
|
string Name,
|
|
string? Monogram,
|
|
Autonomy Autonomy,
|
|
Guid ApiConfigId,
|
|
Guid? FallbackApiConfigId,
|
|
List<string> SkillKeys,
|
|
List<Guid> McpServerIds,
|
|
List<string> Docs,
|
|
string? Persona = null);
|
|
|
|
internal sealed record AgentResponse(
|
|
Guid Id,
|
|
Guid SeatId,
|
|
string Name,
|
|
string? Monogram,
|
|
string Autonomy,
|
|
Guid ApiConfigId,
|
|
Guid? FallbackApiConfigId,
|
|
List<string> SkillKeys,
|
|
List<Guid> McpServerIds,
|
|
List<string> Docs,
|
|
string? Persona);
|
|
|
|
// --- Agent profiles (AGENTS.md): a per-org library of reusable agent definitions ---
|
|
|
|
internal sealed record UploadAgentProfileRequest(Guid OrganizationId, string Content);
|
|
|
|
internal sealed record PublishAgentProfileRequest(Guid OrganizationId, string Version);
|
|
|
|
internal sealed record ForkAgentProfileRequest(Guid OrganizationId, string Version, string? Name = null);
|
|
|
|
internal sealed record InstallAgentProfileRequest(Guid OrganizationId, Guid SourceProfileId);
|
|
|
|
internal sealed record AgentProfileSummary(
|
|
Guid Id,
|
|
Guid? OrganizationId,
|
|
string Origin,
|
|
string ProfileKey,
|
|
string Name,
|
|
string Version,
|
|
string? Summary,
|
|
List<string> Roles,
|
|
string? Monogram,
|
|
string RecommendedAutonomy,
|
|
List<string> SkillKeys,
|
|
string Visibility,
|
|
string Status);
|
|
|
|
internal sealed record AgentProfileDetail(AgentProfileSummary Profile, string Body);
|
|
|
|
internal sealed record MarketplaceProfileEntry(AgentProfileSummary Profile, bool AlreadyInLibrary);
|
|
|
|
internal sealed record UploadProductProfileRequest(Guid OrganizationId, string Content);
|
|
|
|
internal sealed record PublishProductProfileRequest(Guid OrganizationId, string Version);
|
|
|
|
internal sealed record ForkProductProfileRequest(Guid OrganizationId, string Version, string? Name = null);
|
|
|
|
internal sealed record InstallProductProfileRequest(Guid OrganizationId, Guid SourceProfileId);
|
|
|
|
internal sealed record ApplyProductProfileRequest(Guid OrganizationId, Guid ProductId, string Version);
|
|
|
|
internal sealed record ProductProfileSummary(
|
|
Guid Id,
|
|
Guid? OrganizationId,
|
|
string Origin,
|
|
string ProfileKey,
|
|
string Name,
|
|
string Version,
|
|
string? Summary,
|
|
string Visibility,
|
|
string Status);
|
|
|
|
internal sealed record ProductProfileDetail(ProductProfileSummary Profile, string Body);
|
|
|
|
internal sealed record MarketplaceProductProfileEntry(ProductProfileSummary Profile, bool AlreadyInLibrary);
|