- OrgAdministration: eine neue Einheit bekommt ihren Bereich (Mitglieder: die Einheit samt Untereinheiten, schreiben); reservierte Namen und belegte Bereichs-Ids werden als Einheiten-Id abgelehnt. Uebergreifende Bereiche anlegen (mit Eigentuemer), Name/Zweck/geschuetzte Ordner aendern, Mitgliederliste ersetzen, nur leere Bereiche loeschen, nie den eigenen einer Einheit. Eine geloeschte Einheit verlaesst alle Mitgliederlisten; ihr Bereich geht nur, wenn er leer ist, sonst bleibt er ohne Eigentuemer. Nachruesten des eigenen Bereichs fuer Einheiten von vor #684. Alles im AuditLog. - API unter /api/organisation/workspaces; die Uebersicht liefert je Bereich Mitglieder, Dateizahl und - von der Instanz berechnet - wer hineinkommt. - Organisationsseite: Bereiche unter der Struktur, Bearbeitung mit Mitglieder-Editor, "Wer hineinkommt", Bereichskarte an der Einheit, Bereiche am Agenten. Sprachschluessel en/de. - Die Nachschau nach einem Absturz bekommt die Organisation mit, sonst fände sie einen Aufruf in einem benannten Bereich nicht. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
100 lines
3.9 KiB
C#
100 lines
3.9 KiB
C#
namespace ClawdDotNet.Web.Contracts;
|
|
|
|
/// <summary>#683: The organisation of an instance — units, members, and what is wrong with it.</summary>
|
|
public sealed record OrganisationDto(
|
|
IReadOnlyList<UnitDto> Units,
|
|
IReadOnlyList<OrgMemberDto> Agents,
|
|
IReadOnlyList<string> Problems,
|
|
IReadOnlyList<string> KnownTools,
|
|
IReadOnlyList<WorkspaceDto> Workspaces);
|
|
|
|
public sealed record UnitDto(
|
|
string Id,
|
|
string Name,
|
|
string? ParentId,
|
|
string? LeaderAgentId,
|
|
string Goal,
|
|
IReadOnlyList<string>? ToolCeiling,
|
|
IReadOnlyList<string>? EffectiveToolCeiling,
|
|
UnitDefaultsDto Defaults,
|
|
string Path,
|
|
int Depth);
|
|
|
|
public sealed record UnitDefaultsDto(string? Model, decimal? DailyCostUsd, long? DailyTokens, string? WhenExhausted);
|
|
|
|
/// <summary>An agent as the organisation page shows it: where it is, whom it answers to.</summary>
|
|
public sealed record OrgMemberDto(
|
|
string AgentId,
|
|
string DisplayName,
|
|
string? UnitId,
|
|
bool IsLead,
|
|
string? EffectiveLeadId,
|
|
DateTime? UnitSinceUtc,
|
|
IReadOnlyList<string> Tools,
|
|
decimal DailyCostUsd,
|
|
long DailyTokens,
|
|
string Model);
|
|
|
|
public sealed record UnitInputDto(string Id, string Name, string? ParentId = null, string? Goal = null, string Reason = "");
|
|
|
|
public sealed record UnitUpdateDto(string? Name = null, string? Goal = null, string Reason = "");
|
|
|
|
public sealed record LeaderInputDto(string? AgentId, string Reason = "");
|
|
|
|
/// <summary>
|
|
/// A move or a ceiling change. With <see cref="Preview"/> nothing is written — the answer
|
|
/// says what would happen. <see cref="DropExcessTools"/> confirms removing the tools beyond a
|
|
/// ceiling that the preview named.
|
|
/// </summary>
|
|
public sealed record MoveInputDto(string? Target, string Reason = "", bool DropExcessTools = false, bool Preview = false);
|
|
|
|
public sealed record CeilingInputDto(IReadOnlyList<string>? Tools, string Reason = "", bool DropExcessTools = false, bool Preview = false);
|
|
|
|
public sealed record StructurePreviewDto(
|
|
IReadOnlyList<string> AffectedAgents,
|
|
IReadOnlyDictionary<string, IReadOnlyList<string>> ToolsLost,
|
|
IReadOnlyList<string> Running,
|
|
IReadOnlyList<string> Problems,
|
|
bool CanApply);
|
|
|
|
public sealed record SettingPreviewInputDto(string Setting, string Value, string Mode = "PerAgent");
|
|
|
|
public sealed record SettingChangeDto(string AgentId, string DisplayName, string Current, string Proposed, bool Outlier, bool SelectedByDefault);
|
|
|
|
public sealed record SettingApplyDto(string Setting, IReadOnlyDictionary<string, string> Values, string Reason = "", string? DefaultValue = null);
|
|
|
|
/// <summary>
|
|
/// #684: A workspace with its member list — and, computed by the instance, who that list
|
|
/// actually lets in and how far. <see cref="IsUnitOwn"/> marks a unit's own workspace.
|
|
/// </summary>
|
|
public sealed record WorkspaceDto(
|
|
string Id,
|
|
string Name,
|
|
string Purpose,
|
|
string? OwnerUnitId,
|
|
bool IsUnitOwn,
|
|
IReadOnlyList<WorkspaceMemberDto> Members,
|
|
IReadOnlyList<string> ProtectedPaths,
|
|
int FileCount,
|
|
IReadOnlyList<WorkspaceAccessDto> Access);
|
|
|
|
/// <summary>A member entry: a unit or an agent; <see cref="Access"/> is Read, Write or Manage.</summary>
|
|
public sealed record WorkspaceMemberDto(string? UnitId, string? AgentId, string Access, bool IncludeSubUnits = true);
|
|
|
|
public sealed record WorkspaceAccessDto(string AgentId, string Access);
|
|
|
|
public sealed record WorkspaceInputDto(
|
|
string Id,
|
|
string Name,
|
|
string? Purpose = null,
|
|
string? OwnerUnitId = null,
|
|
IReadOnlyList<WorkspaceMemberDto>? Members = null,
|
|
string Reason = "");
|
|
|
|
public sealed record WorkspaceUpdateDto(string? Name = null, string? Purpose = null, IReadOnlyList<string>? ProtectedPaths = null, string Reason = "");
|
|
|
|
public sealed record WorkspaceMembersInputDto(IReadOnlyList<WorkspaceMemberDto> Members, string Reason = "");
|
|
|
|
/// <summary>A change that needs nothing but the reason for the audit log.</summary>
|
|
public sealed record ReasonInputDto(string Reason = "");
|